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