1*f6dc9357SAndroid Build Coastguard Worker // 7z/7zHeader.h
2*f6dc9357SAndroid Build Coastguard Worker
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_HEADER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_HEADER_H
5*f6dc9357SAndroid Build Coastguard Worker
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyTypes.h"
7*f6dc9357SAndroid Build Coastguard Worker
8*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
9*f6dc9357SAndroid Build Coastguard Worker namespace N7z {
10*f6dc9357SAndroid Build Coastguard Worker
11*f6dc9357SAndroid Build Coastguard Worker const unsigned kSignatureSize = 6;
12*f6dc9357SAndroid Build Coastguard Worker extern Byte kSignature[kSignatureSize];
13*f6dc9357SAndroid Build Coastguard Worker
14*f6dc9357SAndroid Build Coastguard Worker // #define Z7_7Z_VOL
15*f6dc9357SAndroid Build Coastguard Worker // 7z-MultiVolume is not finished yet.
16*f6dc9357SAndroid Build Coastguard Worker // It can work already, but I still do not like some
17*f6dc9357SAndroid Build Coastguard Worker // things of that new multivolume format.
18*f6dc9357SAndroid Build Coastguard Worker // So please keep it commented.
19*f6dc9357SAndroid Build Coastguard Worker
20*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_VOL
21*f6dc9357SAndroid Build Coastguard Worker extern Byte kFinishSignature[kSignatureSize];
22*f6dc9357SAndroid Build Coastguard Worker #endif
23*f6dc9357SAndroid Build Coastguard Worker
24*f6dc9357SAndroid Build Coastguard Worker struct CArchiveVersion
25*f6dc9357SAndroid Build Coastguard Worker {
26*f6dc9357SAndroid Build Coastguard Worker Byte Major;
27*f6dc9357SAndroid Build Coastguard Worker Byte Minor;
28*f6dc9357SAndroid Build Coastguard Worker };
29*f6dc9357SAndroid Build Coastguard Worker
30*f6dc9357SAndroid Build Coastguard Worker const Byte kMajorVersion = 0;
31*f6dc9357SAndroid Build Coastguard Worker
32*f6dc9357SAndroid Build Coastguard Worker struct CStartHeader
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker UInt64 NextHeaderOffset;
35*f6dc9357SAndroid Build Coastguard Worker UInt64 NextHeaderSize;
36*f6dc9357SAndroid Build Coastguard Worker UInt32 NextHeaderCRC;
37*f6dc9357SAndroid Build Coastguard Worker };
38*f6dc9357SAndroid Build Coastguard Worker
39*f6dc9357SAndroid Build Coastguard Worker const UInt32 kStartHeaderSize = 20;
40*f6dc9357SAndroid Build Coastguard Worker
41*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_VOL
42*f6dc9357SAndroid Build Coastguard Worker struct CFinishHeader: public CStartHeader
43*f6dc9357SAndroid Build Coastguard Worker {
44*f6dc9357SAndroid Build Coastguard Worker UInt64 ArchiveStartOffset; // data offset from end if that struct
45*f6dc9357SAndroid Build Coastguard Worker UInt64 AdditionalStartBlockSize; // start signature & start header size
46*f6dc9357SAndroid Build Coastguard Worker };
47*f6dc9357SAndroid Build Coastguard Worker
48*f6dc9357SAndroid Build Coastguard Worker const UInt32 kFinishHeaderSize = kStartHeaderSize + 16;
49*f6dc9357SAndroid Build Coastguard Worker #endif
50*f6dc9357SAndroid Build Coastguard Worker
51*f6dc9357SAndroid Build Coastguard Worker namespace NID
52*f6dc9357SAndroid Build Coastguard Worker {
53*f6dc9357SAndroid Build Coastguard Worker enum EEnum
54*f6dc9357SAndroid Build Coastguard Worker {
55*f6dc9357SAndroid Build Coastguard Worker kEnd,
56*f6dc9357SAndroid Build Coastguard Worker
57*f6dc9357SAndroid Build Coastguard Worker kHeader,
58*f6dc9357SAndroid Build Coastguard Worker
59*f6dc9357SAndroid Build Coastguard Worker kArchiveProperties,
60*f6dc9357SAndroid Build Coastguard Worker
61*f6dc9357SAndroid Build Coastguard Worker kAdditionalStreamsInfo,
62*f6dc9357SAndroid Build Coastguard Worker kMainStreamsInfo,
63*f6dc9357SAndroid Build Coastguard Worker kFilesInfo,
64*f6dc9357SAndroid Build Coastguard Worker
65*f6dc9357SAndroid Build Coastguard Worker kPackInfo,
66*f6dc9357SAndroid Build Coastguard Worker kUnpackInfo,
67*f6dc9357SAndroid Build Coastguard Worker kSubStreamsInfo,
68*f6dc9357SAndroid Build Coastguard Worker
69*f6dc9357SAndroid Build Coastguard Worker kSize,
70*f6dc9357SAndroid Build Coastguard Worker kCRC,
71*f6dc9357SAndroid Build Coastguard Worker
72*f6dc9357SAndroid Build Coastguard Worker kFolder,
73*f6dc9357SAndroid Build Coastguard Worker
74*f6dc9357SAndroid Build Coastguard Worker kCodersUnpackSize,
75*f6dc9357SAndroid Build Coastguard Worker kNumUnpackStream,
76*f6dc9357SAndroid Build Coastguard Worker
77*f6dc9357SAndroid Build Coastguard Worker kEmptyStream,
78*f6dc9357SAndroid Build Coastguard Worker kEmptyFile,
79*f6dc9357SAndroid Build Coastguard Worker kAnti,
80*f6dc9357SAndroid Build Coastguard Worker
81*f6dc9357SAndroid Build Coastguard Worker kName,
82*f6dc9357SAndroid Build Coastguard Worker kCTime,
83*f6dc9357SAndroid Build Coastguard Worker kATime,
84*f6dc9357SAndroid Build Coastguard Worker kMTime,
85*f6dc9357SAndroid Build Coastguard Worker kWinAttrib,
86*f6dc9357SAndroid Build Coastguard Worker kComment,
87*f6dc9357SAndroid Build Coastguard Worker
88*f6dc9357SAndroid Build Coastguard Worker kEncodedHeader,
89*f6dc9357SAndroid Build Coastguard Worker
90*f6dc9357SAndroid Build Coastguard Worker kStartPos,
91*f6dc9357SAndroid Build Coastguard Worker kDummy
92*f6dc9357SAndroid Build Coastguard Worker
93*f6dc9357SAndroid Build Coastguard Worker // kNtSecure,
94*f6dc9357SAndroid Build Coastguard Worker // kParent,
95*f6dc9357SAndroid Build Coastguard Worker // kIsAux
96*f6dc9357SAndroid Build Coastguard Worker };
97*f6dc9357SAndroid Build Coastguard Worker }
98*f6dc9357SAndroid Build Coastguard Worker
99*f6dc9357SAndroid Build Coastguard Worker
100*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_Copy = 0;
101*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_Delta = 3;
102*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_ARM64 = 0xa;
103*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_RISCV = 0xb;
104*f6dc9357SAndroid Build Coastguard Worker
105*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_LZMA2 = 0x21;
106*f6dc9357SAndroid Build Coastguard Worker
107*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_SWAP2 = 0x20302;
108*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_SWAP4 = 0x20304;
109*f6dc9357SAndroid Build Coastguard Worker
110*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_LZMA = 0x30101;
111*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_PPMD = 0x30401;
112*f6dc9357SAndroid Build Coastguard Worker
113*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_Deflate = 0x40108;
114*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_Deflate64 = 0x40109;
115*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_BZip2 = 0x40202;
116*f6dc9357SAndroid Build Coastguard Worker
117*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_BCJ = 0x3030103;
118*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_BCJ2 = 0x303011B;
119*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_PPC = 0x3030205;
120*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_IA64 = 0x3030401;
121*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_ARM = 0x3030501;
122*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_ARMT = 0x3030701;
123*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_SPARC = 0x3030805;
124*f6dc9357SAndroid Build Coastguard Worker
125*f6dc9357SAndroid Build Coastguard Worker const UInt32 k_AES = 0x6F10701;
126*f6dc9357SAndroid Build Coastguard Worker
127*f6dc9357SAndroid Build Coastguard Worker // const UInt32 k_ZSTD = 0x4015D; // winzip zstd
128*f6dc9357SAndroid Build Coastguard Worker // 0x4F71101, 7z-zstd
129*f6dc9357SAndroid Build Coastguard Worker
IsFilterMethod(UInt64 m)130*f6dc9357SAndroid Build Coastguard Worker inline bool IsFilterMethod(UInt64 m)
131*f6dc9357SAndroid Build Coastguard Worker {
132*f6dc9357SAndroid Build Coastguard Worker if (m > (UInt32)0xFFFFFFFF)
133*f6dc9357SAndroid Build Coastguard Worker return false;
134*f6dc9357SAndroid Build Coastguard Worker switch ((UInt32)m)
135*f6dc9357SAndroid Build Coastguard Worker {
136*f6dc9357SAndroid Build Coastguard Worker case k_Delta:
137*f6dc9357SAndroid Build Coastguard Worker case k_ARM64:
138*f6dc9357SAndroid Build Coastguard Worker case k_RISCV:
139*f6dc9357SAndroid Build Coastguard Worker case k_BCJ:
140*f6dc9357SAndroid Build Coastguard Worker case k_BCJ2:
141*f6dc9357SAndroid Build Coastguard Worker case k_PPC:
142*f6dc9357SAndroid Build Coastguard Worker case k_IA64:
143*f6dc9357SAndroid Build Coastguard Worker case k_ARM:
144*f6dc9357SAndroid Build Coastguard Worker case k_ARMT:
145*f6dc9357SAndroid Build Coastguard Worker case k_SPARC:
146*f6dc9357SAndroid Build Coastguard Worker case k_SWAP2:
147*f6dc9357SAndroid Build Coastguard Worker case k_SWAP4:
148*f6dc9357SAndroid Build Coastguard Worker return true;
149*f6dc9357SAndroid Build Coastguard Worker default: break;
150*f6dc9357SAndroid Build Coastguard Worker }
151*f6dc9357SAndroid Build Coastguard Worker return false;
152*f6dc9357SAndroid Build Coastguard Worker }
153*f6dc9357SAndroid Build Coastguard Worker
154*f6dc9357SAndroid Build Coastguard Worker }}
155*f6dc9357SAndroid Build Coastguard Worker
156*f6dc9357SAndroid Build Coastguard Worker #endif
157