ReactOS  0.4.14-dev-115-g4576127
zip.h
Go to the documentation of this file.
1 /* zip.h -- IO on .zip files using zlib
2  Version 1.1, February 14h, 2010
3  part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
4 
5  Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
6 
7  Modifications for Zip64 support
8  Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
9 
10  For more info read MiniZip_info.txt
11 
12  ---------------------------------------------------------------------------
13 
14  Condition of use and distribution are the same than zlib :
15 
16  This software is provided 'as-is', without any express or implied
17  warranty. In no event will the authors be held liable for any damages
18  arising from the use of this software.
19 
20  Permission is granted to anyone to use this software for any purpose,
21  including commercial applications, and to alter it and redistribute it
22  freely, subject to the following restrictions:
23 
24  1. The origin of this software must not be misrepresented; you must not
25  claim that you wrote the original software. If you use this software
26  in a product, an acknowledgment in the product documentation would be
27  appreciated but is not required.
28  2. Altered source versions must be plainly marked as such, and must not be
29  misrepresented as being the original software.
30  3. This notice may not be removed or altered from any source distribution.
31 
32  ---------------------------------------------------------------------------
33 
34  Changes
35 
36  See header of zip.h
37 
38 */
39 
40 #ifndef _zip12_H
41 #define _zip12_H
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 //#define HAVE_BZIP2
48 
49 #ifndef _ZLIB_H
50 #include "zlib.h"
51 #endif
52 
53 #ifndef _ZLIBIOAPI_H
54 #include "ioapi.h"
55 #endif
56 
57 #ifdef HAVE_BZIP2
58 #include "bzlib.h"
59 #endif
60 
61 #define Z_BZIP2ED 12
62 
63 #if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
64 /* like the STRICT of WIN32, we define a pointer that cannot be converted
65  from (void*) without cast */
66 typedef struct TagzipFile__ { int unused; } zipFile__;
67 typedef zipFile__ *zipFile;
68 #else
69 typedef voidp zipFile;
70 #endif
71 
72 #define ZIP_OK (0)
73 #define ZIP_EOF (0)
74 #define ZIP_ERRNO (Z_ERRNO)
75 #define ZIP_PARAMERROR (-102)
76 #define ZIP_BADZIPFILE (-103)
77 #define ZIP_INTERNALERROR (-104)
78 
79 #ifndef DEF_MEM_LEVEL
80 # if MAX_MEM_LEVEL >= 8
81 # define DEF_MEM_LEVEL 8
82 # else
83 # define DEF_MEM_LEVEL MAX_MEM_LEVEL
84 # endif
85 #endif
86 /* default memLevel */
87 
88 /* tm_zip contain date/time info */
89 typedef struct tm_zip_s
90 {
91  uInt tm_sec; /* seconds after the minute - [0,59] */
92  uInt tm_min; /* minutes after the hour - [0,59] */
93  uInt tm_hour; /* hours since midnight - [0,23] */
94  uInt tm_mday; /* day of the month - [1,31] */
95  uInt tm_mon; /* months since January - [0,11] */
96  uInt tm_year; /* years - [1980..2044] */
97 } tm_zip;
98 
99 typedef struct
100 {
101  tm_zip tmz_date; /* date in understandable format */
102  uLong dosDate; /* if dos_date == 0, tmu_date is used */
103 /* uLong flag; */ /* general purpose bit flag 2 bytes */
104 
105  uLong internal_fa; /* internal file attributes 2 bytes */
106  uLong external_fa; /* external file attributes 4 bytes */
107 } zip_fileinfo;
108 
109 typedef const char* zipcharpc;
110 
111 
112 #define APPEND_STATUS_CREATE (0)
113 #define APPEND_STATUS_CREATEAFTER (1)
114 #define APPEND_STATUS_ADDINZIP (2)
115 
116 extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
117 extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
118 /*
119  Create a zipfile.
120  pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
121  an Unix computer "zlib/zlib113.zip".
122  if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
123  will be created at the end of the file.
124  (useful if the file contain a self extractor code)
125  if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
126  add files in existing zip (be sure you don't add file that doesn't exist)
127  If the zipfile cannot be opened, the return value is NULL.
128  Else, the return value is a zipFile Handle, usable with other function
129  of this zip package.
130 */
131 
132 /* Note : there is no delete function into a zipfile.
133  If you want delete file into a zipfile, you must open a zipfile, and create another
134  Of couse, you can use RAW reading and writing to copy the file you did not want delte
135 */
136 
137 extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
138  int append,
139  zipcharpc* globalcomment,
140  zlib_filefunc_def* pzlib_filefunc_def));
141 
142 extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
143  int append,
144  zipcharpc* globalcomment,
145  zlib_filefunc64_def* pzlib_filefunc_def));
146 
148  const char* filename,
149  const zip_fileinfo* zipfi,
150  const void* extrafield_local,
151  uInt size_extrafield_local,
152  const void* extrafield_global,
153  uInt size_extrafield_global,
154  const char* comment,
155  int method,
156  int level));
157 
159  const char* filename,
160  const zip_fileinfo* zipfi,
161  const void* extrafield_local,
162  uInt size_extrafield_local,
163  const void* extrafield_global,
164  uInt size_extrafield_global,
165  const char* comment,
166  int method,
167  int level,
168  int zip64));
169 
170 /*
171  Open a file in the ZIP for writing.
172  filename : the filename in zip (if NULL, '-' without quote will be used
173  *zipfi contain supplemental information
174  if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
175  contains the extrafield data the the local header
176  if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
177  contains the extrafield data the the local header
178  if comment != NULL, comment contain the comment string
179  method contain the compression method (0 for store, Z_DEFLATED for deflate)
180  level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
181  zip64 is set to 1 if a zip64 extended information block should be added to the local file header.
182  this MUST be '1' if the uncompressed size is >= 0xffffffff.
183 
184 */
185 
186 
188  const char* filename,
189  const zip_fileinfo* zipfi,
190  const void* extrafield_local,
191  uInt size_extrafield_local,
192  const void* extrafield_global,
193  uInt size_extrafield_global,
194  const char* comment,
195  int method,
196  int level,
197  int raw));
198 
199 
201  const char* filename,
202  const zip_fileinfo* zipfi,
203  const void* extrafield_local,
204  uInt size_extrafield_local,
205  const void* extrafield_global,
206  uInt size_extrafield_global,
207  const char* comment,
208  int method,
209  int level,
210  int raw,
211  int zip64));
212 /*
213  Same than zipOpenNewFileInZip, except if raw=1, we write raw file
214  */
215 
217  const char* filename,
218  const zip_fileinfo* zipfi,
219  const void* extrafield_local,
220  uInt size_extrafield_local,
221  const void* extrafield_global,
222  uInt size_extrafield_global,
223  const char* comment,
224  int method,
225  int level,
226  int raw,
227  int windowBits,
228  int memLevel,
229  int strategy,
230  const char* password,
231  uLong crcForCrypting));
232 
234  const char* filename,
235  const zip_fileinfo* zipfi,
236  const void* extrafield_local,
237  uInt size_extrafield_local,
238  const void* extrafield_global,
239  uInt size_extrafield_global,
240  const char* comment,
241  int method,
242  int level,
243  int raw,
244  int windowBits,
245  int memLevel,
246  int strategy,
247  const char* password,
248  uLong crcForCrypting,
249  int zip64
250  ));
251 
252 /*
253  Same than zipOpenNewFileInZip2, except
254  windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
255  password : crypting password (NULL for no crypting)
256  crcForCrypting : crc of file to compress (needed for crypting)
257  */
258 
260  const char* filename,
261  const zip_fileinfo* zipfi,
262  const void* extrafield_local,
263  uInt size_extrafield_local,
264  const void* extrafield_global,
265  uInt size_extrafield_global,
266  const char* comment,
267  int method,
268  int level,
269  int raw,
270  int windowBits,
271  int memLevel,
272  int strategy,
273  const char* password,
274  uLong crcForCrypting,
275  uLong versionMadeBy,
276  uLong flagBase
277  ));
278 
279 
281  const char* filename,
282  const zip_fileinfo* zipfi,
283  const void* extrafield_local,
284  uInt size_extrafield_local,
285  const void* extrafield_global,
286  uInt size_extrafield_global,
287  const char* comment,
288  int method,
289  int level,
290  int raw,
291  int windowBits,
292  int memLevel,
293  int strategy,
294  const char* password,
295  uLong crcForCrypting,
296  uLong versionMadeBy,
297  uLong flagBase,
298  int zip64
299  ));
300 /*
301  Same than zipOpenNewFileInZip4, except
302  versionMadeBy : value for Version made by field
303  flag : value for flag field (compression level info will be added)
304  */
305 
306 
308  const void* buf,
309  unsigned len));
310 /*
311  Write data in the zipfile
312 */
313 
314 extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
315 /*
316  Close the current file in the zipfile
317 */
318 
320  uLong uncompressed_size,
321  uLong crc32));
322 
324  ZPOS64_T uncompressed_size,
325  uLong crc32));
326 
327 /*
328  Close the current file in the zipfile, for file opened with
329  parameter raw=1 in zipOpenNewFileInZip2
330  uncompressed_size and crc32 are value for the uncompressed size
331 */
332 
333 extern int ZEXPORT zipClose OF((zipFile file,
334  const char* global_comment));
335 /*
336  Close the zipfile
337 */
338 
339 
340 extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
341 /*
342  zipRemoveExtraInfoBlock - Added by Mathias Svensson
343 
344  Remove extra information block from a extra information data for the local file header or central directory header
345 
346  It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode.
347 
348  0x0001 is the signature header for the ZIP64 extra information blocks
349 
350  usage.
351  Remove ZIP64 Extra information from a central director extra field data
352  zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001);
353 
354  Remove ZIP64 Extra information from a Local File Header extra field data
355  zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001);
356 */
357 
358 #ifdef __cplusplus
359 }
360 #endif
361 
362 #endif /* _zip64_H */
GLint level
Definition: gl.h:1546
uLong dosDate
Definition: zip.h:102
uLong internal_fa
Definition: zip.h:105
int windowBits
Definition: zlib.h:813
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32)
Definition: zip.c:1521
int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw)
Definition: zip.c:1318
char pathname[512]
Definition: util.h:13
uInt tm_mday
Definition: zip.h:94
int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting)
Definition: zip.c:1288
Definition: zip.h:89
uint32_t crc32
Definition: btrfs.c:4163
static void append(struct dump_context *dc, const void *data, unsigned size)
Definition: minidump.c:380
const char * filename
Definition: ioapi.h:135
int ZEXPORT zipRemoveExtraInfoBlock(char *pData, int *dataLen, short sHeader)
Definition: zip.c:1958
zipFile ZEXPORT zipOpen(const char *pathname, int append)
Definition: zip.c:955
uLong external_fa
Definition: zip.h:106
int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32)
Definition: zip.c:1516
int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int zip64)
Definition: zip.c:1344
WORD unused[29]
Definition: crypt.c:1155
struct tm_zip_s tm_zip
zipFile ZEXPORT zipOpen2(const char *pathname, int append, zipcharpc *globalcomment, zlib_filefunc_def *pzlib_filefunc32_def)
Definition: zip.c:926
int ZEXPORT zipWriteInFileInZip(zipFile file, const void *buf, unsigned int len)
Definition: zip.c:1409
voidp zipFile
Definition: zip.h:69
unsigned long uLong
Definition: zconf.h:394
unsigned long long int ZPOS64_T
Definition: ioapi.h:100
uInt tm_mon
Definition: zip.h:95
method
Definition: dragdrop.c:53
T1_FIELD_DICT_PRIVATE password
Definition: t1tokens.h:64
Byte * voidp
Definition: zconf.h:414
Definition: id3.c:18
GLenum GLsizei len
Definition: glext.h:6722
int ZEXPORT zipOpenNewFileInZip(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level)
Definition: zip.c:1357
uInt tm_year
Definition: zip.h:96
zipFile ZEXPORT zipOpen64(const void *pathname, int append)
Definition: zip.c:960
int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, int zip64)
Definition: zip.c:1303
uInt tm_sec
Definition: zip.h:91
int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int zip64)
Definition: zip.c:1331
zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, zipcharpc *globalcomment, zlib_filefunc64_def *pzlib_filefunc_def)
Definition: zip.c:939
zipFile ZEXPORT zipOpen OF((const char *pathname, int append))
int ZEXPORT zipCloseFileInZip(zipFile file)
Definition: zip.c:1757
const char * zipcharpc
Definition: zip.h:109
tm_zip tmz_date
Definition: zip.h:101
int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase)
Definition: zip.c:1272
int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64)
Definition: zip.c:1062
uInt tm_hour
Definition: zip.h:93
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
#define ZEXPORT
Definition: zconf.h:380
int ZEXPORT zipClose(zipFile file, const char *global_comment)
Definition: zip.c:1889
uInt tm_min
Definition: zip.h:92
unsigned int uInt
Definition: zconf.h:393
Definition: fci.c:126