aboutsummaryrefslogtreecommitdiff
path: root/source/unzip/unzipP.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/unzip/unzipP.h')
-rw-r--r--source/unzip/unzipP.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/source/unzip/unzipP.h b/source/unzip/unzipP.h
new file mode 100644
index 0000000..c44e3cb
--- /dev/null
+++ b/source/unzip/unzipP.h
@@ -0,0 +1,125 @@
+#ifndef _UNZIPP_H_
+#define _UNZIPP_H_
+
+#include "ds2_malloc.h"
+#include "unzip.h"
+
+#ifndef local
+#define local static
+#endif
+/* compile with -Dlocal if your debugger can't find static symbols */
+
+
+
+#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \
+ !defined(CASESENSITIVITYDEFAULT_NO)
+#define CASESENSITIVITYDEFAULT_NO
+#endif
+
+
+#ifndef UNZ_BUFSIZE
+#define UNZ_BUFSIZE (16384)
+#endif
+
+#ifndef UNZ_MAXFILENAMEINZIP
+#define UNZ_MAXFILENAMEINZIP (256)
+#endif
+
+#ifndef ALLOC
+#define ALLOC(size) (malloc(size))
+#endif
+#ifndef TRYFREE
+#define TRYFREE(p) {if (p) free(p);}
+#endif
+
+#define SIZECENTRALDIRITEM (0x2e)
+#define SIZEZIPLOCALHEADER (0x1e)
+
+
+/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
+
+#ifndef SEEK_CUR
+#define SEEK_CUR 1
+#endif
+
+#ifndef SEEK_END
+#define SEEK_END 2
+#endif
+
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+
+/* unz_file_info_interntal contain internal info about a file in zipfile */
+typedef struct unz_file_info_internal_s
+{
+ uLong offset_curfile; /* relative offset of local header 4
+ * bytes */
+} unz_file_info_internal;
+
+
+/*
+ * file_in_zip_read_info_s contain internal information about a file in
+ * zipfile, when reading and decompress it
+ */
+typedef struct
+{
+ char *read_buffer;/* internal buffer for compressed data */
+ z_stream stream; /* zLib stream structure for inflate */
+
+ uLong pos_in_zipfile; /* position in byte on the zipfile,
+ * for fseek */
+ uLong stream_initialised; /* flag set if stream structure is
+ * initialised */
+
+ uLong offset_local_extrafield; /* offset of the local extra
+ * field */
+ uInt size_local_extrafield; /* size of the local extra
+ * field */
+ uLong pos_local_extrafield; /* position in the local
+ * extra field in read */
+
+ uLong crc32; /* crc32 of all data uncompressed */
+ uLong crc32_wait; /* crc32 we must obtain after decompress all */
+ uLong rest_read_compressed; /* number of byte to be
+ * decompressed */
+ uLong rest_read_uncompressed; /* number of byte to be
+ * obtained after decomp */
+ FILE *file; /* io structore of the zipfile */
+ uLong compression_method; /* compression method (0==store) */
+ uLong byte_before_the_zipfile; /* byte before the zipfile,
+ * (>0 for sfx) */
+} file_in_zip_read_info_s;
+
+
+/*
+ * unz_s contain internal information about the zipfile
+ */
+typedef struct
+{
+ FILE *file; /* io structore of the zipfile */
+ unz_global_info gi; /* public global information */
+ uLong byte_before_the_zipfile; /* byte before the zipfile,
+ * (>0 for sfx) */
+ uLong num_file; /* number of the current file in the zipfile */
+ uLong pos_in_central_dir; /* pos of the current file in the
+ * central dir */
+ uLong current_file_ok; /* flag about the usability of the
+ * current file */
+ uLong central_pos;/* position of the beginning of the central
+ * dir */
+
+ uLong size_central_dir; /* size of the central directory */
+ uLong offset_central_dir; /* offset of start of central
+ * directory with respect to the
+ * starting disk number */
+
+ unz_file_info cur_file_info; /* public info about the current file
+ * in zip */
+ unz_file_info_internal cur_file_info_internal; /* private info about it */
+ file_in_zip_read_info_s *pfile_in_zip_read; /* structure about the
+ * current file if we are
+ * decompressing it */
+} unz_s;
+
+#endif