| #ifndef _RAR_CMDDATA_ |
| #define _RAR_CMDDATA_ |
| |
| namespace third_party_unrar { |
| |
| #define DefaultStoreList L"7z;ace;arj;bz2;cab;gz;jpeg;jpg;lha;lz;lzh;mp3;rar;taz;tgz;xz;z;zip;zipx" |
| |
| enum RAR_CMD_LIST_MODE {RCLM_AUTO,RCLM_REJECT_LISTS,RCLM_ACCEPT_LISTS}; |
| |
| class CommandData:public RAROptions |
| { |
| private: |
| void ProcessSwitchesString(const wchar *Str); |
| void ProcessSwitch(const wchar *Switch); |
| void BadSwitch(const wchar *Switch); |
| uint GetExclAttr(const wchar *Str); |
| |
| bool FileLists; |
| bool NoMoreSwitches; |
| RAR_CMD_LIST_MODE ListMode; |
| bool BareOutput; |
| public: |
| CommandData(); |
| void Init(); |
| |
| void ParseCommandLine(bool Preprocess,int argc, char *argv[]); |
| void ParseArg(wchar *ArgW); |
| void ParseDone(); |
| void ParseEnvVar(); |
| void ReadConfig(); |
| void PreprocessArg(const wchar *Arg); |
| void OutTitle(); |
| void OutHelp(RAR_EXIT ExitCode); |
| bool IsSwitch(int Ch); |
| bool ExclCheck(const wchar *CheckName,bool Dir,bool CheckFullPath,bool CheckInclList); |
| static bool CheckArgs(StringList *Args,bool Dir,const wchar *CheckName,bool CheckFullPath,int MatchMode); |
| bool ExclDirByAttr(uint FileAttr); |
| bool TimeCheck(RarTime &ft); |
| bool SizeCheck(int64 Size); |
| bool AnyFiltersActive(); |
| int IsProcessFile(FileHeader &FileHead,bool *ExactMatch=NULL,int MatchType=MATCH_WILDSUBPATH, |
| wchar *MatchedArg=NULL,uint MatchedArgSize=0); |
| void ProcessCommand(); |
| void AddArcName(const wchar *Name); |
| bool GetArcName(wchar *Name,int MaxSize); |
| bool CheckWinSize(); |
| |
| int GetRecoverySize(const wchar *Str,int DefSize); |
| |
| #ifndef SFX_MODULE |
| void ReportWrongSwitches(RARFORMAT Format); |
| #endif |
| |
| wchar Command[NM+16]; |
| |
| wchar ArcName[NM]; |
| |
| StringList FileArgs; |
| StringList ExclArgs; |
| StringList InclArgs; |
| StringList ArcNames; |
| StringList StoreArgs; |
| }; |
| |
| } // namespace third_party_unrar |
| |
| #endif |