123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #ifndef _RAR_SCANTREE_
- #define _RAR_SCANTREE_
- enum SCAN_DIRS
- {
- SCAN_SKIPDIRS,
- SCAN_GETDIRS,
- SCAN_GETDIRSTWICE,
- SCAN_GETCURDIRS
- };
- enum SCAN_CODE { SCAN_SUCCESS,SCAN_DONE,SCAN_ERROR,SCAN_NEXT };
- #define MAXSCANDEPTH (NM/2)
- class CommandData;
- class ScanTree
- {
- private:
- bool ExpandFolderMask();
- bool GetFilteredMask();
- bool GetNextMask();
- SCAN_CODE FindProc(FindData *FD);
- void ScanError(bool &Error);
- FindFile *FindStack[MAXSCANDEPTH];
- int Depth;
- int SetAllMaskDepth;
- StringList *FileMasks;
- RECURSE_MODE Recurse;
- bool GetLinks;
- SCAN_DIRS GetDirs;
- int Errors;
-
- bool ScanEntireDisk;
- wchar CurMask[NM];
- wchar OrigCurMask[NM];
-
- StringList ExpandedFolderList;
-
- StringList FilterList;
-
- StringList *ErrDirList;
- Array<uint> *ErrDirSpecPathLength;
-
- bool FolderWildcards;
- bool SearchAllInRoot;
- size_t SpecPathLength;
- wchar ErrArcName[NM];
- CommandData *Cmd;
- public:
- ScanTree(StringList *FileMasks,RECURSE_MODE Recurse,bool GetLinks,SCAN_DIRS GetDirs);
- ~ScanTree();
- SCAN_CODE GetNext(FindData *FindData);
- size_t GetSpecPathLength() {return SpecPathLength;}
- int GetErrors() {return Errors;};
- void SetErrArcName(const wchar *Name) {wcsncpyz(ErrArcName,Name,ASIZE(ErrArcName));}
- void SetCommandData(CommandData *Cmd) {ScanTree::Cmd=Cmd;}
- void SetErrDirList(StringList *List,Array<uint> *Lengths)
- {
- ErrDirList=List;
- ErrDirSpecPathLength=Lengths;
- }
- };
- #endif
|