xref: /aosp_15_r20/external/lzma/DOC/7zFormat.txt (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker7z Format description (18.06)
2*f6dc9357SAndroid Build Coastguard Worker----------------------------
3*f6dc9357SAndroid Build Coastguard Worker
4*f6dc9357SAndroid Build Coastguard WorkerThis file contains description of 7z archive format.
5*f6dc9357SAndroid Build Coastguard Worker7z archive can contain files compressed with any method.
6*f6dc9357SAndroid Build Coastguard WorkerSee "Methods.txt" for description for defined compressing methods.
7*f6dc9357SAndroid Build Coastguard Worker
8*f6dc9357SAndroid Build Coastguard Worker
9*f6dc9357SAndroid Build Coastguard WorkerFormat structure Overview
10*f6dc9357SAndroid Build Coastguard Worker-------------------------
11*f6dc9357SAndroid Build Coastguard Worker
12*f6dc9357SAndroid Build Coastguard WorkerSome fields can be optional.
13*f6dc9357SAndroid Build Coastguard Worker
14*f6dc9357SAndroid Build Coastguard WorkerArchive structure
15*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~~~
16*f6dc9357SAndroid Build Coastguard WorkerSignatureHeader
17*f6dc9357SAndroid Build Coastguard Worker[PackedStreams]
18*f6dc9357SAndroid Build Coastguard Worker[PackedStreamsForHeaders]
19*f6dc9357SAndroid Build Coastguard Worker[
20*f6dc9357SAndroid Build Coastguard Worker  Header
21*f6dc9357SAndroid Build Coastguard Worker  or
22*f6dc9357SAndroid Build Coastguard Worker  {
23*f6dc9357SAndroid Build Coastguard Worker    Packed Header
24*f6dc9357SAndroid Build Coastguard Worker    HeaderInfo
25*f6dc9357SAndroid Build Coastguard Worker  }
26*f6dc9357SAndroid Build Coastguard Worker]
27*f6dc9357SAndroid Build Coastguard Worker
28*f6dc9357SAndroid Build Coastguard Worker
29*f6dc9357SAndroid Build Coastguard Worker
30*f6dc9357SAndroid Build Coastguard WorkerHeader structure
31*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~~
32*f6dc9357SAndroid Build Coastguard Worker{
33*f6dc9357SAndroid Build Coastguard Worker  ArchiveProperties
34*f6dc9357SAndroid Build Coastguard Worker  AdditionalStreams
35*f6dc9357SAndroid Build Coastguard Worker  {
36*f6dc9357SAndroid Build Coastguard Worker    PackInfo
37*f6dc9357SAndroid Build Coastguard Worker    {
38*f6dc9357SAndroid Build Coastguard Worker      PackPos
39*f6dc9357SAndroid Build Coastguard Worker      NumPackStreams
40*f6dc9357SAndroid Build Coastguard Worker      Sizes[NumPackStreams]
41*f6dc9357SAndroid Build Coastguard Worker      CRCs[NumPackStreams]
42*f6dc9357SAndroid Build Coastguard Worker    }
43*f6dc9357SAndroid Build Coastguard Worker    CodersInfo
44*f6dc9357SAndroid Build Coastguard Worker    {
45*f6dc9357SAndroid Build Coastguard Worker      NumFolders
46*f6dc9357SAndroid Build Coastguard Worker      Folders[NumFolders]
47*f6dc9357SAndroid Build Coastguard Worker      {
48*f6dc9357SAndroid Build Coastguard Worker        NumCoders
49*f6dc9357SAndroid Build Coastguard Worker        CodersInfo[NumCoders]
50*f6dc9357SAndroid Build Coastguard Worker        {
51*f6dc9357SAndroid Build Coastguard Worker          ID
52*f6dc9357SAndroid Build Coastguard Worker          NumInStreams;
53*f6dc9357SAndroid Build Coastguard Worker          NumOutStreams;
54*f6dc9357SAndroid Build Coastguard Worker          PropertiesSize
55*f6dc9357SAndroid Build Coastguard Worker          Properties[PropertiesSize]
56*f6dc9357SAndroid Build Coastguard Worker        }
57*f6dc9357SAndroid Build Coastguard Worker        NumBindPairs
58*f6dc9357SAndroid Build Coastguard Worker        BindPairsInfo[NumBindPairs]
59*f6dc9357SAndroid Build Coastguard Worker        {
60*f6dc9357SAndroid Build Coastguard Worker          InIndex;
61*f6dc9357SAndroid Build Coastguard Worker          OutIndex;
62*f6dc9357SAndroid Build Coastguard Worker        }
63*f6dc9357SAndroid Build Coastguard Worker        PackedIndices
64*f6dc9357SAndroid Build Coastguard Worker      }
65*f6dc9357SAndroid Build Coastguard Worker      UnPackSize[Folders][Folders.NumOutstreams]
66*f6dc9357SAndroid Build Coastguard Worker      CRCs[NumFolders]
67*f6dc9357SAndroid Build Coastguard Worker    }
68*f6dc9357SAndroid Build Coastguard Worker    SubStreamsInfo
69*f6dc9357SAndroid Build Coastguard Worker    {
70*f6dc9357SAndroid Build Coastguard Worker      NumUnPackStreamsInFolders[NumFolders];
71*f6dc9357SAndroid Build Coastguard Worker      UnPackSizes[]
72*f6dc9357SAndroid Build Coastguard Worker      CRCs[]
73*f6dc9357SAndroid Build Coastguard Worker    }
74*f6dc9357SAndroid Build Coastguard Worker  }
75*f6dc9357SAndroid Build Coastguard Worker  MainStreamsInfo
76*f6dc9357SAndroid Build Coastguard Worker  {
77*f6dc9357SAndroid Build Coastguard Worker    (Same as in AdditionalStreams)
78*f6dc9357SAndroid Build Coastguard Worker  }
79*f6dc9357SAndroid Build Coastguard Worker  FilesInfo
80*f6dc9357SAndroid Build Coastguard Worker  {
81*f6dc9357SAndroid Build Coastguard Worker    NumFiles
82*f6dc9357SAndroid Build Coastguard Worker    Properties[]
83*f6dc9357SAndroid Build Coastguard Worker    {
84*f6dc9357SAndroid Build Coastguard Worker      ID
85*f6dc9357SAndroid Build Coastguard Worker      Size
86*f6dc9357SAndroid Build Coastguard Worker      Data
87*f6dc9357SAndroid Build Coastguard Worker    }
88*f6dc9357SAndroid Build Coastguard Worker  }
89*f6dc9357SAndroid Build Coastguard Worker}
90*f6dc9357SAndroid Build Coastguard Worker
91*f6dc9357SAndroid Build Coastguard WorkerHeaderInfo structure
92*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~~~~~~
93*f6dc9357SAndroid Build Coastguard Worker{
94*f6dc9357SAndroid Build Coastguard Worker  (Same as in AdditionalStreams)
95*f6dc9357SAndroid Build Coastguard Worker}
96*f6dc9357SAndroid Build Coastguard Worker
97*f6dc9357SAndroid Build Coastguard Worker
98*f6dc9357SAndroid Build Coastguard Worker
99*f6dc9357SAndroid Build Coastguard WorkerNotes about Notation and encoding
100*f6dc9357SAndroid Build Coastguard Worker---------------------------------
101*f6dc9357SAndroid Build Coastguard Worker
102*f6dc9357SAndroid Build Coastguard Worker7z uses little endian encoding.
103*f6dc9357SAndroid Build Coastguard Worker
104*f6dc9357SAndroid Build Coastguard Worker7z archive format has optional headers that are marked as
105*f6dc9357SAndroid Build Coastguard Worker[]
106*f6dc9357SAndroid Build Coastguard WorkerHeader
107*f6dc9357SAndroid Build Coastguard Worker[]
108*f6dc9357SAndroid Build Coastguard Worker
109*f6dc9357SAndroid Build Coastguard WorkerREAL_UINT64 means real UINT64.
110*f6dc9357SAndroid Build Coastguard Worker
111*f6dc9357SAndroid Build Coastguard WorkerUINT64 means real UINT64 encoded with the following scheme:
112*f6dc9357SAndroid Build Coastguard Worker
113*f6dc9357SAndroid Build Coastguard Worker  Size of encoding sequence depends from first byte:
114*f6dc9357SAndroid Build Coastguard Worker  First_Byte  Extra_Bytes        Value
115*f6dc9357SAndroid Build Coastguard Worker  (binary)
116*f6dc9357SAndroid Build Coastguard Worker  0xxxxxxx               : ( xxxxxxx           )
117*f6dc9357SAndroid Build Coastguard Worker  10xxxxxx    BYTE y[1]  : (  xxxxxx << (8 * 1)) + y
118*f6dc9357SAndroid Build Coastguard Worker  110xxxxx    BYTE y[2]  : (   xxxxx << (8 * 2)) + y
119*f6dc9357SAndroid Build Coastguard Worker  ...
120*f6dc9357SAndroid Build Coastguard Worker  1111110x    BYTE y[6]  : (       x << (8 * 6)) + y
121*f6dc9357SAndroid Build Coastguard Worker  11111110    BYTE y[7]  :                         y
122*f6dc9357SAndroid Build Coastguard Worker  11111111    BYTE y[8]  :                         y
123*f6dc9357SAndroid Build Coastguard Worker
124*f6dc9357SAndroid Build Coastguard Worker
125*f6dc9357SAndroid Build Coastguard Worker
126*f6dc9357SAndroid Build Coastguard WorkerProperty IDs
127*f6dc9357SAndroid Build Coastguard Worker------------
128*f6dc9357SAndroid Build Coastguard Worker
129*f6dc9357SAndroid Build Coastguard Worker0x00 = kEnd
130*f6dc9357SAndroid Build Coastguard Worker
131*f6dc9357SAndroid Build Coastguard Worker0x01 = kHeader
132*f6dc9357SAndroid Build Coastguard Worker
133*f6dc9357SAndroid Build Coastguard Worker0x02 = kArchiveProperties
134*f6dc9357SAndroid Build Coastguard Worker
135*f6dc9357SAndroid Build Coastguard Worker0x03 = kAdditionalStreamsInfo
136*f6dc9357SAndroid Build Coastguard Worker0x04 = kMainStreamsInfo
137*f6dc9357SAndroid Build Coastguard Worker0x05 = kFilesInfo
138*f6dc9357SAndroid Build Coastguard Worker
139*f6dc9357SAndroid Build Coastguard Worker0x06 = kPackInfo
140*f6dc9357SAndroid Build Coastguard Worker0x07 = kUnPackInfo
141*f6dc9357SAndroid Build Coastguard Worker0x08 = kSubStreamsInfo
142*f6dc9357SAndroid Build Coastguard Worker
143*f6dc9357SAndroid Build Coastguard Worker0x09 = kSize
144*f6dc9357SAndroid Build Coastguard Worker0x0A = kCRC
145*f6dc9357SAndroid Build Coastguard Worker
146*f6dc9357SAndroid Build Coastguard Worker0x0B = kFolder
147*f6dc9357SAndroid Build Coastguard Worker
148*f6dc9357SAndroid Build Coastguard Worker0x0C = kCodersUnPackSize
149*f6dc9357SAndroid Build Coastguard Worker0x0D = kNumUnPackStream
150*f6dc9357SAndroid Build Coastguard Worker
151*f6dc9357SAndroid Build Coastguard Worker0x0E = kEmptyStream
152*f6dc9357SAndroid Build Coastguard Worker0x0F = kEmptyFile
153*f6dc9357SAndroid Build Coastguard Worker0x10 = kAnti
154*f6dc9357SAndroid Build Coastguard Worker
155*f6dc9357SAndroid Build Coastguard Worker0x11 = kName
156*f6dc9357SAndroid Build Coastguard Worker0x12 = kCTime
157*f6dc9357SAndroid Build Coastguard Worker0x13 = kATime
158*f6dc9357SAndroid Build Coastguard Worker0x14 = kMTime
159*f6dc9357SAndroid Build Coastguard Worker0x15 = kWinAttributes
160*f6dc9357SAndroid Build Coastguard Worker0x16 = kComment
161*f6dc9357SAndroid Build Coastguard Worker
162*f6dc9357SAndroid Build Coastguard Worker0x17 = kEncodedHeader
163*f6dc9357SAndroid Build Coastguard Worker
164*f6dc9357SAndroid Build Coastguard Worker0x18 = kStartPos
165*f6dc9357SAndroid Build Coastguard Worker0x19 = kDummy
166*f6dc9357SAndroid Build Coastguard Worker
167*f6dc9357SAndroid Build Coastguard Worker
168*f6dc9357SAndroid Build Coastguard Worker7z format headers
169*f6dc9357SAndroid Build Coastguard Worker-----------------
170*f6dc9357SAndroid Build Coastguard Worker
171*f6dc9357SAndroid Build Coastguard WorkerSignatureHeader
172*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~
173*f6dc9357SAndroid Build Coastguard Worker  BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};
174*f6dc9357SAndroid Build Coastguard Worker
175*f6dc9357SAndroid Build Coastguard Worker  ArchiveVersion
176*f6dc9357SAndroid Build Coastguard Worker  {
177*f6dc9357SAndroid Build Coastguard Worker    BYTE Major;   // now = 0
178*f6dc9357SAndroid Build Coastguard Worker    BYTE Minor;   // now = 4
179*f6dc9357SAndroid Build Coastguard Worker  };
180*f6dc9357SAndroid Build Coastguard Worker
181*f6dc9357SAndroid Build Coastguard Worker  UINT32 StartHeaderCRC;
182*f6dc9357SAndroid Build Coastguard Worker
183*f6dc9357SAndroid Build Coastguard Worker  StartHeader
184*f6dc9357SAndroid Build Coastguard Worker  {
185*f6dc9357SAndroid Build Coastguard Worker    REAL_UINT64 NextHeaderOffset
186*f6dc9357SAndroid Build Coastguard Worker    REAL_UINT64 NextHeaderSize
187*f6dc9357SAndroid Build Coastguard Worker    UINT32 NextHeaderCRC
188*f6dc9357SAndroid Build Coastguard Worker  }
189*f6dc9357SAndroid Build Coastguard Worker
190*f6dc9357SAndroid Build Coastguard Worker
191*f6dc9357SAndroid Build Coastguard Worker...........................
192*f6dc9357SAndroid Build Coastguard Worker
193*f6dc9357SAndroid Build Coastguard Worker
194*f6dc9357SAndroid Build Coastguard WorkerArchiveProperties
195*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~~~
196*f6dc9357SAndroid Build Coastguard WorkerBYTE NID::kArchiveProperties (0x02)
197*f6dc9357SAndroid Build Coastguard Workerfor (;;)
198*f6dc9357SAndroid Build Coastguard Worker{
199*f6dc9357SAndroid Build Coastguard Worker  BYTE PropertyType;
200*f6dc9357SAndroid Build Coastguard Worker  if (aType == 0)
201*f6dc9357SAndroid Build Coastguard Worker    break;
202*f6dc9357SAndroid Build Coastguard Worker  UINT64 PropertySize;
203*f6dc9357SAndroid Build Coastguard Worker  BYTE PropertyData[PropertySize];
204*f6dc9357SAndroid Build Coastguard Worker}
205*f6dc9357SAndroid Build Coastguard Worker
206*f6dc9357SAndroid Build Coastguard Worker
207*f6dc9357SAndroid Build Coastguard WorkerDigests (NumStreams)
208*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~~~~~~~~
209*f6dc9357SAndroid Build Coastguard Worker  BYTE AllAreDefined
210*f6dc9357SAndroid Build Coastguard Worker  if (AllAreDefined == 0)
211*f6dc9357SAndroid Build Coastguard Worker  {
212*f6dc9357SAndroid Build Coastguard Worker    for(NumStreams)
213*f6dc9357SAndroid Build Coastguard Worker      BIT Defined
214*f6dc9357SAndroid Build Coastguard Worker  }
215*f6dc9357SAndroid Build Coastguard Worker  UINT32 CRCs[NumDefined]
216*f6dc9357SAndroid Build Coastguard Worker
217*f6dc9357SAndroid Build Coastguard Worker
218*f6dc9357SAndroid Build Coastguard WorkerPackInfo
219*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~
220*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kPackInfo  (0x06)
221*f6dc9357SAndroid Build Coastguard Worker  UINT64 PackPos
222*f6dc9357SAndroid Build Coastguard Worker  UINT64 NumPackStreams
223*f6dc9357SAndroid Build Coastguard Worker
224*f6dc9357SAndroid Build Coastguard Worker  []
225*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kSize    (0x09)
226*f6dc9357SAndroid Build Coastguard Worker  UINT64 PackSizes[NumPackStreams]
227*f6dc9357SAndroid Build Coastguard Worker  []
228*f6dc9357SAndroid Build Coastguard Worker
229*f6dc9357SAndroid Build Coastguard Worker  []
230*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kCRC      (0x0A)
231*f6dc9357SAndroid Build Coastguard Worker  PackStreamDigests[NumPackStreams]
232*f6dc9357SAndroid Build Coastguard Worker  []
233*f6dc9357SAndroid Build Coastguard Worker
234*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEnd
235*f6dc9357SAndroid Build Coastguard Worker
236*f6dc9357SAndroid Build Coastguard Worker
237*f6dc9357SAndroid Build Coastguard WorkerFolder
238*f6dc9357SAndroid Build Coastguard Worker~~~~~~
239*f6dc9357SAndroid Build Coastguard Worker  UINT64 NumCoders;
240*f6dc9357SAndroid Build Coastguard Worker  for (NumCoders)
241*f6dc9357SAndroid Build Coastguard Worker  {
242*f6dc9357SAndroid Build Coastguard Worker    BYTE
243*f6dc9357SAndroid Build Coastguard Worker    {
244*f6dc9357SAndroid Build Coastguard Worker      0:3 CodecIdSize
245*f6dc9357SAndroid Build Coastguard Worker      4:  Is Complex Coder
246*f6dc9357SAndroid Build Coastguard Worker      5:  There Are Attributes
247*f6dc9357SAndroid Build Coastguard Worker      6:  Reserved
248*f6dc9357SAndroid Build Coastguard Worker      7:  There are more alternative methods. (Not used anymore, must be 0).
249*f6dc9357SAndroid Build Coastguard Worker    }
250*f6dc9357SAndroid Build Coastguard Worker    BYTE CodecId[CodecIdSize]
251*f6dc9357SAndroid Build Coastguard Worker    if (Is Complex Coder)
252*f6dc9357SAndroid Build Coastguard Worker    {
253*f6dc9357SAndroid Build Coastguard Worker      UINT64 NumInStreams;
254*f6dc9357SAndroid Build Coastguard Worker      UINT64 NumOutStreams;
255*f6dc9357SAndroid Build Coastguard Worker    }
256*f6dc9357SAndroid Build Coastguard Worker    if (There Are Attributes)
257*f6dc9357SAndroid Build Coastguard Worker    {
258*f6dc9357SAndroid Build Coastguard Worker      UINT64 PropertiesSize
259*f6dc9357SAndroid Build Coastguard Worker      BYTE Properties[PropertiesSize]
260*f6dc9357SAndroid Build Coastguard Worker    }
261*f6dc9357SAndroid Build Coastguard Worker  }
262*f6dc9357SAndroid Build Coastguard Worker
263*f6dc9357SAndroid Build Coastguard Worker  NumBindPairs = NumOutStreamsTotal - 1;
264*f6dc9357SAndroid Build Coastguard Worker
265*f6dc9357SAndroid Build Coastguard Worker  for (NumBindPairs)
266*f6dc9357SAndroid Build Coastguard Worker  {
267*f6dc9357SAndroid Build Coastguard Worker    UINT64 InIndex;
268*f6dc9357SAndroid Build Coastguard Worker    UINT64 OutIndex;
269*f6dc9357SAndroid Build Coastguard Worker  }
270*f6dc9357SAndroid Build Coastguard Worker
271*f6dc9357SAndroid Build Coastguard Worker  NumPackedStreams = NumInStreamsTotal - NumBindPairs;
272*f6dc9357SAndroid Build Coastguard Worker  if (NumPackedStreams > 1)
273*f6dc9357SAndroid Build Coastguard Worker    for(NumPackedStreams)
274*f6dc9357SAndroid Build Coastguard Worker    {
275*f6dc9357SAndroid Build Coastguard Worker      UINT64 Index;
276*f6dc9357SAndroid Build Coastguard Worker    };
277*f6dc9357SAndroid Build Coastguard Worker
278*f6dc9357SAndroid Build Coastguard Worker
279*f6dc9357SAndroid Build Coastguard Worker
280*f6dc9357SAndroid Build Coastguard Worker
281*f6dc9357SAndroid Build Coastguard WorkerCoders Info
282*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~
283*f6dc9357SAndroid Build Coastguard Worker
284*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kUnPackInfo  (0x07)
285*f6dc9357SAndroid Build Coastguard Worker
286*f6dc9357SAndroid Build Coastguard Worker
287*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kFolder  (0x0B)
288*f6dc9357SAndroid Build Coastguard Worker  UINT64 NumFolders
289*f6dc9357SAndroid Build Coastguard Worker  BYTE External
290*f6dc9357SAndroid Build Coastguard Worker  switch(External)
291*f6dc9357SAndroid Build Coastguard Worker  {
292*f6dc9357SAndroid Build Coastguard Worker    case 0:
293*f6dc9357SAndroid Build Coastguard Worker      Folders[NumFolders]
294*f6dc9357SAndroid Build Coastguard Worker    case 1:
295*f6dc9357SAndroid Build Coastguard Worker      UINT64 DataStreamIndex
296*f6dc9357SAndroid Build Coastguard Worker  }
297*f6dc9357SAndroid Build Coastguard Worker
298*f6dc9357SAndroid Build Coastguard Worker
299*f6dc9357SAndroid Build Coastguard Worker  BYTE ID::kCodersUnPackSize  (0x0C)
300*f6dc9357SAndroid Build Coastguard Worker  for(Folders)
301*f6dc9357SAndroid Build Coastguard Worker    for(Folder.NumOutStreams)
302*f6dc9357SAndroid Build Coastguard Worker     UINT64 UnPackSize;
303*f6dc9357SAndroid Build Coastguard Worker
304*f6dc9357SAndroid Build Coastguard Worker
305*f6dc9357SAndroid Build Coastguard Worker  []
306*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kCRC   (0x0A)
307*f6dc9357SAndroid Build Coastguard Worker  UnPackDigests[NumFolders]
308*f6dc9357SAndroid Build Coastguard Worker  []
309*f6dc9357SAndroid Build Coastguard Worker
310*f6dc9357SAndroid Build Coastguard Worker
311*f6dc9357SAndroid Build Coastguard Worker
312*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEnd
313*f6dc9357SAndroid Build Coastguard Worker
314*f6dc9357SAndroid Build Coastguard Worker
315*f6dc9357SAndroid Build Coastguard Worker
316*f6dc9357SAndroid Build Coastguard WorkerSubStreams Info
317*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~~~
318*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kSubStreamsInfo; (0x08)
319*f6dc9357SAndroid Build Coastguard Worker
320*f6dc9357SAndroid Build Coastguard Worker  []
321*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kNumUnPackStream; (0x0D)
322*f6dc9357SAndroid Build Coastguard Worker  UINT64 NumUnPackStreamsInFolders[NumFolders];
323*f6dc9357SAndroid Build Coastguard Worker  []
324*f6dc9357SAndroid Build Coastguard Worker
325*f6dc9357SAndroid Build Coastguard Worker
326*f6dc9357SAndroid Build Coastguard Worker  []
327*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kSize  (0x09)
328*f6dc9357SAndroid Build Coastguard Worker  UINT64 UnPackSizes[]
329*f6dc9357SAndroid Build Coastguard Worker  []
330*f6dc9357SAndroid Build Coastguard Worker
331*f6dc9357SAndroid Build Coastguard Worker
332*f6dc9357SAndroid Build Coastguard Worker  []
333*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kCRC  (0x0A)
334*f6dc9357SAndroid Build Coastguard Worker  Digests[Number of streams with unknown CRC]
335*f6dc9357SAndroid Build Coastguard Worker  []
336*f6dc9357SAndroid Build Coastguard Worker
337*f6dc9357SAndroid Build Coastguard Worker
338*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEnd
339*f6dc9357SAndroid Build Coastguard Worker
340*f6dc9357SAndroid Build Coastguard Worker
341*f6dc9357SAndroid Build Coastguard WorkerStreams Info
342*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~~~
343*f6dc9357SAndroid Build Coastguard Worker
344*f6dc9357SAndroid Build Coastguard Worker  []
345*f6dc9357SAndroid Build Coastguard Worker  PackInfo
346*f6dc9357SAndroid Build Coastguard Worker  []
347*f6dc9357SAndroid Build Coastguard Worker
348*f6dc9357SAndroid Build Coastguard Worker
349*f6dc9357SAndroid Build Coastguard Worker  []
350*f6dc9357SAndroid Build Coastguard Worker  CodersInfo
351*f6dc9357SAndroid Build Coastguard Worker  []
352*f6dc9357SAndroid Build Coastguard Worker
353*f6dc9357SAndroid Build Coastguard Worker
354*f6dc9357SAndroid Build Coastguard Worker  []
355*f6dc9357SAndroid Build Coastguard Worker  SubStreamsInfo
356*f6dc9357SAndroid Build Coastguard Worker  []
357*f6dc9357SAndroid Build Coastguard Worker
358*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEnd
359*f6dc9357SAndroid Build Coastguard Worker
360*f6dc9357SAndroid Build Coastguard Worker
361*f6dc9357SAndroid Build Coastguard WorkerFilesInfo
362*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~
363*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kFilesInfo;  (0x05)
364*f6dc9357SAndroid Build Coastguard Worker  UINT64 NumFiles
365*f6dc9357SAndroid Build Coastguard Worker
366*f6dc9357SAndroid Build Coastguard Worker  for (;;)
367*f6dc9357SAndroid Build Coastguard Worker  {
368*f6dc9357SAndroid Build Coastguard Worker    BYTE PropertyType;
369*f6dc9357SAndroid Build Coastguard Worker    if (aType == 0)
370*f6dc9357SAndroid Build Coastguard Worker      break;
371*f6dc9357SAndroid Build Coastguard Worker
372*f6dc9357SAndroid Build Coastguard Worker    UINT64 Size;
373*f6dc9357SAndroid Build Coastguard Worker
374*f6dc9357SAndroid Build Coastguard Worker    switch(PropertyType)
375*f6dc9357SAndroid Build Coastguard Worker    {
376*f6dc9357SAndroid Build Coastguard Worker      kEmptyStream:   (0x0E)
377*f6dc9357SAndroid Build Coastguard Worker        for(NumFiles)
378*f6dc9357SAndroid Build Coastguard Worker          BIT IsEmptyStream
379*f6dc9357SAndroid Build Coastguard Worker
380*f6dc9357SAndroid Build Coastguard Worker      kEmptyFile:     (0x0F)
381*f6dc9357SAndroid Build Coastguard Worker        for(EmptyStreams)
382*f6dc9357SAndroid Build Coastguard Worker          BIT IsEmptyFile
383*f6dc9357SAndroid Build Coastguard Worker
384*f6dc9357SAndroid Build Coastguard Worker      kAnti:          (0x10)
385*f6dc9357SAndroid Build Coastguard Worker        for(EmptyStreams)
386*f6dc9357SAndroid Build Coastguard Worker          BIT IsAntiFile
387*f6dc9357SAndroid Build Coastguard Worker
388*f6dc9357SAndroid Build Coastguard Worker      case kCTime: (0x12)
389*f6dc9357SAndroid Build Coastguard Worker      case kATime: (0x13)
390*f6dc9357SAndroid Build Coastguard Worker      case kMTime: (0x14)
391*f6dc9357SAndroid Build Coastguard Worker        BYTE AllAreDefined
392*f6dc9357SAndroid Build Coastguard Worker        if (AllAreDefined == 0)
393*f6dc9357SAndroid Build Coastguard Worker        {
394*f6dc9357SAndroid Build Coastguard Worker          for(NumFiles)
395*f6dc9357SAndroid Build Coastguard Worker            BIT TimeDefined
396*f6dc9357SAndroid Build Coastguard Worker        }
397*f6dc9357SAndroid Build Coastguard Worker        BYTE External;
398*f6dc9357SAndroid Build Coastguard Worker        if(External != 0)
399*f6dc9357SAndroid Build Coastguard Worker          UINT64 DataIndex
400*f6dc9357SAndroid Build Coastguard Worker        []
401*f6dc9357SAndroid Build Coastguard Worker        for(Definded Items)
402*f6dc9357SAndroid Build Coastguard Worker          REAL_UINT64 Time
403*f6dc9357SAndroid Build Coastguard Worker        []
404*f6dc9357SAndroid Build Coastguard Worker
405*f6dc9357SAndroid Build Coastguard Worker      kNames:     (0x11)
406*f6dc9357SAndroid Build Coastguard Worker        BYTE External;
407*f6dc9357SAndroid Build Coastguard Worker        if(External != 0)
408*f6dc9357SAndroid Build Coastguard Worker          UINT64 DataIndex
409*f6dc9357SAndroid Build Coastguard Worker        []
410*f6dc9357SAndroid Build Coastguard Worker        for(Files)
411*f6dc9357SAndroid Build Coastguard Worker        {
412*f6dc9357SAndroid Build Coastguard Worker          wchar_t Names[NameSize];
413*f6dc9357SAndroid Build Coastguard Worker          wchar_t 0;
414*f6dc9357SAndroid Build Coastguard Worker        }
415*f6dc9357SAndroid Build Coastguard Worker        []
416*f6dc9357SAndroid Build Coastguard Worker
417*f6dc9357SAndroid Build Coastguard Worker      kAttributes:  (0x15)
418*f6dc9357SAndroid Build Coastguard Worker        BYTE AllAreDefined
419*f6dc9357SAndroid Build Coastguard Worker        if (AllAreDefined == 0)
420*f6dc9357SAndroid Build Coastguard Worker        {
421*f6dc9357SAndroid Build Coastguard Worker          for(NumFiles)
422*f6dc9357SAndroid Build Coastguard Worker            BIT AttributesAreDefined
423*f6dc9357SAndroid Build Coastguard Worker        }
424*f6dc9357SAndroid Build Coastguard Worker        BYTE External;
425*f6dc9357SAndroid Build Coastguard Worker        if(External != 0)
426*f6dc9357SAndroid Build Coastguard Worker          UINT64 DataIndex
427*f6dc9357SAndroid Build Coastguard Worker        []
428*f6dc9357SAndroid Build Coastguard Worker        for(Definded Attributes)
429*f6dc9357SAndroid Build Coastguard Worker          UINT32 Attributes
430*f6dc9357SAndroid Build Coastguard Worker        []
431*f6dc9357SAndroid Build Coastguard Worker    }
432*f6dc9357SAndroid Build Coastguard Worker  }
433*f6dc9357SAndroid Build Coastguard Worker
434*f6dc9357SAndroid Build Coastguard Worker
435*f6dc9357SAndroid Build Coastguard WorkerHeader
436*f6dc9357SAndroid Build Coastguard Worker~~~~~~
437*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kHeader (0x01)
438*f6dc9357SAndroid Build Coastguard Worker
439*f6dc9357SAndroid Build Coastguard Worker  []
440*f6dc9357SAndroid Build Coastguard Worker  ArchiveProperties
441*f6dc9357SAndroid Build Coastguard Worker  []
442*f6dc9357SAndroid Build Coastguard Worker
443*f6dc9357SAndroid Build Coastguard Worker  []
444*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kAdditionalStreamsInfo; (0x03)
445*f6dc9357SAndroid Build Coastguard Worker  StreamsInfo
446*f6dc9357SAndroid Build Coastguard Worker  []
447*f6dc9357SAndroid Build Coastguard Worker
448*f6dc9357SAndroid Build Coastguard Worker  []
449*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kMainStreamsInfo;    (0x04)
450*f6dc9357SAndroid Build Coastguard Worker  StreamsInfo
451*f6dc9357SAndroid Build Coastguard Worker  []
452*f6dc9357SAndroid Build Coastguard Worker
453*f6dc9357SAndroid Build Coastguard Worker  []
454*f6dc9357SAndroid Build Coastguard Worker  FilesInfo
455*f6dc9357SAndroid Build Coastguard Worker  []
456*f6dc9357SAndroid Build Coastguard Worker
457*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEnd
458*f6dc9357SAndroid Build Coastguard Worker
459*f6dc9357SAndroid Build Coastguard Worker
460*f6dc9357SAndroid Build Coastguard WorkerHeaderInfo
461*f6dc9357SAndroid Build Coastguard Worker~~~~~~~~~~
462*f6dc9357SAndroid Build Coastguard Worker  []
463*f6dc9357SAndroid Build Coastguard Worker  BYTE NID::kEncodedHeader; (0x17)
464*f6dc9357SAndroid Build Coastguard Worker  StreamsInfo for Encoded Header
465*f6dc9357SAndroid Build Coastguard Worker  []
466*f6dc9357SAndroid Build Coastguard Worker
467*f6dc9357SAndroid Build Coastguard Worker
468*f6dc9357SAndroid Build Coastguard Worker---
469*f6dc9357SAndroid Build Coastguard WorkerEnd of document
470