1b2808cd0411b5860f04f1364138674463768e414cdalton// ArchiveCommandLine.h 2b2808cd0411b5860f04f1364138674463768e414cdalton 3b2808cd0411b5860f04f1364138674463768e414cdalton#ifndef __ARCHIVE_COMMAND_LINE_H 4b2808cd0411b5860f04f1364138674463768e414cdalton#define __ARCHIVE_COMMAND_LINE_H 5b2808cd0411b5860f04f1364138674463768e414cdalton 6b2808cd0411b5860f04f1364138674463768e414cdalton#include "Common/CommandLineParser.h" 7b2808cd0411b5860f04f1364138674463768e414cdalton#include "Common/Wildcard.h" 8b2808cd0411b5860f04f1364138674463768e414cdalton 9b2808cd0411b5860f04f1364138674463768e414cdalton#include "Extract.h" 10b2808cd0411b5860f04f1364138674463768e414cdalton#include "Update.h" 11b2808cd0411b5860f04f1364138674463768e414cdalton 12b2808cd0411b5860f04f1364138674463768e414cdaltonstruct CArchiveCommandLineException: public AString 13b2808cd0411b5860f04f1364138674463768e414cdalton{ 14b2808cd0411b5860f04f1364138674463768e414cdalton CArchiveCommandLineException(const char *errorMessage): AString(errorMessage) {} 15b2808cd0411b5860f04f1364138674463768e414cdalton}; 16b2808cd0411b5860f04f1364138674463768e414cdalton 17b2808cd0411b5860f04f1364138674463768e414cdaltonnamespace NCommandType { enum EEnum 18b2808cd0411b5860f04f1364138674463768e414cdalton{ 19b2808cd0411b5860f04f1364138674463768e414cdalton kAdd = 0, 20b2808cd0411b5860f04f1364138674463768e414cdalton kUpdate, 21b2808cd0411b5860f04f1364138674463768e414cdalton kDelete, 22b2808cd0411b5860f04f1364138674463768e414cdalton kTest, 23b2808cd0411b5860f04f1364138674463768e414cdalton kExtract, 24b2808cd0411b5860f04f1364138674463768e414cdalton kFullExtract, 25b2808cd0411b5860f04f1364138674463768e414cdalton kList, 26b2808cd0411b5860f04f1364138674463768e414cdalton kBenchmark, 27b2808cd0411b5860f04f1364138674463768e414cdalton kInfo 28b2808cd0411b5860f04f1364138674463768e414cdalton};} 29b2808cd0411b5860f04f1364138674463768e414cdalton 30b2808cd0411b5860f04f1364138674463768e414cdaltonnamespace NRecursedType { enum EEnum 31b2808cd0411b5860f04f1364138674463768e414cdalton{ 32b2808cd0411b5860f04f1364138674463768e414cdalton kRecursed, 33b2808cd0411b5860f04f1364138674463768e414cdalton kWildCardOnlyRecursed, 34b2808cd0411b5860f04f1364138674463768e414cdalton kNonRecursed 35b2808cd0411b5860f04f1364138674463768e414cdalton};} 36b2808cd0411b5860f04f1364138674463768e414cdalton 37b2808cd0411b5860f04f1364138674463768e414cdaltonstruct CArchiveCommand 38b2808cd0411b5860f04f1364138674463768e414cdalton{ 39b2808cd0411b5860f04f1364138674463768e414cdalton NCommandType::EEnum CommandType; 40b2808cd0411b5860f04f1364138674463768e414cdalton bool IsFromExtractGroup() const; 41b2808cd0411b5860f04f1364138674463768e414cdalton bool IsFromUpdateGroup() const; 42b2808cd0411b5860f04f1364138674463768e414cdalton bool IsTestMode() const { return CommandType == NCommandType::kTest; } 43b2808cd0411b5860f04f1364138674463768e414cdalton NExtract::NPathMode::EEnum GetPathMode() const; 44b2808cd0411b5860f04f1364138674463768e414cdalton}; 45b2808cd0411b5860f04f1364138674463768e414cdalton 46b2808cd0411b5860f04f1364138674463768e414cdaltonstruct CArchiveCommandLineOptions 47b2808cd0411b5860f04f1364138674463768e414cdalton{ 48b2808cd0411b5860f04f1364138674463768e414cdalton bool HelpMode; 49b2808cd0411b5860f04f1364138674463768e414cdalton 50b2808cd0411b5860f04f1364138674463768e414cdalton #ifdef _WIN32 51b2808cd0411b5860f04f1364138674463768e414cdalton bool LargePages; 52b2808cd0411b5860f04f1364138674463768e414cdalton #endif 53b2808cd0411b5860f04f1364138674463768e414cdalton 54b2808cd0411b5860f04f1364138674463768e414cdalton bool IsInTerminal; 55b2808cd0411b5860f04f1364138674463768e414cdalton bool IsStdOutTerminal; 56b2808cd0411b5860f04f1364138674463768e414cdalton bool IsStdErrTerminal; 57b2808cd0411b5860f04f1364138674463768e414cdalton bool StdInMode; 58b2808cd0411b5860f04f1364138674463768e414cdalton bool StdOutMode; 59b2808cd0411b5860f04f1364138674463768e414cdalton bool EnableHeaders; 60b2808cd0411b5860f04f1364138674463768e414cdalton 61b2808cd0411b5860f04f1364138674463768e414cdalton bool YesToAll; 62b2808cd0411b5860f04f1364138674463768e414cdalton bool ShowDialog; 63b2808cd0411b5860f04f1364138674463768e414cdalton // NWildcard::CCensor ArchiveWildcardCensor; 64b2808cd0411b5860f04f1364138674463768e414cdalton NWildcard::CCensor WildcardCensor; 65b2808cd0411b5860f04f1364138674463768e414cdalton 66b2808cd0411b5860f04f1364138674463768e414cdalton CArchiveCommand Command; 67b2808cd0411b5860f04f1364138674463768e414cdalton UString ArchiveName; 68b2808cd0411b5860f04f1364138674463768e414cdalton 69b2808cd0411b5860f04f1364138674463768e414cdalton #ifndef _NO_CRYPTO 70b2808cd0411b5860f04f1364138674463768e414cdalton bool PasswordEnabled; 71b2808cd0411b5860f04f1364138674463768e414cdalton UString Password; 72b2808cd0411b5860f04f1364138674463768e414cdalton #endif 73b2808cd0411b5860f04f1364138674463768e414cdalton 74b2808cd0411b5860f04f1364138674463768e414cdalton bool TechMode; 75b2808cd0411b5860f04f1364138674463768e414cdalton // Extract 76b2808cd0411b5860f04f1364138674463768e414cdalton bool CalcCrc; 77b2808cd0411b5860f04f1364138674463768e414cdalton bool AppendName; 78b2808cd0411b5860f04f1364138674463768e414cdalton UString OutputDir; 79b2808cd0411b5860f04f1364138674463768e414cdalton NExtract::NOverwriteMode::EEnum OverwriteMode; 80b2808cd0411b5860f04f1364138674463768e414cdalton UStringVector ArchivePathsSorted; 81b2808cd0411b5860f04f1364138674463768e414cdalton UStringVector ArchivePathsFullSorted; 82b2808cd0411b5860f04f1364138674463768e414cdalton CObjectVector<CProperty> ExtractProperties; 83b2808cd0411b5860f04f1364138674463768e414cdalton 84b2808cd0411b5860f04f1364138674463768e414cdalton CUpdateOptions UpdateOptions; 85b2808cd0411b5860f04f1364138674463768e414cdalton UString ArcType; 86b2808cd0411b5860f04f1364138674463768e414cdalton bool EnablePercents; 87b2808cd0411b5860f04f1364138674463768e414cdalton 88b2808cd0411b5860f04f1364138674463768e414cdalton // Benchmark 89b2808cd0411b5860f04f1364138674463768e414cdalton UInt32 NumIterations; 90b2808cd0411b5860f04f1364138674463768e414cdalton UInt32 NumThreads; 91b2808cd0411b5860f04f1364138674463768e414cdalton UInt32 DictionarySize; 92b2808cd0411b5860f04f1364138674463768e414cdalton UString Method; 93b2808cd0411b5860f04f1364138674463768e414cdalton 94b2808cd0411b5860f04f1364138674463768e414cdalton 95b2808cd0411b5860f04f1364138674463768e414cdalton CArchiveCommandLineOptions(): StdInMode(false), StdOutMode(false) {}; 96b2808cd0411b5860f04f1364138674463768e414cdalton}; 97b2808cd0411b5860f04f1364138674463768e414cdalton 98b2808cd0411b5860f04f1364138674463768e414cdaltonclass CArchiveCommandLineParser 99b2808cd0411b5860f04f1364138674463768e414cdalton{ 100 NCommandLineParser::CParser parser; 101public: 102 CArchiveCommandLineParser(); 103 void Parse1(const UStringVector &commandStrings, CArchiveCommandLineOptions &options); 104 void Parse2(CArchiveCommandLineOptions &options); 105}; 106 107void EnumerateDirItemsAndSort(NWildcard::CCensor &wildcardCensor, 108 UStringVector &sortedPaths, 109 UStringVector &sortedFullPaths); 110 111#endif 112