6 enum {EN_LOCK=1,EN_VOL=2,EN_FIRSTVOL=4};
8 class Archive:public File
11 bool IsSignature(byte *D);
12 void UpdateLatestTime(FileHeader *CurBlock);
13 void Protect(int RecSectors);
14 void ConvertNameCase(char *Name);
15 void ConvertNameCase(wchar *Name);
16 void ConvertUnknownHeader();
17 bool AddArcComment(char *NameToShow);
19 void PrepareExtraTime(FileHeader *hd,EXTTIME_MODE etm,EXTTIME_MODE etc,EXTTIME_MODE eta,EXTTIME_MODE etarc,Array<byte> &TimeData);
21 #if !defined(SHELL_EXT) && !defined(NOCRYPT)
22 CryptData HeadersCrypt;
23 byte HeadersSalt[SALT_SIZE];
26 ComprDataIO SubDataIO;
27 byte SubDataSalt[SALT_SIZE];
29 RAROptions *Cmd,DummyCmd;
43 Archive(RAROptions *InitCmd=NULL);
44 bool IsArchive(bool EnableBroken);
45 int SearchBlock(int BlockType);
46 int SearchSubBlock(const char *Type);
47 int ReadBlock(int BlockType);
48 void WriteBlock(int BlockType,BaseBlock *wb=NULL);
49 int PrepareNamesToWrite(char *Name,wchar *NameW,char *DestName,byte *DestNameW);
52 void CheckArc(bool EnableBroken);
53 void CheckOpen(char *Name,wchar *NameW=NULL);
54 bool WCheckOpen(char *Name,wchar *NameW=NULL);
55 bool TestLock(int Mode);
57 void CopyMainHeader(Archive &Src,bool CopySFX=true,char *NameToDisplay=NULL);
58 bool ProcessToFileHead(Archive &Src,bool LastBlockAdded,
59 Pack *Pack=NULL,const char *SkipName=NULL);
60 void TmpToArc(Archive &Src);
61 void CloseNew(int AdjustRecovery,bool CloseVolume);
62 void WriteEndBlock(bool CloseVolume);
63 void CopyFileRecord(Archive &Src);
64 void CopyArchiveData(Archive &Src);
65 bool GetComment(Array<byte> &CmtData);
67 void ViewFileComment();
68 void SetLatestTime(RarTime *NewTime);
73 void ConvertAttributes();
74 int GetRecoverySize(bool Required);
75 void VolSubtractHeaderSize(int SubSize);
76 void AddSubData(byte *SrcData,int DataSize,File *SrcFile,char *Name,bool AllowSplit);
77 bool ReadSubData(Array<byte> *UnpData,File *DestFile);
78 int GetHeaderType() {return(CurHeaderType);};
79 int ReadCommentData(Array<byte> &CmtData);
80 void WriteCommentData(byte *Data,int DataSize,bool FileComment);
81 RAROptions* GetRAROptions() {return(Cmd);}
82 void SetSilentOpen(bool Mode) {SilentOpen=Mode;}
87 EndArcHeader EndArcHead;
88 SubBlockHeader SubBlockHead;
90 CommentHeader CommHead;
91 ProtectHeader ProtectHead;
94 UnixOwnersHeader UOHead;
95 MacFInfoHeader MACHead;
97 StreamHeader StreamHead;
112 bool BrokenFileHeader;
119 Int64 AddingFilesSize;
120 uint AddingHeadersSize;
124 char FirstVolumeName[NM];
125 wchar FirstVolumeNameW[NM];