//----------------------------------------------------------------------- void UnicodeFileSystemArchive::FileFinder::run(const WString& _wpattern, bool _recursive, bool _dirs, StringVector* _simpleList, FileInfoList* _detailList) { mRecursive = _recursive; mDirs = _dirs; mSimpleList = _simpleList; mDetailList = _detailList; // pattern can contain a directory name, separate it from mask size_t pos1 = _wpattern.rfind ('/'); size_t pos2 = _wpattern.rfind ('\\'); if (pos1 == _wpattern.npos || ((pos2 != _wpattern.npos) && (pos1 < pos2))) pos1 = pos2; WString wdir, wmask; if(pos1 == String::npos) { wmask = _wpattern; } else { wdir = _wpattern.substr(0, pos1 + 1); wmask = _wpattern.substr(pos1 + 1); } if(wmask == L"*") wmask.clear(); String mask = mArchive->toString(wmask); String dir = mArchive->toString(wdir); WString wFullDir = mArchive->getFullPath(wdir); _run(dir, wFullDir); }