libclamunrar/options.hpp
01eebc13
 #ifndef _RAR_OPTIONS_
 #define _RAR_OPTIONS_
 
 #define DEFAULT_RECOVERY     -3
 
 #define DEFAULT_RECVOLUMES  -10
 
 #define VOLSIZE_AUTO   INT64NDF // Automatically detect the volume size.
 
 enum PATH_EXCL_MODE {
   EXCL_UNCHANGED=0,    // Process paths as is (default).
   EXCL_SKIPWHOLEPATH,  // -ep  (exclude the path completely)
   EXCL_BASEPATH,       // -ep1 (exclude the base part of path)
   EXCL_SAVEFULLPATH,   // -ep2 (the full path without the disk letter)
ab504f13
   EXCL_ABSPATH         // -ep3 (the full path with the disk letter)
01eebc13
 };
 
 enum {SOLID_NONE=0,SOLID_NORMAL=1,SOLID_COUNT=2,SOLID_FILEEXT=4,
       SOLID_VOLUME_DEPENDENT=8,SOLID_VOLUME_INDEPENDENT=16};
 
 enum {ARCTIME_NONE=0,ARCTIME_KEEP,ARCTIME_LATEST};
 
 enum EXTTIME_MODE {
   EXTTIME_NONE=0,EXTTIME_1S,EXTTIME_HIGH1,EXTTIME_HIGH2,EXTTIME_HIGH3
 };
 
 enum {NAMES_ORIGINALCASE=0,NAMES_UPPERCASE,NAMES_LOWERCASE};
 
 enum MESSAGE_TYPE {MSG_STDOUT=0,MSG_STDERR,MSG_ERRONLY,MSG_NULL};
 
 enum RECURSE_MODE 
 {
   RECURSE_NONE=0,    // no recurse switches
   RECURSE_DISABLE,   // switch -r-
   RECURSE_ALWAYS,    // switch -r
   RECURSE_WILDCARDS, // switch -r0
 };
 
 enum OVERWRITE_MODE 
 {
   OVERWRITE_DEFAULT=0, // Ask when extracting, silently overwrite when archiving.
   OVERWRITE_ALL,
   OVERWRITE_NONE,
   OVERWRITE_AUTORENAME,
   OVERWRITE_FORCE_ASK
 };
 
 
 enum QOPEN_MODE { QOPEN_NONE, QOPEN_AUTO, QOPEN_ALWAYS };
 
 enum RAR_CHARSET { RCH_DEFAULT=0,RCH_ANSI,RCH_OEM,RCH_UNICODE,RCH_UTF8 };
 
 #define     MAX_FILTER_TYPES           16
 enum FilterState {FILTER_DEFAULT=0,FILTER_AUTO,FILTER_FORCE,FILTER_DISABLE};
 
 
 enum SAVECOPY_MODE {
   SAVECOPY_NONE=0, SAVECOPY_SILENT, SAVECOPY_LIST, SAVECOPY_LISTEXIT,
   SAVECOPY_DUPLISTEXIT
 };
 
ab504f13
 enum APPENDARCNAME_MODE
 {
   APPENDARCNAME_NONE=0,APPENDARCNAME_DESTPATH,APPENDARCNAME_OWNDIR
 };
 
01eebc13
 enum POWER_MODE {
   POWERMODE_KEEP=0,POWERMODE_OFF,POWERMODE_HIBERNATE,POWERMODE_SLEEP,
   POWERMODE_RESTART
 };
 
ab504f13
 
 // Need "forced off" state to turn off sound in GUI command line.
 enum SOUND_NOTIFY_MODE {SOUND_NOTIFY_DEFAULT=0,SOUND_NOTIFY_ON,SOUND_NOTIFY_OFF};
 
01eebc13
 struct FilterMode
 {
   FilterState State;
   int Param1;
   int Param2;
 };
 
 #define MAX_GENERATE_MASK  128
 
 
 class RAROptions
 {
   public:
     RAROptions();
     ~RAROptions();
     void Init();
 
     uint ExclFileAttr;
     uint InclFileAttr;
     bool InclAttrSet;
     size_t WinSize;
     wchar TempPath[NM];
     wchar SFXModule[NM];
 
 #ifdef USE_QOPEN
     QOPEN_MODE QOpenMode;
 #endif
 
     bool ConfigDisabled; // Switch -cfg-.
     wchar ExtrPath[NM];
     wchar CommentFile[NM];
     RAR_CHARSET CommentCharset;
     RAR_CHARSET FilelistCharset;
     RAR_CHARSET ErrlogCharset;
     RAR_CHARSET RedirectCharset;
 
     wchar ArcPath[NM];
     SecPassword Password;
     bool EncryptHeaders;
     
     bool ManualPassword; // Password entered manually during operation, might need to clean for next archive.
 
     wchar LogName[NM];
     MESSAGE_TYPE MsgStream;
ab504f13
     SOUND_NOTIFY_MODE Sound;
01eebc13
     OVERWRITE_MODE Overwrite;
     int Method;
     HASH_TYPE HashType;
     int Recovery;
     int RecVolNumber;
     bool DisablePercentage;
     bool DisableCopyright;
     bool DisableDone;
     bool PrintVersion;
     int Solid;
     int SolidCount;
     bool ClearArc;
     bool AddArcOnly;
     bool DisableComment;
     bool FreshFiles;
     bool UpdateFiles;
     PATH_EXCL_MODE ExclPath;
     RECURSE_MODE Recurse;
     int64 VolSize;
     Array<int64> NextVolSizes;
     uint CurVolNum;
     bool AllYes;
     bool MoreInfo; // -im, show more information, used only in "WinRAR t" now.
     bool DisableSortSolid;
     int ArcTime;
     int ConvertNames;
     bool ProcessOwners;
     bool SaveSymLinks;
     bool SaveHardLinks;
     bool AbsoluteLinks;
     int Priority;
     int SleepTime;
     bool KeepBroken;
     bool OpenShared;
     bool DeleteFiles;
 
 #ifdef _WIN_ALL
     bool AllowIncompatNames; // Allow names with trailing dots and spaces.
 #endif
 
 
 #ifndef SFX_MODULE
     bool GenerateArcName;
     wchar GenerateMask[MAX_GENERATE_MASK];
 #endif
     bool SyncFiles;
     bool ProcessEA;
     bool SaveStreams;
     bool SetCompressedAttr;
     bool IgnoreGeneralAttr;
ab504f13
     RarTime FileMtimeBefore,FileCtimeBefore,FileAtimeBefore;
     bool FileMtimeBeforeOR,FileCtimeBeforeOR,FileAtimeBeforeOR;
     RarTime FileMtimeAfter,FileCtimeAfter,FileAtimeAfter;
     bool FileMtimeAfterOR,FileCtimeAfterOR,FileAtimeAfterOR;
01eebc13
     int64 FileSizeLess;
     int64 FileSizeMore;
     bool Lock;
     bool Test;
     bool VolumePause;
     FilterMode FilterModes[MAX_FILTER_TYPES];
     wchar EmailTo[NM];
     uint VersionControl;
ab504f13
     APPENDARCNAME_MODE AppendArcNameToPath;
01eebc13
     POWER_MODE Shutdown;
ab504f13
     EXTTIME_MODE xmtime; // Extended time modes (time precision to store).
01eebc13
     EXTTIME_MODE xctime;
     EXTTIME_MODE xatime;
     wchar CompressStdin[NM];
 
     uint Threads; // We use it to init hash even if RAR_SMP is not defined.
 
 
 
 
 
 #ifdef RARDLL
     wchar DllDestName[NM];
     int DllOpMode;
     int DllError;
     LPARAM UserData;
     UNRARCALLBACK Callback;
     CHANGEVOLPROC ChangeVolProc;
     PROCESSDATAPROC ProcessDataProc;
 #endif
 };
 #endif