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();
76
int GetRecoverySize(bool Required);
77
void VolSubtractHeaderSize(int SubSize);
78
void AddSubData(byte *SrcData,int DataSize,File *SrcFile,char *Name,bool AllowSplit);
79
bool ReadSubData(Array<byte> *UnpData,File *DestFile);
80
int GetHeaderType() {return(CurHeaderType);};
81
int ReadCommentData(Array<byte> &CmtData);
82
void WriteCommentData(byte *Data,int DataSize,bool FileComment);
83
RAROptions* GetRAROptions() {return(Cmd);}
84
void SetSilentOpen(bool Mode) {SilentOpen=Mode;}
89
EndArcHeader EndArcHead;
90
SubBlockHeader SubBlockHead;
92
CommentHeader CommHead;
93
ProtectHeader ProtectHead;
96
UnixOwnersHeader UOHead;
97
MacFInfoHeader MACHead;
99
StreamHeader StreamHead;
113
unsigned int SFXSize;
114
bool BrokenFileHeader;
121
Int64 AddingFilesSize;
122
uint AddingHeadersSize;
126
char FirstVolumeName[NM];
127
wchar FirstVolumeNameW[NM];