mirror of
https://github.com/holub/mame
synced 2025-06-26 06:14:12 +03:00
161 lines
3.0 KiB
C++
161 lines
3.0 KiB
C++
// ArchiveCommandLine.h
|
|
|
|
#ifndef ZIP7_INC_ARCHIVE_COMMAND_LINE_H
|
|
#define ZIP7_INC_ARCHIVE_COMMAND_LINE_H
|
|
|
|
#include "../../../Common/CommandLineParser.h"
|
|
#include "../../../Common/Wildcard.h"
|
|
|
|
#include "EnumDirItems.h"
|
|
|
|
#include "Extract.h"
|
|
#include "HashCalc.h"
|
|
#include "Update.h"
|
|
|
|
typedef CMessagePathException CArcCmdLineException;
|
|
|
|
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;
|
|
};
|
|
|
|
enum
|
|
{
|
|
k_OutStream_disabled = 0,
|
|
k_OutStream_stdout = 1,
|
|
k_OutStream_stderr = 2
|
|
};
|
|
|
|
struct CArcCmdLineOptions
|
|
{
|
|
bool HelpMode;
|
|
|
|
// bool LargePages;
|
|
bool CaseSensitive_Change;
|
|
bool CaseSensitive;
|
|
|
|
bool IsInTerminal;
|
|
bool IsStdOutTerminal;
|
|
bool IsStdErrTerminal;
|
|
bool StdInMode;
|
|
bool StdOutMode;
|
|
bool EnableHeaders;
|
|
|
|
bool YesToAll;
|
|
bool ShowDialog;
|
|
bool TechMode;
|
|
bool ShowTime;
|
|
|
|
CBoolPair NtSecurity;
|
|
CBoolPair AltStreams;
|
|
CBoolPair HardLinks;
|
|
CBoolPair SymLinks;
|
|
|
|
CBoolPair StoreOwnerId;
|
|
CBoolPair StoreOwnerName;
|
|
|
|
AString ListFields;
|
|
|
|
int ConsoleCodePage;
|
|
|
|
NWildcard::CCensor Censor;
|
|
|
|
CArcCommand Command;
|
|
UString ArchiveName;
|
|
|
|
#ifndef Z7_NO_CRYPTO
|
|
bool PasswordEnabled;
|
|
UString Password;
|
|
#endif
|
|
|
|
UStringVector HashMethods;
|
|
// UString HashFilePath;
|
|
|
|
// bool AppendName;
|
|
// UStringVector ArchivePathsSorted;
|
|
// UStringVector ArchivePathsFullSorted;
|
|
NWildcard::CCensor arcCensor;
|
|
UString ArcName_for_StdInMode;
|
|
|
|
CObjectVector<CProperty> Properties;
|
|
|
|
CExtractOptionsBase ExtractOptions;
|
|
|
|
CUpdateOptions UpdateOptions;
|
|
CHashOptions HashOptions;
|
|
UString ArcType;
|
|
UStringVector ExcludedArcTypes;
|
|
|
|
unsigned Number_for_Out;
|
|
unsigned Number_for_Errors;
|
|
unsigned Number_for_Percents;
|
|
unsigned LogLevel;
|
|
|
|
// bool IsOutAllowed() const { return Number_for_Out != k_OutStream_disabled; }
|
|
|
|
// Benchmark
|
|
UInt32 NumIterations;
|
|
bool NumIterations_Defined;
|
|
|
|
CArcCmdLineOptions():
|
|
HelpMode(false),
|
|
// LargePages(false),
|
|
CaseSensitive_Change(false),
|
|
CaseSensitive(false),
|
|
|
|
IsInTerminal(false),
|
|
IsStdOutTerminal(false),
|
|
IsStdErrTerminal(false),
|
|
|
|
StdInMode(false),
|
|
StdOutMode(false),
|
|
|
|
EnableHeaders(false),
|
|
|
|
YesToAll(false),
|
|
ShowDialog(false),
|
|
TechMode(false),
|
|
ShowTime(false),
|
|
|
|
ConsoleCodePage(-1),
|
|
|
|
Number_for_Out(k_OutStream_stdout),
|
|
Number_for_Errors(k_OutStream_stderr),
|
|
Number_for_Percents(k_OutStream_stdout),
|
|
|
|
LogLevel(0)
|
|
{
|
|
}
|
|
};
|
|
|
|
class CArcCmdLineParser
|
|
{
|
|
NCommandLineParser::CParser parser;
|
|
public:
|
|
UString Parse1Log;
|
|
void Parse1(const UStringVector &commandStrings, CArcCmdLineOptions &options);
|
|
void Parse2(CArcCmdLineOptions &options);
|
|
};
|
|
|
|
#endif
|