| 1 | /*
|
|---|
| 2 | IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
|
|---|
| 3 | WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
|
|---|
| 4 | BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
|
|---|
| 5 |
|
|---|
| 6 | IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
|
|---|
| 7 | MUST BE CHECKED IN AS WELL!
|
|---|
| 8 | */
|
|---|
| 9 |
|
|---|
| 10 | #pragma pack(1)
|
|---|
| 11 |
|
|---|
| 12 | /* zip-archive headers
|
|---|
| 13 | * See: http://www.pkware.com/appnote.html
|
|---|
| 14 | */
|
|---|
| 15 |
|
|---|
| 16 | struct eof_cdir {
|
|---|
| 17 | long tag; /* must be 0x06054b50 */
|
|---|
| 18 | short disknum;
|
|---|
| 19 | short firstdisk;
|
|---|
| 20 | short nTotalCDirThis;
|
|---|
| 21 | short nTotalCDir;
|
|---|
| 22 | long nBytesCDir;
|
|---|
| 23 | long ofsCDir;
|
|---|
| 24 | short commentlen;
|
|---|
| 25 | };
|
|---|
| 26 |
|
|---|
| 27 | struct cdir {
|
|---|
| 28 | long tag; /* must be 0x02014b50 */
|
|---|
| 29 | short version_made;
|
|---|
| 30 | short version_extract;
|
|---|
| 31 | short gp_bitflag;
|
|---|
| 32 | short comp_method;
|
|---|
| 33 | short last_mod_file_time;
|
|---|
| 34 | short last_mod_file_date;
|
|---|
| 35 | long crc32;
|
|---|
| 36 | long comp_size;
|
|---|
| 37 | long uncomp_size;
|
|---|
| 38 | short fname_length;
|
|---|
| 39 | short extra_length;
|
|---|
| 40 | short comment_length;
|
|---|
| 41 | short disknum_start;
|
|---|
| 42 | short int_file_attr;
|
|---|
| 43 | long ext_file_attr;
|
|---|
| 44 | long ofs_local_header;
|
|---|
| 45 | };
|
|---|
| 46 |
|
|---|
| 47 | struct fhdr {
|
|---|
| 48 | long tag; /* must be 0x04034b50 */
|
|---|
| 49 | short version_needed;
|
|---|
| 50 | short flags;
|
|---|
| 51 | short method;
|
|---|
| 52 | short last_mod_file_time;
|
|---|
| 53 | short last_mod_file_date;
|
|---|
| 54 | long crc32;
|
|---|
| 55 | long comp_size;
|
|---|
| 56 | long uncomp_size;
|
|---|
| 57 | short fname_length;
|
|---|
| 58 | short extra_length;
|
|---|
| 59 | };
|
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 | struct meta_data_hdr {
|
|---|
| 63 | int tag;
|
|---|
| 64 | int uncomp_size;
|
|---|
| 65 | int bitmap_size;
|
|---|
| 66 | };
|
|---|
| 67 |
|
|---|
| 68 | #pragma pack()
|
|---|
| 69 |
|
|---|
| 70 | /* installation scheme */
|
|---|
| 71 |
|
|---|
| 72 | typedef struct tagSCHEME {
|
|---|
| 73 | char *name;
|
|---|
| 74 | char *prefix;
|
|---|
| 75 | } SCHEME;
|
|---|
| 76 |
|
|---|
| 77 | typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);
|
|---|
| 78 |
|
|---|
| 79 | extern BOOL
|
|---|
| 80 | extract_file(char *dst, char *src, int method, int comp_size,
|
|---|
| 81 | int uncomp_size, NOTIFYPROC notify);
|
|---|
| 82 |
|
|---|
| 83 | extern BOOL
|
|---|
| 84 | unzip_archive(SCHEME *scheme, char *dirname, char *data,
|
|---|
| 85 | DWORD size, NOTIFYPROC notify);
|
|---|
| 86 |
|
|---|
| 87 | extern char *
|
|---|
| 88 | map_new_file(DWORD flags, char *filename, char
|
|---|
| 89 | *pathname_part, int size,
|
|---|
| 90 | WORD wFatDate, WORD wFatTime,
|
|---|
| 91 | NOTIFYPROC callback);
|
|---|
| 92 |
|
|---|
| 93 | extern BOOL
|
|---|
| 94 | ensure_directory (char *pathname, char *new_part,
|
|---|
| 95 | NOTIFYPROC callback);
|
|---|
| 96 |
|
|---|
| 97 | /* codes for NOITIFYPROC */
|
|---|
| 98 | #define DIR_CREATED 1
|
|---|
| 99 | #define CAN_OVERWRITE 2
|
|---|
| 100 | #define FILE_CREATED 3
|
|---|
| 101 | #define ZLIB_ERROR 4
|
|---|
| 102 | #define SYSTEM_ERROR 5
|
|---|
| 103 | #define NUM_FILES 6
|
|---|
| 104 | #define FILE_OVERWRITTEN 7
|
|---|
| 105 |
|
|---|