1 #ifndef _RAR_DATAIO_
2 #define _RAR_DATAIO_
3 
4 class CmdAdd;
5 class Unpack;
6 
7 
8 class ComprDataIO
9 {
10   private:
11     void ShowUnpRead(Int64 ArcPos,Int64 ArcSize);
12     void ShowUnpWrite();
13 
14 
15     bool UnpackFromMemory;
16     uint UnpackFromMemorySize;
17     byte *UnpackFromMemoryAddr;
18 
19     bool UnpackToMemory;
20     uint UnpackToMemorySize;
21     byte *UnpackToMemoryAddr;
22 
23     uint UnpWrSize;
24     byte *UnpWrAddr;
25 
26     Int64 UnpPackedSize;
27 
28     bool ShowProgress;
29     bool TestMode;
30     bool SkipUnpCRC;
31 
32     File *SrcFile;
33     File *DestFile;
34 
35     CmdAdd *Command;
36 
37     FileHeader *SubHead;
38     Int64 *SubHeadPos;
39 
40 #ifndef NOCRYPT
41     CryptData Crypt;
42     CryptData Decrypt;
43 #endif
44 
45 
46     int LastPercent;
47 
48     char CurrentCommand;
49 
50   public:
51     ComprDataIO();
52     void Init();
53     int UnpRead(byte *Addr,uint Count);
54     void UnpWrite(byte *Addr,uint Count);
EnableShowProgress(bool Show)55     void EnableShowProgress(bool Show) {ShowProgress=Show;}
56     void GetUnpackedData(byte **Data,uint *Size);
SetPackedSizeToRead(Int64 Size)57     void SetPackedSizeToRead(Int64 Size) {UnpPackedSize=Size;}
SetTestMode(bool Mode)58     void SetTestMode(bool Mode) {TestMode=Mode;}
SetSkipUnpCRC(bool Skip)59     void SetSkipUnpCRC(bool Skip) {SkipUnpCRC=Skip;}
60     void SetFiles(File *SrcFile,File *DestFile);
SetCommand(CmdAdd * Cmd)61     void SetCommand(CmdAdd *Cmd) {Command=Cmd;}
SetSubHeader(FileHeader * hd,Int64 * Pos)62     void SetSubHeader(FileHeader *hd,Int64 *Pos) {SubHead=hd;SubHeadPos=Pos;}
63     void SetEncryption(int Method,char *Password,byte *Salt,bool Encrypt);
64     void SetAV15Encryption();
65     void SetCmt13Encryption();
66     void SetUnpackToMemory(byte *Addr,uint Size);
SetCurrentCommand(char Cmd)67     void SetCurrentCommand(char Cmd) {CurrentCommand=Cmd;}
68 
69     bool PackVolume;
70     bool UnpVolume;
71     bool NextVolumeMissing;
72     Int64 TotalPackRead;
73     Int64 UnpArcSize;
74     Int64 CurPackRead,CurPackWrite,CurUnpRead,CurUnpWrite;
75     Int64 ProcessedArcSize,TotalArcSize;
76 
77     uint PackFileCRC,UnpFileCRC,PackedCRC;
78 
79     int Encryption;
80     int Decryption;
81 };
82 
83 #endif
84