Mercurial > hg > sv-dependency-builds
comparison src/zlib-1.2.7/contrib/minizip/unzip.h @ 4:e13257ea84a4
Add bzip2, zlib, liblo, portaudio sources
author | Chris Cannam |
---|---|
date | Wed, 20 Mar 2013 13:59:52 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3:6c505a35919a | 4:e13257ea84a4 |
---|---|
1 /* unzip.h -- IO for uncompress .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 of Unzip for Zip64 | |
8 Copyright (C) 2007-2008 Even Rouault | |
9 | |
10 Modifications for Zip64 support on both zip and unzip | |
11 Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) | |
12 | |
13 For more info read MiniZip_info.txt | |
14 | |
15 --------------------------------------------------------------------------------- | |
16 | |
17 Condition of use and distribution are the same than zlib : | |
18 | |
19 This software is provided 'as-is', without any express or implied | |
20 warranty. In no event will the authors be held liable for any damages | |
21 arising from the use of this software. | |
22 | |
23 Permission is granted to anyone to use this software for any purpose, | |
24 including commercial applications, and to alter it and redistribute it | |
25 freely, subject to the following restrictions: | |
26 | |
27 1. The origin of this software must not be misrepresented; you must not | |
28 claim that you wrote the original software. If you use this software | |
29 in a product, an acknowledgment in the product documentation would be | |
30 appreciated but is not required. | |
31 2. Altered source versions must be plainly marked as such, and must not be | |
32 misrepresented as being the original software. | |
33 3. This notice may not be removed or altered from any source distribution. | |
34 | |
35 --------------------------------------------------------------------------------- | |
36 | |
37 Changes | |
38 | |
39 See header of unzip64.c | |
40 | |
41 */ | |
42 | |
43 #ifndef _unz64_H | |
44 #define _unz64_H | |
45 | |
46 #ifdef __cplusplus | |
47 extern "C" { | |
48 #endif | |
49 | |
50 #ifndef _ZLIB_H | |
51 #include "zlib.h" | |
52 #endif | |
53 | |
54 #ifndef _ZLIBIOAPI_H | |
55 #include "ioapi.h" | |
56 #endif | |
57 | |
58 #ifdef HAVE_BZIP2 | |
59 #include "bzlib.h" | |
60 #endif | |
61 | |
62 #define Z_BZIP2ED 12 | |
63 | |
64 #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) | |
65 /* like the STRICT of WIN32, we define a pointer that cannot be converted | |
66 from (void*) without cast */ | |
67 typedef struct TagunzFile__ { int unused; } unzFile__; | |
68 typedef unzFile__ *unzFile; | |
69 #else | |
70 typedef voidp unzFile; | |
71 #endif | |
72 | |
73 | |
74 #define UNZ_OK (0) | |
75 #define UNZ_END_OF_LIST_OF_FILE (-100) | |
76 #define UNZ_ERRNO (Z_ERRNO) | |
77 #define UNZ_EOF (0) | |
78 #define UNZ_PARAMERROR (-102) | |
79 #define UNZ_BADZIPFILE (-103) | |
80 #define UNZ_INTERNALERROR (-104) | |
81 #define UNZ_CRCERROR (-105) | |
82 | |
83 /* tm_unz contain date/time info */ | |
84 typedef struct tm_unz_s | |
85 { | |
86 uInt tm_sec; /* seconds after the minute - [0,59] */ | |
87 uInt tm_min; /* minutes after the hour - [0,59] */ | |
88 uInt tm_hour; /* hours since midnight - [0,23] */ | |
89 uInt tm_mday; /* day of the month - [1,31] */ | |
90 uInt tm_mon; /* months since January - [0,11] */ | |
91 uInt tm_year; /* years - [1980..2044] */ | |
92 } tm_unz; | |
93 | |
94 /* unz_global_info structure contain global data about the ZIPfile | |
95 These data comes from the end of central dir */ | |
96 typedef struct unz_global_info64_s | |
97 { | |
98 ZPOS64_T number_entry; /* total number of entries in | |
99 the central dir on this disk */ | |
100 uLong size_comment; /* size of the global comment of the zipfile */ | |
101 } unz_global_info64; | |
102 | |
103 typedef struct unz_global_info_s | |
104 { | |
105 uLong number_entry; /* total number of entries in | |
106 the central dir on this disk */ | |
107 uLong size_comment; /* size of the global comment of the zipfile */ | |
108 } unz_global_info; | |
109 | |
110 /* unz_file_info contain information about a file in the zipfile */ | |
111 typedef struct unz_file_info64_s | |
112 { | |
113 uLong version; /* version made by 2 bytes */ | |
114 uLong version_needed; /* version needed to extract 2 bytes */ | |
115 uLong flag; /* general purpose bit flag 2 bytes */ | |
116 uLong compression_method; /* compression method 2 bytes */ | |
117 uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ | |
118 uLong crc; /* crc-32 4 bytes */ | |
119 ZPOS64_T compressed_size; /* compressed size 8 bytes */ | |
120 ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ | |
121 uLong size_filename; /* filename length 2 bytes */ | |
122 uLong size_file_extra; /* extra field length 2 bytes */ | |
123 uLong size_file_comment; /* file comment length 2 bytes */ | |
124 | |
125 uLong disk_num_start; /* disk number start 2 bytes */ | |
126 uLong internal_fa; /* internal file attributes 2 bytes */ | |
127 uLong external_fa; /* external file attributes 4 bytes */ | |
128 | |
129 tm_unz tmu_date; | |
130 } unz_file_info64; | |
131 | |
132 typedef struct unz_file_info_s | |
133 { | |
134 uLong version; /* version made by 2 bytes */ | |
135 uLong version_needed; /* version needed to extract 2 bytes */ | |
136 uLong flag; /* general purpose bit flag 2 bytes */ | |
137 uLong compression_method; /* compression method 2 bytes */ | |
138 uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ | |
139 uLong crc; /* crc-32 4 bytes */ | |
140 uLong compressed_size; /* compressed size 4 bytes */ | |
141 uLong uncompressed_size; /* uncompressed size 4 bytes */ | |
142 uLong size_filename; /* filename length 2 bytes */ | |
143 uLong size_file_extra; /* extra field length 2 bytes */ | |
144 uLong size_file_comment; /* file comment length 2 bytes */ | |
145 | |
146 uLong disk_num_start; /* disk number start 2 bytes */ | |
147 uLong internal_fa; /* internal file attributes 2 bytes */ | |
148 uLong external_fa; /* external file attributes 4 bytes */ | |
149 | |
150 tm_unz tmu_date; | |
151 } unz_file_info; | |
152 | |
153 extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, | |
154 const char* fileName2, | |
155 int iCaseSensitivity)); | |
156 /* | |
157 Compare two filename (fileName1,fileName2). | |
158 If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) | |
159 If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi | |
160 or strcasecmp) | |
161 If iCaseSenisivity = 0, case sensitivity is defaut of your operating system | |
162 (like 1 on Unix, 2 on Windows) | |
163 */ | |
164 | |
165 | |
166 extern unzFile ZEXPORT unzOpen OF((const char *path)); | |
167 extern unzFile ZEXPORT unzOpen64 OF((const void *path)); | |
168 /* | |
169 Open a Zip file. path contain the full pathname (by example, | |
170 on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer | |
171 "zlib/zlib113.zip". | |
172 If the zipfile cannot be opened (file don't exist or in not valid), the | |
173 return value is NULL. | |
174 Else, the return value is a unzFile Handle, usable with other function | |
175 of this unzip package. | |
176 the "64" function take a const void* pointer, because the path is just the | |
177 value passed to the open64_file_func callback. | |
178 Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path | |
179 is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* | |
180 does not describe the reality | |
181 */ | |
182 | |
183 | |
184 extern unzFile ZEXPORT unzOpen2 OF((const char *path, | |
185 zlib_filefunc_def* pzlib_filefunc_def)); | |
186 /* | |
187 Open a Zip file, like unzOpen, but provide a set of file low level API | |
188 for read/write the zip file (see ioapi.h) | |
189 */ | |
190 | |
191 extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, | |
192 zlib_filefunc64_def* pzlib_filefunc_def)); | |
193 /* | |
194 Open a Zip file, like unz64Open, but provide a set of file low level API | |
195 for read/write the zip file (see ioapi.h) | |
196 */ | |
197 | |
198 extern int ZEXPORT unzClose OF((unzFile file)); | |
199 /* | |
200 Close a ZipFile opened with unzipOpen. | |
201 If there is files inside the .Zip opened with unzOpenCurrentFile (see later), | |
202 these files MUST be closed with unzipCloseCurrentFile before call unzipClose. | |
203 return UNZ_OK if there is no problem. */ | |
204 | |
205 extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, | |
206 unz_global_info *pglobal_info)); | |
207 | |
208 extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, | |
209 unz_global_info64 *pglobal_info)); | |
210 /* | |
211 Write info about the ZipFile in the *pglobal_info structure. | |
212 No preparation of the structure is needed | |
213 return UNZ_OK if there is no problem. */ | |
214 | |
215 | |
216 extern int ZEXPORT unzGetGlobalComment OF((unzFile file, | |
217 char *szComment, | |
218 uLong uSizeBuf)); | |
219 /* | |
220 Get the global comment string of the ZipFile, in the szComment buffer. | |
221 uSizeBuf is the size of the szComment buffer. | |
222 return the number of byte copied or an error code <0 | |
223 */ | |
224 | |
225 | |
226 /***************************************************************************/ | |
227 /* Unzip package allow you browse the directory of the zipfile */ | |
228 | |
229 extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); | |
230 /* | |
231 Set the current file of the zipfile to the first file. | |
232 return UNZ_OK if there is no problem | |
233 */ | |
234 | |
235 extern int ZEXPORT unzGoToNextFile OF((unzFile file)); | |
236 /* | |
237 Set the current file of the zipfile to the next file. | |
238 return UNZ_OK if there is no problem | |
239 return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. | |
240 */ | |
241 | |
242 extern int ZEXPORT unzLocateFile OF((unzFile file, | |
243 const char *szFileName, | |
244 int iCaseSensitivity)); | |
245 /* | |
246 Try locate the file szFileName in the zipfile. | |
247 For the iCaseSensitivity signification, see unzStringFileNameCompare | |
248 | |
249 return value : | |
250 UNZ_OK if the file is found. It becomes the current file. | |
251 UNZ_END_OF_LIST_OF_FILE if the file is not found | |
252 */ | |
253 | |
254 | |
255 /* ****************************************** */ | |
256 /* Ryan supplied functions */ | |
257 /* unz_file_info contain information about a file in the zipfile */ | |
258 typedef struct unz_file_pos_s | |
259 { | |
260 uLong pos_in_zip_directory; /* offset in zip file directory */ | |
261 uLong num_of_file; /* # of file */ | |
262 } unz_file_pos; | |
263 | |
264 extern int ZEXPORT unzGetFilePos( | |
265 unzFile file, | |
266 unz_file_pos* file_pos); | |
267 | |
268 extern int ZEXPORT unzGoToFilePos( | |
269 unzFile file, | |
270 unz_file_pos* file_pos); | |
271 | |
272 typedef struct unz64_file_pos_s | |
273 { | |
274 ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ | |
275 ZPOS64_T num_of_file; /* # of file */ | |
276 } unz64_file_pos; | |
277 | |
278 extern int ZEXPORT unzGetFilePos64( | |
279 unzFile file, | |
280 unz64_file_pos* file_pos); | |
281 | |
282 extern int ZEXPORT unzGoToFilePos64( | |
283 unzFile file, | |
284 const unz64_file_pos* file_pos); | |
285 | |
286 /* ****************************************** */ | |
287 | |
288 extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, | |
289 unz_file_info64 *pfile_info, | |
290 char *szFileName, | |
291 uLong fileNameBufferSize, | |
292 void *extraField, | |
293 uLong extraFieldBufferSize, | |
294 char *szComment, | |
295 uLong commentBufferSize)); | |
296 | |
297 extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, | |
298 unz_file_info *pfile_info, | |
299 char *szFileName, | |
300 uLong fileNameBufferSize, | |
301 void *extraField, | |
302 uLong extraFieldBufferSize, | |
303 char *szComment, | |
304 uLong commentBufferSize)); | |
305 /* | |
306 Get Info about the current file | |
307 if pfile_info!=NULL, the *pfile_info structure will contain somes info about | |
308 the current file | |
309 if szFileName!=NULL, the filemane string will be copied in szFileName | |
310 (fileNameBufferSize is the size of the buffer) | |
311 if extraField!=NULL, the extra field information will be copied in extraField | |
312 (extraFieldBufferSize is the size of the buffer). | |
313 This is the Central-header version of the extra field | |
314 if szComment!=NULL, the comment string of the file will be copied in szComment | |
315 (commentBufferSize is the size of the buffer) | |
316 */ | |
317 | |
318 | |
319 /** Addition for GDAL : START */ | |
320 | |
321 extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); | |
322 | |
323 /** Addition for GDAL : END */ | |
324 | |
325 | |
326 /***************************************************************************/ | |
327 /* for reading the content of the current zipfile, you can open it, read data | |
328 from it, and close it (you can close it before reading all the file) | |
329 */ | |
330 | |
331 extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); | |
332 /* | |
333 Open for reading data the current file in the zipfile. | |
334 If there is no error, the return value is UNZ_OK. | |
335 */ | |
336 | |
337 extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, | |
338 const char* password)); | |
339 /* | |
340 Open for reading data the current file in the zipfile. | |
341 password is a crypting password | |
342 If there is no error, the return value is UNZ_OK. | |
343 */ | |
344 | |
345 extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, | |
346 int* method, | |
347 int* level, | |
348 int raw)); | |
349 /* | |
350 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) | |
351 if raw==1 | |
352 *method will receive method of compression, *level will receive level of | |
353 compression | |
354 note : you can set level parameter as NULL (if you did not want known level, | |
355 but you CANNOT set method parameter as NULL | |
356 */ | |
357 | |
358 extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, | |
359 int* method, | |
360 int* level, | |
361 int raw, | |
362 const char* password)); | |
363 /* | |
364 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) | |
365 if raw==1 | |
366 *method will receive method of compression, *level will receive level of | |
367 compression | |
368 note : you can set level parameter as NULL (if you did not want known level, | |
369 but you CANNOT set method parameter as NULL | |
370 */ | |
371 | |
372 | |
373 extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); | |
374 /* | |
375 Close the file in zip opened with unzOpenCurrentFile | |
376 Return UNZ_CRCERROR if all the file was read but the CRC is not good | |
377 */ | |
378 | |
379 extern int ZEXPORT unzReadCurrentFile OF((unzFile file, | |
380 voidp buf, | |
381 unsigned len)); | |
382 /* | |
383 Read bytes from the current file (opened by unzOpenCurrentFile) | |
384 buf contain buffer where data must be copied | |
385 len the size of buf. | |
386 | |
387 return the number of byte copied if somes bytes are copied | |
388 return 0 if the end of file was reached | |
389 return <0 with error code if there is an error | |
390 (UNZ_ERRNO for IO error, or zLib error for uncompress error) | |
391 */ | |
392 | |
393 extern z_off_t ZEXPORT unztell OF((unzFile file)); | |
394 | |
395 extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); | |
396 /* | |
397 Give the current position in uncompressed data | |
398 */ | |
399 | |
400 extern int ZEXPORT unzeof OF((unzFile file)); | |
401 /* | |
402 return 1 if the end of file was reached, 0 elsewhere | |
403 */ | |
404 | |
405 extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, | |
406 voidp buf, | |
407 unsigned len)); | |
408 /* | |
409 Read extra field from the current file (opened by unzOpenCurrentFile) | |
410 This is the local-header version of the extra field (sometimes, there is | |
411 more info in the local-header version than in the central-header) | |
412 | |
413 if buf==NULL, it return the size of the local extra field | |
414 | |
415 if buf!=NULL, len is the size of the buffer, the extra header is copied in | |
416 buf. | |
417 the return value is the number of bytes copied in buf, or (if <0) | |
418 the error code | |
419 */ | |
420 | |
421 /***************************************************************************/ | |
422 | |
423 /* Get the current file offset */ | |
424 extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file); | |
425 extern uLong ZEXPORT unzGetOffset (unzFile file); | |
426 | |
427 /* Set the current file offset */ | |
428 extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos); | |
429 extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); | |
430 | |
431 | |
432 | |
433 #ifdef __cplusplus | |
434 } | |
435 #endif | |
436 | |
437 #endif /* _unz64_H */ |