#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

