// ArchiveCommandLine.h #ifndef __ARCHIVE_COMMAND_LINE_H #define __ARCHIVE_COMMAND_LINE_H #include "../../../Common/CommandLineParser.h" #include "../../../Common/Wildcard.h" #include "Extract.h" #include "HashCalc.h" #include "Update.h" struct CArcCmdLineException: public UString { CArcCmdLineException(const char *a, const wchar_t *u = NULL); }; namespace NCommandType { enum EEnum { kAdd = 0, kUpdate, kDelete, kTest, kExtract, kExtractFull, kList, kBenchmark, kInfo, kHash, kRename };} struct CArcCommand { NCommandType::EEnum CommandType; bool IsFromExtractGroup() const; bool IsFromUpdateGroup() const; bool IsTestCommand() const { return CommandType == NCommandType::kTest; } NExtract::NPathMode::EEnum GetPathMode() const; }; struct CArcCmdLineOptions { bool HelpMode; #ifdef _WIN32 bool LargePages; #endif bool CaseSensitiveChange; bool CaseSensitive; bool IsInTerminal; bool IsStdOutTerminal; bool IsStdErrTerminal; bool StdInMode; bool StdOutMode; bool EnableHeaders; bool YesToAll; bool ShowDialog; NWildcard::CCensor Censor; CArcCommand Command; UString ArchiveName; #ifndef _NO_CRYPTO bool PasswordEnabled; UString Password; #endif bool TechMode; UStringVector HashMethods; bool AppendName; UStringVector ArchivePathsSorted; UStringVector ArchivePathsFullSorted; CObjectVector Properties; CExtractOptionsBase ExtractOptions; CBoolPair NtSecurity; CBoolPair AltStreams; CBoolPair HardLinks; CBoolPair SymLinks; CUpdateOptions UpdateOptions; CHashOptions HashOptions; UString ArcType; UStringVector ExcludedArcTypes; bool EnablePercents; // Benchmark UInt32 NumIterations; CArcCmdLineOptions(): StdInMode(false), StdOutMode(false), CaseSensitiveChange(false), CaseSensitive(false) {}; }; class CArcCmdLineParser { NCommandLineParser::CParser parser; public: CArcCmdLineParser(); void Parse1(const UStringVector &commandStrings, CArcCmdLineOptions &options); void Parse2(CArcCmdLineOptions &options); }; void EnumerateDirItemsAndSort( bool storeAltStreams, NWildcard::CCensor &censor, NWildcard::ECensorPathMode pathMode, const UString &addPathPrefix, UStringVector &sortedPaths, UStringVector &sortedFullPaths); #endif