|
|
|
#pragma pack(1)
|
|
|
|
|
|
|
|
/* zip-archive headers
|
|
|
|
* See: http://www.pkware.com/appnote.html
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct eof_cdir {
|
|
|
|
long tag; /* must be 0x06054b50 */
|
|
|
|
short disknum;
|
|
|
|
short firstdisk;
|
|
|
|
short nTotalCDirThis;
|
|
|
|
short nTotalCDir;
|
|
|
|
long nBytesCDir;
|
|
|
|
long ofsCDir;
|
|
|
|
short commentlen;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cdir {
|
|
|
|
long tag; /* must be 0x02014b50 */
|
|
|
|
short version_made;
|
|
|
|
short version_extract;
|
|
|
|
short gp_bitflag;
|
|
|
|
short comp_method;
|
|
|
|
short last_mod_file_time;
|
|
|
|
short last_mod_file_date;
|
|
|
|
long crc32;
|
|
|
|
long comp_size;
|
|
|
|
long uncomp_size;
|
|
|
|
short fname_length;
|
|
|
|
short extra_length;
|
|
|
|
short comment_length;
|
|
|
|
short disknum_start;
|
|
|
|
short int_file_attr;
|
|
|
|
long ext_file_attr;
|
|
|
|
long ofs_local_header;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fhdr {
|
|
|
|
long tag; /* must be 0x04034b50 */
|
|
|
|
short version_needed;
|
|
|
|
short flags;
|
|
|
|
short method;
|
|
|
|
short last_mod_file_time;
|
|
|
|
short last_mod_file_date;
|
|
|
|
long crc32;
|
|
|
|
long comp_size;
|
|
|
|
long uncomp_size;
|
|
|
|
short fname_length;
|
|
|
|
short extra_length;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct meta_data_hdr {
|
|
|
|
int tag;
|
|
|
|
int uncomp_size;
|
|
|
|
int bitmap_size;
|
|
|
|
};
|
|
|
|
|
|
|
|
#pragma pack()
|
|
|
|
|
|
|
|
/* installation scheme */
|
|
|
|
|
|
|
|
typedef struct tagSCHEME {
|
|
|
|
char *name;
|
|
|
|
char *prefix;
|
|
|
|
} SCHEME;
|
|
|
|
|
|
|
|
typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);
|
|
|
|
|
|
|
|
extern BOOL
|
|
|
|
extract_file(char *dst, char *src, int method, int comp_size,
|
|
|
|
int uncomp_size, NOTIFYPROC notify);
|
|
|
|
|
|
|
|
extern BOOL
|
|
|
|
unzip_archive(SCHEME *scheme, char *dirname, char *data,
|
|
|
|
DWORD size, NOTIFYPROC notify);
|
|
|
|
|
|
|
|
extern char *
|
|
|
|
map_new_file(DWORD flags, char *filename, char
|
|
|
|
*pathname_part, int size,
|
|
|
|
WORD wFatDate, WORD wFatTime,
|
|
|
|
NOTIFYPROC callback);
|
|
|
|
|
|
|
|
extern BOOL
|
|
|
|
ensure_directory (char *pathname, char *new_part,
|
|
|
|
NOTIFYPROC callback);
|
|
|
|
|
|
|
|
/* codes for NOITIFYPROC */
|
|
|
|
#define DIR_CREATED 1
|
|
|
|
#define CAN_OVERWRITE 2
|
|
|
|
#define FILE_CREATED 3
|
|
|
|
#define ZLIB_ERROR 4
|
|
|
|
#define SYSTEM_ERROR 5
|
|
|
|
#define NUM_FILES 6
|
|
|
|
#define FILE_OVERWRITTEN 7
|
|
|
|
|