annotate src/win32/7zip/7z/CPP/7zip/Archive/Zip/ZipHeader.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // Archive/Zip/Header.h
rlm@1 2
rlm@1 3 #ifndef __ARCHIVE_ZIP_HEADER_H
rlm@1 4 #define __ARCHIVE_ZIP_HEADER_H
rlm@1 5
rlm@1 6 #include "../../../Common/Types.h"
rlm@1 7
rlm@1 8 namespace NArchive {
rlm@1 9 namespace NZip {
rlm@1 10
rlm@1 11 namespace NSignature
rlm@1 12 {
rlm@1 13 extern UInt32 kLocalFileHeader;
rlm@1 14 extern UInt32 kDataDescriptor;
rlm@1 15 extern UInt32 kCentralFileHeader;
rlm@1 16 extern UInt32 kEndOfCentralDir;
rlm@1 17 extern UInt32 kZip64EndOfCentralDir;
rlm@1 18 extern UInt32 kZip64EndOfCentralDirLocator;
rlm@1 19
rlm@1 20 static const UInt32 kMarkerSize = 4;
rlm@1 21 }
rlm@1 22
rlm@1 23 const UInt32 kEcdSize = 22;
rlm@1 24 const UInt32 kZip64EcdSize = 44;
rlm@1 25 const UInt32 kZip64EcdLocatorSize = 20;
rlm@1 26 /*
rlm@1 27 struct CEndOfCentralDirectoryRecord
rlm@1 28 {
rlm@1 29 UInt16 ThisDiskNumber;
rlm@1 30 UInt16 StartCentralDirectoryDiskNumber;
rlm@1 31 UInt16 NumEntriesInCentaralDirectoryOnThisDisk;
rlm@1 32 UInt16 NumEntriesInCentaralDirectory;
rlm@1 33 UInt32 CentralDirectorySize;
rlm@1 34 UInt32 CentralDirectoryStartOffset;
rlm@1 35 UInt16 CommentSize;
rlm@1 36 };
rlm@1 37
rlm@1 38 struct CEndOfCentralDirectoryRecordFull
rlm@1 39 {
rlm@1 40 UInt32 Signature;
rlm@1 41 CEndOfCentralDirectoryRecord Header;
rlm@1 42 };
rlm@1 43 */
rlm@1 44
rlm@1 45 namespace NFileHeader
rlm@1 46 {
rlm@1 47 /*
rlm@1 48 struct CVersion
rlm@1 49 {
rlm@1 50 Byte Version;
rlm@1 51 Byte HostOS;
rlm@1 52 };
rlm@1 53 */
rlm@1 54
rlm@1 55 namespace NCompressionMethod
rlm@1 56 {
rlm@1 57 enum EType
rlm@1 58 {
rlm@1 59 kStored = 0,
rlm@1 60 kShrunk = 1,
rlm@1 61 kReduced1 = 2,
rlm@1 62 kReduced2 = 3,
rlm@1 63 kReduced3 = 4,
rlm@1 64 kReduced4 = 5,
rlm@1 65 kImploded = 6,
rlm@1 66 kReservedTokenizing = 7, // reserved for tokenizing
rlm@1 67 kDeflated = 8,
rlm@1 68 kDeflated64 = 9,
rlm@1 69 kPKImploding = 10,
rlm@1 70
rlm@1 71 kBZip2 = 12,
rlm@1 72 kLZMA = 14,
rlm@1 73 kTerse = 18,
rlm@1 74 kLz77 = 19,
rlm@1 75 kJpeg = 0x60,
rlm@1 76 kWavPack = 0x61,
rlm@1 77 kPPMd = 0x62,
rlm@1 78 kWzAES = 0x63
rlm@1 79 };
rlm@1 80 const int kNumCompressionMethods = 11;
rlm@1 81 const Byte kMadeByProgramVersion = 20;
rlm@1 82
rlm@1 83 const Byte kDeflateExtractVersion = 20;
rlm@1 84 const Byte kStoreExtractVersion = 10;
rlm@1 85
rlm@1 86 const Byte kSupportedVersion = 20;
rlm@1 87 }
rlm@1 88
rlm@1 89 namespace NExtraID
rlm@1 90 {
rlm@1 91 enum
rlm@1 92 {
rlm@1 93 kZip64 = 0x01,
rlm@1 94 kNTFS = 0x0A,
rlm@1 95 kStrongEncrypt = 0x17,
rlm@1 96 kWzAES = 0x9901
rlm@1 97 };
rlm@1 98 }
rlm@1 99
rlm@1 100 namespace NNtfsExtra
rlm@1 101 {
rlm@1 102 const UInt16 kTagTime = 1;
rlm@1 103 enum
rlm@1 104 {
rlm@1 105 kMTime = 0,
rlm@1 106 kATime = 1,
rlm@1 107 kCTime = 2
rlm@1 108 };
rlm@1 109 }
rlm@1 110
rlm@1 111 const UInt32 kLocalBlockSize = 26;
rlm@1 112 /*
rlm@1 113 struct CLocalBlock
rlm@1 114 {
rlm@1 115 CVersion ExtractVersion;
rlm@1 116
rlm@1 117 UInt16 Flags;
rlm@1 118 UInt16 CompressionMethod;
rlm@1 119 UInt32 Time;
rlm@1 120 UInt32 FileCRC;
rlm@1 121 UInt32 PackSize;
rlm@1 122 UInt32 UnPackSize;
rlm@1 123 UInt16 NameSize;
rlm@1 124 UInt16 ExtraSize;
rlm@1 125 };
rlm@1 126 */
rlm@1 127
rlm@1 128 const UInt32 kDataDescriptorSize = 16;
rlm@1 129 // const UInt32 kDataDescriptor64Size = 16 + 8;
rlm@1 130 /*
rlm@1 131 struct CDataDescriptor
rlm@1 132 {
rlm@1 133 UInt32 Signature;
rlm@1 134 UInt32 FileCRC;
rlm@1 135 UInt32 PackSize;
rlm@1 136 UInt32 UnPackSize;
rlm@1 137 };
rlm@1 138
rlm@1 139 struct CLocalBlockFull
rlm@1 140 {
rlm@1 141 UInt32 Signature;
rlm@1 142 CLocalBlock Header;
rlm@1 143 };
rlm@1 144 */
rlm@1 145
rlm@1 146 const UInt32 kCentralBlockSize = 42;
rlm@1 147 /*
rlm@1 148 struct CBlock
rlm@1 149 {
rlm@1 150 CVersion MadeByVersion;
rlm@1 151 CVersion ExtractVersion;
rlm@1 152 UInt16 Flags;
rlm@1 153 UInt16 CompressionMethod;
rlm@1 154 UInt32 Time;
rlm@1 155 UInt32 FileCRC;
rlm@1 156 UInt32 PackSize;
rlm@1 157 UInt32 UnPackSize;
rlm@1 158 UInt16 NameSize;
rlm@1 159 UInt16 ExtraSize;
rlm@1 160 UInt16 CommentSize;
rlm@1 161 UInt16 DiskNumberStart;
rlm@1 162 UInt16 InternalAttributes;
rlm@1 163 UInt32 ExternalAttributes;
rlm@1 164 UInt32 LocalHeaderOffset;
rlm@1 165 };
rlm@1 166
rlm@1 167 struct CBlockFull
rlm@1 168 {
rlm@1 169 UInt32 Signature;
rlm@1 170 CBlock Header;
rlm@1 171 };
rlm@1 172 */
rlm@1 173
rlm@1 174 namespace NFlags
rlm@1 175 {
rlm@1 176 const int kEncrypted = 1 << 0;
rlm@1 177 const int kLzmaEOS = 1 << 1;
rlm@1 178 const int kDescriptorUsedMask = 1 << 3;
rlm@1 179 const int kStrongEncrypted = 1 << 6;
rlm@1 180 const int kUtf8 = 1 << 11;
rlm@1 181
rlm@1 182 const int kImplodeDictionarySizeMask = 1 << 1;
rlm@1 183 const int kImplodeLiteralsOnMask = 1 << 2;
rlm@1 184
rlm@1 185 const int kDeflateTypeBitStart = 1;
rlm@1 186 const int kNumDeflateTypeBits = 2;
rlm@1 187 const int kNumDeflateTypes = (1 << kNumDeflateTypeBits);
rlm@1 188 const int kDeflateTypeMask = (1 << kNumDeflateTypeBits) - 1;
rlm@1 189 }
rlm@1 190
rlm@1 191 namespace NHostOS
rlm@1 192 {
rlm@1 193 enum EEnum
rlm@1 194 {
rlm@1 195 kFAT = 0,
rlm@1 196 kAMIGA = 1,
rlm@1 197 kVMS = 2, // VAX/VMS
rlm@1 198 kUnix = 3,
rlm@1 199 kVM_CMS = 4,
rlm@1 200 kAtari = 5, // what if it's a minix filesystem? [cjh]
rlm@1 201 kHPFS = 6, // filesystem used by OS/2 (and NT 3.x)
rlm@1 202 kMac = 7,
rlm@1 203 kZ_System = 8,
rlm@1 204 kCPM = 9,
rlm@1 205 kTOPS20 = 10, // pkzip 2.50 NTFS
rlm@1 206 kNTFS = 11, // filesystem used by Windows NT
rlm@1 207 kQDOS = 12, // SMS/QDOS
rlm@1 208 kAcorn = 13, // Archimedes Acorn RISC OS
rlm@1 209 kVFAT = 14, // filesystem used by Windows 95, NT
rlm@1 210 kMVS = 15,
rlm@1 211 kBeOS = 16, // hybrid POSIX/database filesystem
rlm@1 212 kTandem = 17,
rlm@1 213 kOS400 = 18,
rlm@1 214 kOSX = 19
rlm@1 215 };
rlm@1 216 }
rlm@1 217 namespace NUnixAttribute
rlm@1 218 {
rlm@1 219 const UInt32 kIFMT = 0170000; /* Unix file type mask */
rlm@1 220
rlm@1 221 const UInt32 kIFDIR = 0040000; /* Unix directory */
rlm@1 222 const UInt32 kIFREG = 0100000; /* Unix regular file */
rlm@1 223 const UInt32 kIFSOCK = 0140000; /* Unix socket (BSD, not SysV or Amiga) */
rlm@1 224 const UInt32 kIFLNK = 0120000; /* Unix symbolic link (not SysV, Amiga) */
rlm@1 225 const UInt32 kIFBLK = 0060000; /* Unix block special (not Amiga) */
rlm@1 226 const UInt32 kIFCHR = 0020000; /* Unix character special (not Amiga) */
rlm@1 227 const UInt32 kIFIFO = 0010000; /* Unix fifo (BCC, not MSC or Amiga) */
rlm@1 228
rlm@1 229 const UInt32 kISUID = 04000; /* Unix set user id on execution */
rlm@1 230 const UInt32 kISGID = 02000; /* Unix set group id on execution */
rlm@1 231 const UInt32 kISVTX = 01000; /* Unix directory permissions control */
rlm@1 232 const UInt32 kENFMT = kISGID; /* Unix record locking enforcement flag */
rlm@1 233 const UInt32 kIRWXU = 00700; /* Unix read, write, execute: owner */
rlm@1 234 const UInt32 kIRUSR = 00400; /* Unix read permission: owner */
rlm@1 235 const UInt32 kIWUSR = 00200; /* Unix write permission: owner */
rlm@1 236 const UInt32 kIXUSR = 00100; /* Unix execute permission: owner */
rlm@1 237 const UInt32 kIRWXG = 00070; /* Unix read, write, execute: group */
rlm@1 238 const UInt32 kIRGRP = 00040; /* Unix read permission: group */
rlm@1 239 const UInt32 kIWGRP = 00020; /* Unix write permission: group */
rlm@1 240 const UInt32 kIXGRP = 00010; /* Unix execute permission: group */
rlm@1 241 const UInt32 kIRWXO = 00007; /* Unix read, write, execute: other */
rlm@1 242 const UInt32 kIROTH = 00004; /* Unix read permission: other */
rlm@1 243 const UInt32 kIWOTH = 00002; /* Unix write permission: other */
rlm@1 244 const UInt32 kIXOTH = 00001; /* Unix execute permission: other */
rlm@1 245 }
rlm@1 246
rlm@1 247 namespace NAmigaAttribute
rlm@1 248 {
rlm@1 249 const UInt32 kIFMT = 06000; /* Amiga file type mask */
rlm@1 250 const UInt32 kIFDIR = 04000; /* Amiga directory */
rlm@1 251 const UInt32 kIFREG = 02000; /* Amiga regular file */
rlm@1 252 const UInt32 kIHIDDEN = 00200; /* to be supported in AmigaDOS 3.x */
rlm@1 253 const UInt32 kISCRIPT = 00100; /* executable script (text command file) */
rlm@1 254 const UInt32 kIPURE = 00040; /* allow loading into resident memory */
rlm@1 255 const UInt32 kIARCHIVE = 00020; /* not modified since bit was last set */
rlm@1 256 const UInt32 kIREAD = 00010; /* can be opened for reading */
rlm@1 257 const UInt32 kIWRITE = 00004; /* can be opened for writing */
rlm@1 258 const UInt32 kIEXECUTE = 00002; /* executable image, a loadable runfile */
rlm@1 259 const UInt32 kIDELETE = 00001; /* can be deleted */
rlm@1 260 }
rlm@1 261 }
rlm@1 262
rlm@1 263 }}
rlm@1 264
rlm@1 265 #endif