1
/* zip.h -- IO for compress .zip files using zlib
2
Version 1.01e, February 12th, 2005
4
Copyright (C) 1998-2005 Gilles Vollant
6
This unzip package allow creates .ZIP file, compatible with PKZip 2.04g
7
WinZip, InfoZip tools and compatible.
8
Multi volume ZipFile (span) are not supported.
9
Encryption compatible with pkzip 2.04g only supported
10
Old compressions used by old PKZip 1.x are not supported
12
For uncompress .zip file, look at unzip.h
15
I WAIT FEEDBACK at mail info@winimage.com
16
Visit also http://www.winimage.com/zLibDll/unzip.html for evolution
18
Condition of use and distribution are the same than zlib :
20
This software is provided 'as-is', without any express or implied
21
warranty. In no event will the authors be held liable for any damages
22
arising from the use of this software.
24
Permission is granted to anyone to use this software for any purpose,
25
including commercial applications, and to alter it and redistribute it
26
freely, subject to the following restrictions:
28
1. The origin of this software must not be misrepresented; you must not
29
claim that you wrote the original software. If you use this software
30
in a product, an acknowledgment in the product documentation would be
31
appreciated but is not required.
32
2. Altered source versions must be plainly marked as such, and must not be
33
misrepresented as being the original software.
34
3. This notice may not be removed or altered from any source distribution.
39
/* for more info about .ZIP format, see
40
http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip
41
http://www.info-zip.org/pub/infozip/doc/
42
PkWare has also a specification at :
43
ftp://ftp.pkware.com/probdesc.zip
61
#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
62
/* like the STRICT of WIN32, we define a pointer that cannot be converted
63
from (void*) without cast */
64
typedef struct TagzipFile__ { int unused; } zipFile__;
65
typedef zipFile__ *zipFile;
67
typedef voidp zipFile;
72
#define ZIP_ERRNO (Z_ERRNO)
73
#define ZIP_PARAMERROR (-102)
74
#define ZIP_BADZIPFILE (-103)
75
#define ZIP_INTERNALERROR (-104)
78
# if MAX_MEM_LEVEL >= 8
79
# define DEF_MEM_LEVEL 8
81
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
84
/* default memLevel */
86
/* tm_zip contain date/time info */
87
typedef struct tm_zip_s
89
uInt tm_sec; /* seconds after the minute - [0,59] */
90
uInt tm_min; /* minutes after the hour - [0,59] */
91
uInt tm_hour; /* hours since midnight - [0,23] */
92
uInt tm_mday; /* day of the month - [1,31] */
93
uInt tm_mon; /* months since January - [0,11] */
94
uInt tm_year; /* years - [1980..2044] */
99
tm_zip tmz_date; /* date in understandable format */
100
uLong dosDate; /* if dos_date == 0, tmu_date is used */
101
/* uLong flag; */ /* general purpose bit flag 2 bytes */
103
uLong internal_fa; /* internal file attributes 2 bytes */
104
uLong external_fa; /* external file attributes 4 bytes */
107
typedef const char* zipcharpc;
110
#define APPEND_STATUS_CREATE (0)
111
#define APPEND_STATUS_CREATEAFTER (1)
112
#define APPEND_STATUS_ADDINZIP (2)
114
extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
117
pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
118
an Unix computer "zlib/zlib113.zip".
119
if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
120
will be created at the end of the file.
121
(useful if the file contain a self extractor code)
122
if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
123
add files in existing zip (be sure you don't add file that doesn't exist)
124
If the zipfile cannot be opened, the return value is NULL.
125
Else, the return value is a zipFile Handle, usable with other function
129
/* Note : there is no delete function into a zipfile.
130
If you want delete file into a zipfile, you must open a zipfile, and create another
131
Of couse, you can use RAW reading and writing to copy the file you did not want delte
134
extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
136
zipcharpc* globalcomment,
137
zlib_filefunc_def* pzlib_filefunc_def));
139
extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
140
const char* filename,
141
const zip_fileinfo* zipfi,
142
const void* extrafield_local,
143
uInt size_extrafield_local,
144
const void* extrafield_global,
145
uInt size_extrafield_global,
150
Open a file in the ZIP for writing.
151
filename : the filename in zip (if NULL, '-' without quote will be used
152
*zipfi contain supplemental information
153
if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
154
contains the extrafield data the the local header
155
if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
156
contains the extrafield data the the local header
157
if comment != NULL, comment contain the comment string
158
method contain the compression method (0 for store, Z_DEFLATED for deflate)
159
level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
163
extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
164
const char* filename,
165
const zip_fileinfo* zipfi,
166
const void* extrafield_local,
167
uInt size_extrafield_local,
168
const void* extrafield_global,
169
uInt size_extrafield_global,
176
Same than zipOpenNewFileInZip, except if raw=1, we write raw file
179
extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
180
const char* filename,
181
const zip_fileinfo* zipfi,
182
const void* extrafield_local,
183
uInt size_extrafield_local,
184
const void* extrafield_global,
185
uInt size_extrafield_global,
193
const char* password,
194
uLong crcForCtypting));
197
Same than zipOpenNewFileInZip2, except
198
windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
199
password : crypting password (NULL for no crypting)
200
crcForCtypting : crc of file to compress (needed for crypting)
204
extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
208
Write data in the zipfile
211
extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
213
Close the current file in the zipfile
216
extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
217
uLong uncompressed_size,
220
Close the current file in the zipfile, for fiel opened with
221
parameter raw=1 in zipOpenNewFileInZip2
222
uncompressed_size and crc32 are value for the uncompressed size
225
extern int ZEXPORT zipClose OF((zipFile file,
226
const char* global_comment));