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