1370b324cSopenharmony_ci// ArchiveCommandLine.h 2370b324cSopenharmony_ci 3370b324cSopenharmony_ci#ifndef ZIP7_INC_ARCHIVE_COMMAND_LINE_H 4370b324cSopenharmony_ci#define ZIP7_INC_ARCHIVE_COMMAND_LINE_H 5370b324cSopenharmony_ci 6370b324cSopenharmony_ci#include "../../../Common/CommandLineParser.h" 7370b324cSopenharmony_ci#include "../../../Common/Wildcard.h" 8370b324cSopenharmony_ci 9370b324cSopenharmony_ci#include "EnumDirItems.h" 10370b324cSopenharmony_ci 11370b324cSopenharmony_ci#include "Extract.h" 12370b324cSopenharmony_ci#include "HashCalc.h" 13370b324cSopenharmony_ci#include "Update.h" 14370b324cSopenharmony_ci 15370b324cSopenharmony_citypedef CMessagePathException CArcCmdLineException; 16370b324cSopenharmony_ci 17370b324cSopenharmony_cinamespace NCommandType { enum EEnum 18370b324cSopenharmony_ci{ 19370b324cSopenharmony_ci kAdd = 0, 20370b324cSopenharmony_ci kUpdate, 21370b324cSopenharmony_ci kDelete, 22370b324cSopenharmony_ci kTest, 23370b324cSopenharmony_ci kExtract, 24370b324cSopenharmony_ci kExtractFull, 25370b324cSopenharmony_ci kList, 26370b324cSopenharmony_ci kBenchmark, 27370b324cSopenharmony_ci kInfo, 28370b324cSopenharmony_ci kHash, 29370b324cSopenharmony_ci kRename 30370b324cSopenharmony_ci};} 31370b324cSopenharmony_ci 32370b324cSopenharmony_cistruct CArcCommand 33370b324cSopenharmony_ci{ 34370b324cSopenharmony_ci NCommandType::EEnum CommandType; 35370b324cSopenharmony_ci 36370b324cSopenharmony_ci bool IsFromExtractGroup() const; 37370b324cSopenharmony_ci bool IsFromUpdateGroup() const; 38370b324cSopenharmony_ci bool IsTestCommand() const { return CommandType == NCommandType::kTest; } 39370b324cSopenharmony_ci NExtract::NPathMode::EEnum GetPathMode() const; 40370b324cSopenharmony_ci}; 41370b324cSopenharmony_ci 42370b324cSopenharmony_cienum 43370b324cSopenharmony_ci{ 44370b324cSopenharmony_ci k_OutStream_disabled = 0, 45370b324cSopenharmony_ci k_OutStream_stdout = 1, 46370b324cSopenharmony_ci k_OutStream_stderr = 2 47370b324cSopenharmony_ci}; 48370b324cSopenharmony_ci 49370b324cSopenharmony_cistruct CArcCmdLineOptions 50370b324cSopenharmony_ci{ 51370b324cSopenharmony_ci bool HelpMode; 52370b324cSopenharmony_ci 53370b324cSopenharmony_ci // bool LargePages; 54370b324cSopenharmony_ci bool CaseSensitive_Change; 55370b324cSopenharmony_ci bool CaseSensitive; 56370b324cSopenharmony_ci 57370b324cSopenharmony_ci bool IsInTerminal; 58370b324cSopenharmony_ci bool IsStdOutTerminal; 59370b324cSopenharmony_ci bool IsStdErrTerminal; 60370b324cSopenharmony_ci bool StdInMode; 61370b324cSopenharmony_ci bool StdOutMode; 62370b324cSopenharmony_ci bool EnableHeaders; 63370b324cSopenharmony_ci 64370b324cSopenharmony_ci bool YesToAll; 65370b324cSopenharmony_ci bool ShowDialog; 66370b324cSopenharmony_ci bool TechMode; 67370b324cSopenharmony_ci bool ShowTime; 68370b324cSopenharmony_ci 69370b324cSopenharmony_ci CBoolPair NtSecurity; 70370b324cSopenharmony_ci CBoolPair AltStreams; 71370b324cSopenharmony_ci CBoolPair HardLinks; 72370b324cSopenharmony_ci CBoolPair SymLinks; 73370b324cSopenharmony_ci 74370b324cSopenharmony_ci CBoolPair StoreOwnerId; 75370b324cSopenharmony_ci CBoolPair StoreOwnerName; 76370b324cSopenharmony_ci 77370b324cSopenharmony_ci AString ListFields; 78370b324cSopenharmony_ci 79370b324cSopenharmony_ci int ConsoleCodePage; 80370b324cSopenharmony_ci 81370b324cSopenharmony_ci NWildcard::CCensor Censor; 82370b324cSopenharmony_ci 83370b324cSopenharmony_ci CArcCommand Command; 84370b324cSopenharmony_ci UString ArchiveName; 85370b324cSopenharmony_ci 86370b324cSopenharmony_ci #ifndef Z7_NO_CRYPTO 87370b324cSopenharmony_ci bool PasswordEnabled; 88370b324cSopenharmony_ci UString Password; 89370b324cSopenharmony_ci #endif 90370b324cSopenharmony_ci 91370b324cSopenharmony_ci UStringVector HashMethods; 92370b324cSopenharmony_ci // UString HashFilePath; 93370b324cSopenharmony_ci 94370b324cSopenharmony_ci // bool AppendName; 95370b324cSopenharmony_ci // UStringVector ArchivePathsSorted; 96370b324cSopenharmony_ci // UStringVector ArchivePathsFullSorted; 97370b324cSopenharmony_ci NWildcard::CCensor arcCensor; 98370b324cSopenharmony_ci UString ArcName_for_StdInMode; 99370b324cSopenharmony_ci 100370b324cSopenharmony_ci CObjectVector<CProperty> Properties; 101370b324cSopenharmony_ci 102370b324cSopenharmony_ci CExtractOptionsBase ExtractOptions; 103370b324cSopenharmony_ci 104370b324cSopenharmony_ci CUpdateOptions UpdateOptions; 105370b324cSopenharmony_ci CHashOptions HashOptions; 106370b324cSopenharmony_ci UString ArcType; 107370b324cSopenharmony_ci UStringVector ExcludedArcTypes; 108370b324cSopenharmony_ci 109370b324cSopenharmony_ci unsigned Number_for_Out; 110370b324cSopenharmony_ci unsigned Number_for_Errors; 111370b324cSopenharmony_ci unsigned Number_for_Percents; 112370b324cSopenharmony_ci unsigned LogLevel; 113370b324cSopenharmony_ci 114370b324cSopenharmony_ci // bool IsOutAllowed() const { return Number_for_Out != k_OutStream_disabled; } 115370b324cSopenharmony_ci 116370b324cSopenharmony_ci // Benchmark 117370b324cSopenharmony_ci UInt32 NumIterations; 118370b324cSopenharmony_ci bool NumIterations_Defined; 119370b324cSopenharmony_ci 120370b324cSopenharmony_ci CArcCmdLineOptions(): 121370b324cSopenharmony_ci HelpMode(false), 122370b324cSopenharmony_ci // LargePages(false), 123370b324cSopenharmony_ci CaseSensitive_Change(false), 124370b324cSopenharmony_ci CaseSensitive(false), 125370b324cSopenharmony_ci 126370b324cSopenharmony_ci IsInTerminal(false), 127370b324cSopenharmony_ci IsStdOutTerminal(false), 128370b324cSopenharmony_ci IsStdErrTerminal(false), 129370b324cSopenharmony_ci 130370b324cSopenharmony_ci StdInMode(false), 131370b324cSopenharmony_ci StdOutMode(false), 132370b324cSopenharmony_ci 133370b324cSopenharmony_ci EnableHeaders(false), 134370b324cSopenharmony_ci 135370b324cSopenharmony_ci YesToAll(false), 136370b324cSopenharmony_ci ShowDialog(false), 137370b324cSopenharmony_ci TechMode(false), 138370b324cSopenharmony_ci ShowTime(false), 139370b324cSopenharmony_ci 140370b324cSopenharmony_ci ConsoleCodePage(-1), 141370b324cSopenharmony_ci 142370b324cSopenharmony_ci Number_for_Out(k_OutStream_stdout), 143370b324cSopenharmony_ci Number_for_Errors(k_OutStream_stderr), 144370b324cSopenharmony_ci Number_for_Percents(k_OutStream_stdout), 145370b324cSopenharmony_ci 146370b324cSopenharmony_ci LogLevel(0) 147370b324cSopenharmony_ci { 148370b324cSopenharmony_ci } 149370b324cSopenharmony_ci}; 150370b324cSopenharmony_ci 151370b324cSopenharmony_ciclass CArcCmdLineParser 152370b324cSopenharmony_ci{ 153370b324cSopenharmony_ci NCommandLineParser::CParser parser; 154370b324cSopenharmony_cipublic: 155370b324cSopenharmony_ci UString Parse1Log; 156370b324cSopenharmony_ci void Parse1(const UStringVector &commandStrings, CArcCmdLineOptions &options); 157370b324cSopenharmony_ci void Parse2(CArcCmdLineOptions &options); 158370b324cSopenharmony_ci}; 159370b324cSopenharmony_ci 160370b324cSopenharmony_ci#endif 161