1 #ifndef __W_ZIP
2 #define __W_ZIP
3 
4 #pragma pack(1)
5 // FZipCentralInfo
6 struct FZipEndOfCentralDirectory
7 {
8 	DWORD	Magic;
9 	WORD	DiskNumber;
10 	WORD	FirstDisk;
11 	WORD	NumEntries;
12 	WORD	NumEntriesOnAllDisks;
13 	DWORD	DirectorySize;
14 	DWORD	DirectoryOffset;
15 	WORD	ZipCommentLength;
16 };
17 
18 // FZipFileInfo
19 struct FZipCentralDirectoryInfo
20 {
21 	DWORD	Magic;
22 	BYTE	VersionMadeBy[2];
23 	BYTE	VersionToExtract[2];
24 	WORD	Flags;
25 	WORD	Method;
26 	WORD	ModTime;
27 	WORD	ModDate;
28 	DWORD	CRC32;
29 	DWORD	CompressedSize;
30 	DWORD	UncompressedSize;
31 	WORD	NameLength;
32 	WORD	ExtraLength;
33 	WORD	CommentLength;
34 	WORD	StartingDiskNumber;
35 	WORD	InternalAttributes;
36 	DWORD	ExternalAttributes;
37 	DWORD	LocalHeaderOffset;
38 	// file name and other variable length info follows
39 };
40 
41 // FZipLocalHeader
42 struct FZipLocalFileHeader
43 {
44 	DWORD	Magic;
45 	BYTE	VersionToExtract[2];
46 	WORD	Flags;
47 	WORD	Method;
48 	WORD	ModTime;
49 	WORD	ModDate;
50 	DWORD	CRC32;
51 	DWORD	CompressedSize;
52 	DWORD	UncompressedSize;
53 	WORD	NameLength;
54 	WORD	ExtraLength;
55 	// file name and other variable length info follows
56 };
57 
58 
59 #pragma pack()
60 
61 #define ZIP_LOCALFILE	MAKE_ID('P','K',3,4)
62 #define ZIP_CENTRALFILE	MAKE_ID('P','K',1,2)
63 #define ZIP_ENDOFDIR	MAKE_ID('P','K',5,6)
64 
65 #define METHOD_STORED	0
66 #define METHOD_SHRINK	1
67 #define METHOD_IMPLODE	6
68 #define METHOD_DEFLATE	8
69 #define METHOD_BZIP2	12
70 #define METHOD_LZMA		14
71 #define METHOD_PPMD		98
72 
73 // File header flags.
74 #define ZF_ENCRYPTED			0x1
75 
76 #endif
77