| typedef struct ZipHead ZipHead; |
| |
| enum |
| { |
| /* |
| * magic numbers |
| */ |
| ZHeader = 0x04034b50, |
| ZCHeader = 0x02014b50, |
| ZECHeader = 0x06054b50, |
| |
| /* |
| * "general purpose flag" bits |
| */ |
| ZEncrypted = 1 << 0, |
| ZTrailInfo = 1 << 3, /* uncsize, csize, and crc are in trailer */ |
| ZCompPatch = 1 << 5, /* compression patched data */ |
| |
| /* ZCrcPoly = 0xedb88320, */ |
| #define ZCrcPoly 0xedb88320 |
| |
| /* |
| * compression method |
| */ |
| ZDeflate = 8, |
| |
| /* |
| * internal file attributes |
| */ |
| ZIsText = 1 << 0, |
| |
| /* |
| * file attribute interpretation, from high byte of version |
| */ |
| ZDos = 0, |
| ZAmiga = 1, |
| ZVMS = 2, |
| ZUnix = 3, |
| ZVMCMS = 4, |
| ZAtariST = 5, |
| ZOS2HPFS = 6, |
| ZMac = 7, |
| ZZsys = 8, |
| ZCPM = 9, |
| ZNtfs = 10, |
| |
| /* |
| * external attribute flags for ZDos |
| */ |
| ZDROnly = 0x01, |
| ZDHidden = 0x02, |
| ZDSystem = 0x04, |
| ZDVLable = 0x08, |
| ZDDir = 0x10, |
| ZDArch = 0x20, |
| |
| ZHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2, |
| ZHeadCrc = 4 + 2 + 2 + 2 + 2 + 2, |
| ZTrailSize = 4 + 4 + 4, |
| ZCHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4, |
| ZECHeadSize = 4 + 2 + 2 + 2 + 2 + 4 + 4 + 2 |
| }; |
| |
| /* |
| * interesting info from a zip header |
| */ |
| struct ZipHead |
| { |
| int madeos; /* version made by */ |
| int madevers; |
| int extos; /* version needed to extract */ |
| int extvers; |
| int flags; /* general purpose bit flag */ |
| int meth; |
| int modtime; |
| int moddate; |
| ulong crc; |
| ulong csize; |
| ulong uncsize; |
| int iattr; |
| ulong eattr; |
| ulong off; |
| char *file; |
| }; |