summaryrefslogtreecommitdiffstats
path: root/PC/bdist_wininst/archive.h
diff options
context:
space:
mode:
Diffstat (limited to 'PC/bdist_wininst/archive.h')
-rw-r--r--PC/bdist_wininst/archive.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/PC/bdist_wininst/archive.h b/PC/bdist_wininst/archive.h
new file mode 100644
index 0000000..977898c
--- /dev/null
+++ b/PC/bdist_wininst/archive.h
@@ -0,0 +1,96 @@
+#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
+