blob: d005469f7eb4c8134fa84d253facdb6824ae82b6 [file] [log] [blame]
rscff3adf62004-04-14 20:09:21 +00001typedef struct ZipHead ZipHead;
2
3enum
4{
5 /*
6 * magic numbers
7 */
8 ZHeader = 0x04034b50,
9 ZCHeader = 0x02014b50,
10 ZECHeader = 0x06054b50,
11
12 /*
13 * "general purpose flag" bits
14 */
15 ZEncrypted = 1 << 0,
16 ZTrailInfo = 1 << 3, /* uncsize, csize, and crc are in trailer */
17 ZCompPatch = 1 << 5, /* compression patched data */
18
rsca0f1e212004-04-20 02:03:38 +000019/* ZCrcPoly = 0xedb88320, */
20#define ZCrcPoly 0xedb88320
rscff3adf62004-04-14 20:09:21 +000021
22 /*
23 * compression method
24 */
25 ZDeflate = 8,
26
27 /*
28 * internal file attributes
29 */
30 ZIsText = 1 << 0,
31
32 /*
33 * file attribute interpretation, from high byte of version
34 */
35 ZDos = 0,
36 ZAmiga = 1,
37 ZVMS = 2,
38 ZUnix = 3,
39 ZVMCMS = 4,
40 ZAtariST = 5,
41 ZOS2HPFS = 6,
42 ZMac = 7,
43 ZZsys = 8,
44 ZCPM = 9,
45 ZNtfs = 10,
46
47 /*
48 * external attribute flags for ZDos
49 */
50 ZDROnly = 0x01,
51 ZDHidden = 0x02,
52 ZDSystem = 0x04,
53 ZDVLable = 0x08,
54 ZDDir = 0x10,
55 ZDArch = 0x20,
56
57 ZHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2,
58 ZHeadCrc = 4 + 2 + 2 + 2 + 2 + 2,
59 ZTrailSize = 4 + 4 + 4,
60 ZCHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4,
61 ZECHeadSize = 4 + 2 + 2 + 2 + 2 + 4 + 4 + 2,
62};
63
64/*
65 * interesting info from a zip header
66 */
67struct ZipHead
68{
69 int madeos; /* version made by */
70 int madevers;
71 int extos; /* version needed to extract */
72 int extvers;
73 int flags; /* general purpose bit flag */
74 int meth;
75 int modtime;
76 int moddate;
77 ulong crc;
78 ulong csize;
79 ulong uncsize;
80 int iattr;
81 ulong eattr;
82 ulong off;
83 char *file;
84};