1*f6dc9357SAndroid Build Coastguard Worker // ZipHeader.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ARCHIVE_ZIP_HEADER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ARCHIVE_ZIP_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 NZip { 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker const unsigned kMarkerSize = 4; 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker namespace NSignature 14*f6dc9357SAndroid Build Coastguard Worker { 15*f6dc9357SAndroid Build Coastguard Worker const UInt32 kLocalFileHeader = 0x04034B50; 16*f6dc9357SAndroid Build Coastguard Worker const UInt32 kDataDescriptor = 0x08074B50; 17*f6dc9357SAndroid Build Coastguard Worker const UInt32 kCentralFileHeader = 0x02014B50; 18*f6dc9357SAndroid Build Coastguard Worker const UInt32 kEcd = 0x06054B50; 19*f6dc9357SAndroid Build Coastguard Worker const UInt32 kEcd64 = 0x06064B50; 20*f6dc9357SAndroid Build Coastguard Worker const UInt32 kEcd64Locator = 0x07064B50; 21*f6dc9357SAndroid Build Coastguard Worker const UInt32 kSpan = 0x08074B50; 22*f6dc9357SAndroid Build Coastguard Worker const UInt32 kNoSpan = 0x30304B50; // PK00, replaces kSpan, if there is only 1 segment 23*f6dc9357SAndroid Build Coastguard Worker } 24*f6dc9357SAndroid Build Coastguard Worker 25*f6dc9357SAndroid Build Coastguard Worker const unsigned kLocalHeaderSize = 4 + 26; // including signature 26*f6dc9357SAndroid Build Coastguard Worker const unsigned kDataDescriptorSize32 = 4 + 4 + 4 * 2; // including signature 27*f6dc9357SAndroid Build Coastguard Worker const unsigned kDataDescriptorSize64 = 4 + 4 + 8 * 2; // including signature 28*f6dc9357SAndroid Build Coastguard Worker const unsigned kCentralHeaderSize = 4 + 42; // including signature 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker const unsigned kEcdSize = 22; // including signature 31*f6dc9357SAndroid Build Coastguard Worker const unsigned kEcd64_MainSize = 44; 32*f6dc9357SAndroid Build Coastguard Worker const unsigned kEcd64_FullSize = 12 + kEcd64_MainSize; 33*f6dc9357SAndroid Build Coastguard Worker const unsigned kEcd64Locator_Size = 20; 34*f6dc9357SAndroid Build Coastguard Worker 35*f6dc9357SAndroid Build Coastguard Worker namespace NFileHeader 36*f6dc9357SAndroid Build Coastguard Worker { 37*f6dc9357SAndroid Build Coastguard Worker namespace NCompressionMethod 38*f6dc9357SAndroid Build Coastguard Worker { 39*f6dc9357SAndroid Build Coastguard Worker enum EType 40*f6dc9357SAndroid Build Coastguard Worker { 41*f6dc9357SAndroid Build Coastguard Worker kStore = 0, 42*f6dc9357SAndroid Build Coastguard Worker kShrink = 1, 43*f6dc9357SAndroid Build Coastguard Worker kReduce1 = 2, 44*f6dc9357SAndroid Build Coastguard Worker kReduce2 = 3, 45*f6dc9357SAndroid Build Coastguard Worker kReduce3 = 4, 46*f6dc9357SAndroid Build Coastguard Worker kReduce4 = 5, 47*f6dc9357SAndroid Build Coastguard Worker kImplode = 6, 48*f6dc9357SAndroid Build Coastguard Worker kTokenize = 7, 49*f6dc9357SAndroid Build Coastguard Worker kDeflate = 8, 50*f6dc9357SAndroid Build Coastguard Worker kDeflate64 = 9, 51*f6dc9357SAndroid Build Coastguard Worker kPKImploding = 10, 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker kBZip2 = 12, 54*f6dc9357SAndroid Build Coastguard Worker 55*f6dc9357SAndroid Build Coastguard Worker kLZMA = 14, 56*f6dc9357SAndroid Build Coastguard Worker 57*f6dc9357SAndroid Build Coastguard Worker kTerse = 18, 58*f6dc9357SAndroid Build Coastguard Worker kLz77 = 19, 59*f6dc9357SAndroid Build Coastguard Worker kZstdPk = 20, 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker kZstdWz = 93, 62*f6dc9357SAndroid Build Coastguard Worker kMP3 = 94, 63*f6dc9357SAndroid Build Coastguard Worker kXz = 95, 64*f6dc9357SAndroid Build Coastguard Worker kJpeg = 96, 65*f6dc9357SAndroid Build Coastguard Worker kWavPack = 97, 66*f6dc9357SAndroid Build Coastguard Worker kPPMd = 98, 67*f6dc9357SAndroid Build Coastguard Worker kWzAES = 99 68*f6dc9357SAndroid Build Coastguard Worker }; 69*f6dc9357SAndroid Build Coastguard Worker 70*f6dc9357SAndroid Build Coastguard Worker const Byte kMadeByProgramVersion = 63; 71*f6dc9357SAndroid Build Coastguard Worker 72*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Default = 10; 73*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Dir = 20; 74*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_ZipCrypto = 20; 75*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Deflate = 20; 76*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Deflate64 = 21; 77*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Zip64 = 45; 78*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_BZip2 = 46; 79*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Aes = 51; 80*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_LZMA = 63; 81*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_PPMd = 63; 82*f6dc9357SAndroid Build Coastguard Worker const Byte kExtractVersion_Xz = 20; // test it 83*f6dc9357SAndroid Build Coastguard Worker } 84*f6dc9357SAndroid Build Coastguard Worker 85*f6dc9357SAndroid Build Coastguard Worker namespace NExtraID 86*f6dc9357SAndroid Build Coastguard Worker { 87*f6dc9357SAndroid Build Coastguard Worker enum 88*f6dc9357SAndroid Build Coastguard Worker { 89*f6dc9357SAndroid Build Coastguard Worker kZip64 = 0x01, 90*f6dc9357SAndroid Build Coastguard Worker kNTFS = 0x0A, 91*f6dc9357SAndroid Build Coastguard Worker kUnix0 = 0x0D, // Info-ZIP : (UNIX) PK 92*f6dc9357SAndroid Build Coastguard Worker kStrongEncrypt = 0x17, 93*f6dc9357SAndroid Build Coastguard Worker kIzNtSecurityDescriptor = 0x4453, 94*f6dc9357SAndroid Build Coastguard Worker kUnixTime = 0x5455, // "UT" (time) Info-ZIP 95*f6dc9357SAndroid Build Coastguard Worker kUnix1 = 0x5855, // Info-ZIP 96*f6dc9357SAndroid Build Coastguard Worker kIzUnicodeComment = 0x6375, 97*f6dc9357SAndroid Build Coastguard Worker kIzUnicodeName = 0x7075, 98*f6dc9357SAndroid Build Coastguard Worker kUnix2 = 0x7855, // Info-ZIP 99*f6dc9357SAndroid Build Coastguard Worker kUnixN = 0x7875, // Info-ZIP 100*f6dc9357SAndroid Build Coastguard Worker kWzAES = 0x9901, 101*f6dc9357SAndroid Build Coastguard Worker kApkAlign = 0xD935 102*f6dc9357SAndroid Build Coastguard Worker }; 103*f6dc9357SAndroid Build Coastguard Worker } 104*f6dc9357SAndroid Build Coastguard Worker 105*f6dc9357SAndroid Build Coastguard Worker namespace NNtfsExtra 106*f6dc9357SAndroid Build Coastguard Worker { 107*f6dc9357SAndroid Build Coastguard Worker const UInt16 kTagTime = 1; 108*f6dc9357SAndroid Build Coastguard Worker enum 109*f6dc9357SAndroid Build Coastguard Worker { 110*f6dc9357SAndroid Build Coastguard Worker kMTime = 0, 111*f6dc9357SAndroid Build Coastguard Worker kATime, 112*f6dc9357SAndroid Build Coastguard Worker kCTime 113*f6dc9357SAndroid Build Coastguard Worker }; 114*f6dc9357SAndroid Build Coastguard Worker } 115*f6dc9357SAndroid Build Coastguard Worker 116*f6dc9357SAndroid Build Coastguard Worker namespace NUnixTime 117*f6dc9357SAndroid Build Coastguard Worker { 118*f6dc9357SAndroid Build Coastguard Worker enum 119*f6dc9357SAndroid Build Coastguard Worker { 120*f6dc9357SAndroid Build Coastguard Worker kMTime = 0, 121*f6dc9357SAndroid Build Coastguard Worker kATime, 122*f6dc9357SAndroid Build Coastguard Worker kCTime 123*f6dc9357SAndroid Build Coastguard Worker }; 124*f6dc9357SAndroid Build Coastguard Worker } 125*f6dc9357SAndroid Build Coastguard Worker 126*f6dc9357SAndroid Build Coastguard Worker namespace NUnixExtra 127*f6dc9357SAndroid Build Coastguard Worker { 128*f6dc9357SAndroid Build Coastguard Worker enum 129*f6dc9357SAndroid Build Coastguard Worker { 130*f6dc9357SAndroid Build Coastguard Worker kATime = 0, 131*f6dc9357SAndroid Build Coastguard Worker kMTime 132*f6dc9357SAndroid Build Coastguard Worker }; 133*f6dc9357SAndroid Build Coastguard Worker } 134*f6dc9357SAndroid Build Coastguard Worker 135*f6dc9357SAndroid Build Coastguard Worker namespace NFlags 136*f6dc9357SAndroid Build Coastguard Worker { 137*f6dc9357SAndroid Build Coastguard Worker const unsigned kEncrypted = 1 << 0; 138*f6dc9357SAndroid Build Coastguard Worker const unsigned kLzmaEOS = 1 << 1; 139*f6dc9357SAndroid Build Coastguard Worker const unsigned kDescriptorUsedMask = 1 << 3; 140*f6dc9357SAndroid Build Coastguard Worker const unsigned kStrongEncrypted = 1 << 6; 141*f6dc9357SAndroid Build Coastguard Worker const unsigned kUtf8 = 1 << 11; 142*f6dc9357SAndroid Build Coastguard Worker const unsigned kAltStream = 1 << 14; 143*f6dc9357SAndroid Build Coastguard Worker 144*f6dc9357SAndroid Build Coastguard Worker const unsigned kImplodeDictionarySizeMask = 1 << 1; 145*f6dc9357SAndroid Build Coastguard Worker const unsigned kImplodeLiteralsOnMask = 1 << 2; 146*f6dc9357SAndroid Build Coastguard Worker 147*f6dc9357SAndroid Build Coastguard Worker /* 148*f6dc9357SAndroid Build Coastguard Worker const unsigned kDeflateTypeBitStart = 1; 149*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDeflateTypeBits = 2; 150*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDeflateTypes = (1 << kNumDeflateTypeBits); 151*f6dc9357SAndroid Build Coastguard Worker const unsigned kDeflateTypeMask = (1 << kNumDeflateTypeBits) - 1; 152*f6dc9357SAndroid Build Coastguard Worker */ 153*f6dc9357SAndroid Build Coastguard Worker } 154*f6dc9357SAndroid Build Coastguard Worker 155*f6dc9357SAndroid Build Coastguard Worker namespace NHostOS 156*f6dc9357SAndroid Build Coastguard Worker { 157*f6dc9357SAndroid Build Coastguard Worker enum EEnum 158*f6dc9357SAndroid Build Coastguard Worker { 159*f6dc9357SAndroid Build Coastguard Worker kFAT = 0, 160*f6dc9357SAndroid Build Coastguard Worker kAMIGA = 1, 161*f6dc9357SAndroid Build Coastguard Worker kVMS = 2, // VAX/VMS 162*f6dc9357SAndroid Build Coastguard Worker kUnix = 3, 163*f6dc9357SAndroid Build Coastguard Worker kVM_CMS = 4, 164*f6dc9357SAndroid Build Coastguard Worker kAtari = 5, // what if it's a minix filesystem? [cjh] 165*f6dc9357SAndroid Build Coastguard Worker kHPFS = 6, // filesystem used by OS/2 (and NT 3.x) 166*f6dc9357SAndroid Build Coastguard Worker kMac = 7, 167*f6dc9357SAndroid Build Coastguard Worker kZ_System = 8, 168*f6dc9357SAndroid Build Coastguard Worker kCPM = 9, 169*f6dc9357SAndroid Build Coastguard Worker kTOPS20 = 10, // pkzip 2.50 NTFS 170*f6dc9357SAndroid Build Coastguard Worker kNTFS = 11, // filesystem used by Windows NT 171*f6dc9357SAndroid Build Coastguard Worker kQDOS = 12, // SMS/QDOS 172*f6dc9357SAndroid Build Coastguard Worker kAcorn = 13, // Archimedes Acorn RISC OS 173*f6dc9357SAndroid Build Coastguard Worker kVFAT = 14, // filesystem used by Windows 95, NT 174*f6dc9357SAndroid Build Coastguard Worker kMVS = 15, 175*f6dc9357SAndroid Build Coastguard Worker kBeOS = 16, // hybrid POSIX/database filesystem 176*f6dc9357SAndroid Build Coastguard Worker kTandem = 17, 177*f6dc9357SAndroid Build Coastguard Worker kOS400 = 18, 178*f6dc9357SAndroid Build Coastguard Worker kOSX = 19 179*f6dc9357SAndroid Build Coastguard Worker }; 180*f6dc9357SAndroid Build Coastguard Worker } 181*f6dc9357SAndroid Build Coastguard Worker 182*f6dc9357SAndroid Build Coastguard Worker 183*f6dc9357SAndroid Build Coastguard Worker namespace NAmigaAttrib 184*f6dc9357SAndroid Build Coastguard Worker { 185*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIFMT = 06000; // Amiga file type mask 186*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIFDIR = 04000; // Amiga directory 187*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIFREG = 02000; // Amiga regular file 188*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIHIDDEN = 00200; // to be supported in AmigaDOS 3.x 189*f6dc9357SAndroid Build Coastguard Worker const UInt32 kISCRIPT = 00100; // executable script (text command file) 190*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIPURE = 00040; // allow loading into resident memory 191*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIARCHIVE = 00020; // not modified since bit was last set 192*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIREAD = 00010; // can be opened for reading 193*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIWRITE = 00004; // can be opened for writing 194*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIEXECUTE = 00002; // executable image, a loadable runfile 195*f6dc9357SAndroid Build Coastguard Worker const UInt32 kIDELETE = 00001; // can be deleted 196*f6dc9357SAndroid Build Coastguard Worker } 197*f6dc9357SAndroid Build Coastguard Worker } 198*f6dc9357SAndroid Build Coastguard Worker 199*f6dc9357SAndroid Build Coastguard Worker }} 200*f6dc9357SAndroid Build Coastguard Worker 201*f6dc9357SAndroid Build Coastguard Worker #endif 202