//----------------------------------------------------------------------- StringVectorPtr ZipArchive::find(const String& pattern, bool recursive) { StringVectorPtr ret = StringVectorPtr(new StringVector()); FileInfoList::iterator i, iend; iend = mFileList.end(); for (i = mFileList.begin(); i != iend; ++i) { if (recursive || i->path.empty()) { // Check basename matches pattern (zip is case insensitive) if (StringUtil::match(i->basename, pattern, false)) { ret->push_back(i->filename); } } else { // Check full name if (StringUtil::match(i->filename, pattern, false)) { ret->push_back(i->filename); } } } return ret; }
//----------------------------------------------------------------------- StringVectorPtr ZipArchive::list(bool recursive, bool dirs) const { OGRE_LOCK_AUTO_MUTEX; StringVectorPtr ret = StringVectorPtr(OGRE_NEW_T(StringVector, MEMCATEGORY_GENERAL)(), SPFM_DELETE_T); FileInfoList::const_iterator i, iend; iend = mFileList.end(); for (i = mFileList.begin(); i != iend; ++i) if ((dirs == (i->compressedSize == size_t (-1))) && (recursive || i->path.empty())) ret->push_back(i->filename); return ret; }
//----------------------------------------------------------------------- StringVectorPtr ZipArchive::list(bool recursive) { StringVectorPtr ret = StringVectorPtr(new StringVector()); FileInfoList::iterator i, iend; iend = mFileList.end(); for (i = mFileList.begin(); i != iend; ++i) { if (recursive || i->path.empty()) { ret->push_back(i->filename); } } return ret; }
//----------------------------------------------------------------------- StringVectorPtr ZipArchive::find(const String& pattern, bool recursive, bool dirs) const { OGRE_LOCK_AUTO_MUTEX; StringVectorPtr ret = StringVectorPtr(OGRE_NEW_T(StringVector, MEMCATEGORY_GENERAL)(), SPFM_DELETE_T); // If pattern contains a directory name, do a full match bool full_match = (pattern.find ('/') != String::npos) || (pattern.find ('\\') != String::npos); bool wildCard = pattern.find("*") != String::npos; FileInfoList::const_iterator i, iend; iend = mFileList.end(); for (i = mFileList.begin(); i != iend; ++i) if ((dirs == (i->compressedSize == size_t (-1))) && (recursive || full_match || wildCard)) // Check basename matches pattern (zip is case insensitive) if (StringUtil::match(full_match ? i->filename : i->basename, pattern, false)) ret->push_back(i->filename); return ret; }