blob: 50ff15cdddf0f047ae605ec591825da6b0404c8a [file] [log] [blame]
Thomas Hellerd1d92ea2004-07-14 15:17:04 +00001/*
Steve Dower65e4cb12014-11-22 12:54:57 -08002 IMPORTANT NOTE: IF THIS FILE IS CHANGED, PCBUILD\BDIST_WININST.VCXPROJ MUST
3 BE REBUILT AS WELL.
Thomas Hellerd1d92ea2004-07-14 15:17:04 +00004
Steve Dower65e4cb12014-11-22 12:54:57 -08005 IF CHANGES TO THIS FILE ARE CHECKED IN, THE RECOMPILED BINARIES MUST BE
6 CHECKED IN AS WELL!
Thomas Hellerd1d92ea2004-07-14 15:17:04 +00007*/
8
Thomas Hellerbb4b7d22002-11-22 20:39:33 +00009#pragma pack(1)
10
11/* zip-archive headers
12 * See: http://www.pkware.com/appnote.html
13 */
14
15struct eof_cdir {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000016 long tag; /* must be 0x06054b50 */
17 short disknum;
18 short firstdisk;
19 short nTotalCDirThis;
20 short nTotalCDir;
21 long nBytesCDir;
22 long ofsCDir;
23 short commentlen;
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000024};
25
26struct cdir {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000027 long tag; /* must be 0x02014b50 */
28 short version_made;
29 short version_extract;
30 short gp_bitflag;
31 short comp_method;
32 short last_mod_file_time;
33 short last_mod_file_date;
34 long crc32;
35 long comp_size;
36 long uncomp_size;
37 short fname_length;
38 short extra_length;
39 short comment_length;
40 short disknum_start;
41 short int_file_attr;
42 long ext_file_attr;
43 long ofs_local_header;
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000044};
45
46struct fhdr {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000047 long tag; /* must be 0x04034b50 */
48 short version_needed;
49 short flags;
50 short method;
51 short last_mod_file_time;
52 short last_mod_file_date;
53 long crc32;
54 long comp_size;
55 long uncomp_size;
56 short fname_length;
57 short extra_length;
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000058};
59
60
61struct meta_data_hdr {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000062 int tag;
63 int uncomp_size;
64 int bitmap_size;
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000065};
66
67#pragma pack()
68
69/* installation scheme */
70
71typedef struct tagSCHEME {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000072 char *name;
73 char *prefix;
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000074} SCHEME;
75
76typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);
77
78extern BOOL
79extract_file(char *dst, char *src, int method, int comp_size,
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000080 int uncomp_size, NOTIFYPROC notify);
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000081
82extern BOOL
83unzip_archive(SCHEME *scheme, char *dirname, char *data,
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000084 DWORD size, NOTIFYPROC notify);
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000085
86extern char *
87map_new_file(DWORD flags, char *filename, char
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000088 *pathname_part, int size,
89 WORD wFatDate, WORD wFatTime,
90 NOTIFYPROC callback);
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000091
92extern BOOL
93ensure_directory (char *pathname, char *new_part,
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000094 NOTIFYPROC callback);
Thomas Hellerbb4b7d22002-11-22 20:39:33 +000095
96/* codes for NOITIFYPROC */
97#define DIR_CREATED 1
98#define CAN_OVERWRITE 2
99#define FILE_CREATED 3
100#define ZLIB_ERROR 4
101#define SYSTEM_ERROR 5
102#define NUM_FILES 6
103#define FILE_OVERWRITTEN 7
104