xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/7z/7zHeader.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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