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