misc/libphysfs/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h
author nemo
Mon, 10 Apr 2017 12:06:43 -0400
changeset 12213 bb5522e88ab2
permissions -rw-r--r--
bulk copy of latest physfs to our misc/libphysfs since this seems to fix an off-by-1 error reliably hit in readln read of 1 byte probably introduced in the addition of the buffered read. Whether this is excessive or whether libphysfs should even be maintained by us is another matter. But at least we shouldn't crash

// ArchiveCommandLine.h

#ifndef __ARCHIVECOMMANDLINE_H
#define __ARCHIVECOMMANDLINE_H

#include "Common/Wildcard.h"
#include "Common/CommandLineParser.h"

#include "Extract.h"
#include "Update.h"

struct CArchiveCommandLineException: public AString
{
  CArchiveCommandLineException(const char *errorMessage): AString(errorMessage) {}
};

namespace NCommandType { enum EEnum
{
  kAdd = 0,
  kUpdate,
  kDelete,
  kTest,
  kExtract,
  kFullExtract,
  kList,
  kBenchmark,
  kInfo
};}

namespace NRecursedType { enum EEnum
{
  kRecursed,
  kWildCardOnlyRecursed,
  kNonRecursed
};}

struct CArchiveCommand
{
  NCommandType::EEnum CommandType;
  bool IsFromExtractGroup() const;
  bool IsFromUpdateGroup() const;
  bool IsTestMode() const { return CommandType == NCommandType::kTest; }
  NExtract::NPathMode::EEnum GetPathMode() const;
};

struct CArchiveCommandLineOptions
{
  bool HelpMode;

  #ifdef _WIN32
  bool LargePages;
  #endif

  bool IsInTerminal;
  bool IsStdOutTerminal;
  bool IsStdErrTerminal;
  bool StdInMode;
  bool StdOutMode;
  bool EnableHeaders;

  bool YesToAll;
  bool ShowDialog;
  // NWildcard::CCensor ArchiveWildcardCensor;
  NWildcard::CCensor WildcardCensor;

  CArchiveCommand Command; 
  UString ArchiveName;

  bool PasswordEnabled;
  UString Password;

  bool TechMode;
  // Extract
  bool AppendName;
  UString OutputDir;
  NExtract::NOverwriteMode::EEnum OverwriteMode;
  UStringVector ArchivePathsSorted;
  UStringVector ArchivePathsFullSorted;
  CObjectVector<CProperty> ExtractProperties;

  CUpdateOptions UpdateOptions;
  UString ArcType;
  bool EnablePercents;

  // Benchmark 
  UInt32 NumIterations;
  UInt32 NumThreads;
  UInt32 DictionarySize;
  UString Method;


  CArchiveCommandLineOptions(): StdInMode(false), StdOutMode(false) {};
};

class CArchiveCommandLineParser
{
  NCommandLineParser::CParser parser;
public:
  CArchiveCommandLineParser();
  void Parse1(const UStringVector &commandStrings, CArchiveCommandLineOptions &options);
  void Parse2(CArchiveCommandLineOptions &options);
};

#endif