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