GDAL
cpl_minizip_zip.h
1 /******************************************************************************
2  * $Id$
3  *
4  * Project: CPL - Common Portability Library
5  * Author: Frank Warmerdam, warmerdam@pobox.com
6  * Purpose: Adjusted minizip "zip.h" include file for zip services.
7  *
8  * Modified version by Even Rouault. :
9  * - Decoration of symbol names unz* -> cpl_unz*
10  * - Undef EXPORT so that we are sure the symbols are not exported
11  * - Remove old C style function prototypes
12  * - Added CPL* simplified API at bottom.
13  *
14  * Original licence available in port/LICENCE_minizip
15  *
16  *****************************************************************************/
17 
18 /* zip.h -- IO for compress .zip files using zlib
19  Version 1.01e, February 12th, 2005
20 
21  Copyright (C) 1998-2005 Gilles Vollant
22 
23  This unzip package allow creates .ZIP file, compatible with PKZip 2.04g
24  WinZip, InfoZip tools and compatible.
25  Multi volume ZipFile (span) are not supported.
26  Encryption compatible with pkzip 2.04g only supported
27  Old compressions used by old PKZip 1.x are not supported
28 
29  For uncompress .zip file, look at unzip.h
30 
31  I WAIT FEEDBACK at mail info@winimage.com
32  Visit also http://www.winimage.com/zLibDll/unzip.html for evolution
33 
34  Condition of use and distribution are the same than zlib :
35 
36  This software is provided 'as-is', without any express or implied
37  warranty. In no event will the authors be held liable for any damages
38  arising from the use of this software.
39 
40  Permission is granted to anyone to use this software for any purpose,
41  including commercial applications, and to alter it and redistribute it
42  freely, subject to the following restrictions:
43 
44  1. The origin of this software must not be misrepresented; you must not
45  claim that you wrote the original software. If you use this software
46  in a product, an acknowledgment in the product documentation would be
47  appreciated but is not required.
48  2. Altered source versions must be plainly marked as such, and must not be
49  misrepresented as being the original software.
50  3. This notice may not be removed or altered from any source distribution.
51 */
52 
53 /* for more info about .ZIP format, see
54  http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip
55  http://www.info-zip.org/pub/infozip/doc/
56  PkWare has also a specification at :
57  ftp://ftp.pkware.com/probdesc.zip
58 */
59 
60 #ifndef CPL_MINIZIP_ZIP_H_INCLUDED
61 #define CPL_MINIZIP_ZIP_H_INCLUDED
62 
63 #ifndef DOXYGEN_SKIP
64 
65 #include "cpl_vsi.h"
66 #define uLong64 vsi_l_offset
67 typedef vsi_l_offset ZPOS64_T;
68 
69 #ifdef __cplusplus
70 extern "C" {
71 #endif
72 
73 #ifndef _ZLIB_H
74 #include "zlib.h"
75 #endif
76 
77 #ifndef CPL_MINIZIP_IOAPI_H_INCLUDED
78 #include "cpl_minizip_ioapi.h"
79 #endif
80 
81 #define NOCRYPT
82 #undef ZEXPORT
83 #define ZEXPORT
84 
85 #if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
86 /* like the STRICT of WIN32, we define a pointer that cannot be converted
87  from (void*) without cast */
88 typedef struct TagzipFile__ { int unused; } zipFile__;
89 typedef zipFile__ *zipFile;
90 #else
91 typedef voidp zipFile;
92 #endif
93 
94 #define ZIP_OK (0)
95 #define ZIP_EOF (0)
96 #define ZIP_ERRNO (Z_ERRNO)
97 #define ZIP_PARAMERROR (-102)
98 #define ZIP_BADZIPFILE (-103)
99 #define ZIP_INTERNALERROR (-104)
100 
101 #ifndef DEF_MEM_LEVEL
102 # if MAX_MEM_LEVEL >= 8
103 # define DEF_MEM_LEVEL 8
104 # else
105 # define DEF_MEM_LEVEL MAX_MEM_LEVEL
106 # endif
107 #endif
108 /* default memLevel */
109 
110 /* tm_zip contain date/time info */
111 typedef struct tm_zip_s
112 {
113  uInt tm_sec; /* seconds after the minute - [0,59] */
114  uInt tm_min; /* minutes after the hour - [0,59] */
115  uInt tm_hour; /* hours since midnight - [0,23] */
116  uInt tm_mday; /* day of the month - [1,31] */
117  uInt tm_mon; /* months since January - [0,11] */
118  uInt tm_year; /* years - [1980..2044] */
119 } tm_zip;
120 
121 typedef struct
122 {
123  tm_zip tmz_date; /* date in understandable format */
124  uLong dosDate; /* if dos_date == 0, tmu_date is used */
125 /* uLong flag; */ /* general purpose bit flag 2 bytes */
126 
127  uLong internal_fa; /* internal file attributes 2 bytes */
128  uLong external_fa; /* external file attributes 4 bytes */
129 } zip_fileinfo;
130 
131 typedef const char* zipcharpc;
132 
133 #define APPEND_STATUS_CREATE (0)
134 #define APPEND_STATUS_CREATEAFTER (1)
135 #define APPEND_STATUS_ADDINZIP (2)
136 
137 extern zipFile ZEXPORT cpl_zipOpen (const char *pathname, int append);
138 /*
139  Create a zipfile.
140  pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
141  an Unix computer "zlib/zlib113.zip".
142  if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
143  will be created at the end of the file.
144  (useful if the file contain a self extractor code)
145  if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
146  add files in existing zip (be sure you don't add file that doesn't exist)
147  If the zipfile cannot be opened, the return value is NULL.
148  Else, the return value is a zipFile Handle, usable with other function
149  of this zip package.
150 */
151 
152 /* Note : there is no delete function for a zipfile.
153  If you want delete file in a zipfile, you must open a zipfile, and create another.
154  Of course, you can use RAW reading and writing to copy the file you did not want delete.
155 */
156 
157 extern zipFile ZEXPORT cpl_zipOpen2 (const char *pathname,
158  int append,
159  zipcharpc* globalcomment,
160  zlib_filefunc_def* pzlib_filefunc_def);
161 
162 extern int ZEXPORT cpl_zipOpenNewFileInZip (zipFile file,
163  const char* filename,
164  const zip_fileinfo* zipfi,
165  const void* extrafield_local,
166  uInt size_extrafield_local,
167  const void* extrafield_global,
168  uInt size_extrafield_global,
169  const char* comment,
170  int method,
171  int level);
172 /*
173  Open a file in the ZIP for writing.
174  filename : the filename in zip (if NULL, '-' without quote will be used
175  *zipfi contain supplemental information
176  if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
177  contains the extrafield data the local header
178  if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
179  contains the extrafield data the local header
180  if comment != NULL, comment contain the comment string
181  method contain the compression method (0 for store, Z_DEFLATED for deflate)
182  level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
183 */
184 
185 extern int ZEXPORT cpl_zipOpenNewFileInZip2 (zipFile file,
186  const char* filename,
187  const zip_fileinfo* zipfi,
188  const void* extrafield_local,
189  uInt size_extrafield_local,
190  const void* extrafield_global,
191  uInt size_extrafield_global,
192  const char* comment,
193  int method,
194  int level,
195  int raw);
196 
197 /*
198  Same than zipOpenNewFileInZip, except if raw=1, we write raw file
199  */
200 
201 extern int ZEXPORT cpl_zipOpenNewFileInZip3 (zipFile file,
202  const char* filename,
203  const zip_fileinfo* zipfi,
204  const void* extrafield_local,
205  uInt size_extrafield_local,
206  const void* extrafield_global,
207  uInt size_extrafield_global,
208  const char* comment,
209  int method,
210  int level,
211  int raw,
212  int windowBits,
213  int memLevel,
214  int strategy,
215  const char* password,
216  uLong crcForCtypting);
217 
218 /*
219  Same than zipOpenNewFileInZip2, except
220  windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
221  password : crypting password (NULL for no crypting)
222  crcForCtypting : crc of file to compress (needed for crypting)
223  */
224 
225 extern int ZEXPORT cpl_zipWriteInFileInZip (zipFile file,
226  const void* buf,
227  unsigned len);
228 /*
229  Write data in the zipfile
230 */
231 
232 extern int ZEXPORT cpl_zipCloseFileInZip (zipFile file);
233 /*
234  Close the current file in the zipfile
235 */
236 
237 extern int ZEXPORT cpl_zipCloseFileInZipRaw (zipFile file,
238  ZPOS64_T uncompressed_size,
239  uLong crc32);
240 /*
241  Close the current file in the zipfile, for file opened with
242  parameter raw=1 in zipOpenNewFileInZip2
243  uncompressed_size and crc32 are value for the uncompressed size
244 */
245 
246 extern int ZEXPORT cpl_zipClose (zipFile file,
247  const char* global_comment);
248 /*
249  Close the zipfile
250 */
251 
252 #ifdef __cplusplus
253 }
254 #endif
255 
256 #endif /* #ifndef DOXYGEN_SKIP */
257 
258 #endif /* _zip_H */
Standard C Covers.
GUIntBig vsi_l_offset
Type for a file offset.
Definition: cpl_vsi.h:139

Generated for GDAL by doxygen 1.8.8.