1// 7z/7zHeader.h 2 3#ifndef __7Z_HEADER_H 4#define __7Z_HEADER_H 5 6#include "../../../Common/Types.h" 7 8namespace NArchive { 9namespace N7z { 10 11const int kSignatureSize = 6; 12extern Byte kSignature[kSignatureSize]; 13 14// #define _7Z_VOL 15// 7z-MultiVolume is not finished yet. 16// It can work already, but I still do not like some 17// things of that new multivolume format. 18// So please keep it commented. 19 20#ifdef _7Z_VOL 21extern Byte kFinishSignature[kSignatureSize]; 22#endif 23 24struct CArchiveVersion 25{ 26 Byte Major; 27 Byte Minor; 28}; 29 30const Byte kMajorVersion = 0; 31 32struct CStartHeader 33{ 34 UInt64 NextHeaderOffset; 35 UInt64 NextHeaderSize; 36 UInt32 NextHeaderCRC; 37}; 38 39const UInt32 kStartHeaderSize = 20; 40 41#ifdef _7Z_VOL 42struct CFinishHeader: public CStartHeader 43{ 44 UInt64 ArchiveStartOffset; // data offset from end if that struct 45 UInt64 AdditionalStartBlockSize; // start signature & start header size 46}; 47 48const UInt32 kFinishHeaderSize = kStartHeaderSize + 16; 49#endif 50 51namespace NID 52{ 53 enum EEnum 54 { 55 kEnd, 56 57 kHeader, 58 59 kArchiveProperties, 60 61 kAdditionalStreamsInfo, 62 kMainStreamsInfo, 63 kFilesInfo, 64 65 kPackInfo, 66 kUnpackInfo, 67 kSubStreamsInfo, 68 69 kSize, 70 kCRC, 71 72 kFolder, 73 74 kCodersUnpackSize, 75 kNumUnpackStream, 76 77 kEmptyStream, 78 kEmptyFile, 79 kAnti, 80 81 kName, 82 kCTime, 83 kATime, 84 kMTime, 85 kWinAttributes, 86 kComment, 87 88 kEncodedHeader, 89 90 kStartPos, 91 kDummy 92 }; 93} 94 95}} 96 97#endif 98