15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* unzip.h -- IO for uncompress .zip files using zlib
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Version 1.1, February 14h, 2010
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Modifications of Unzip for Zip64
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Copyright (C) 2007-2008 Even Rouault
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Modifications for Zip64 support on both zip and unzip
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         For more info read MiniZip_info.txt
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         ---------------------------------------------------------------------------------
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        Condition of use and distribution are the same than zlib :
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  This software is provided 'as-is', without any express or implied
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  warranty.  In no event will the authors be held liable for any damages
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  arising from the use of this software.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Permission is granted to anyone to use this software for any purpose,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  including commercial applications, and to alter it and redistribute it
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  freely, subject to the following restrictions:
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  1. The origin of this software must not be misrepresented; you must not
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     claim that you wrote the original software. If you use this software
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     in a product, an acknowledgment in the product documentation would be
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     appreciated but is not required.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  2. Altered source versions must be plainly marked as such, and must not be
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     misrepresented as being the original software.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  3. This notice may not be removed or altered from any source distribution.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ---------------------------------------------------------------------------------
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        Changes
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        See header of unzip64.c
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _unz64_H
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _unz64_H
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _ZLIB_H
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/zlib/zlib.h"
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef  _ZLIBIOAPI_H
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ioapi.h"
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_BZIP2
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "bzlib.h"
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define Z_BZIP2ED 12
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* like the STRICT of WIN32, we define a pointer that cannot be converted
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    from (void*) without cast */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct TagunzFile__ { int unused; } unzFile__;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unzFile__ *unzFile;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef voidp unzFile;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_OK                          (0)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_END_OF_LIST_OF_FILE         (-100)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_ERRNO                       (Z_ERRNO)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_EOF                         (0)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_PARAMERROR                  (-102)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_BADZIPFILE                  (-103)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_INTERNALERROR               (-104)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UNZ_CRCERROR                    (-105)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* tm_unz contain date/time info */
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct tm_unz_s
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_sec;            /* seconds after the minute - [0,59] */
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_min;            /* minutes after the hour - [0,59] */
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_hour;           /* hours since midnight - [0,23] */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_mday;           /* day of the month - [1,31] */
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_mon;            /* months since January - [0,11] */
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_year;           /* years - [1980..2044] */
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} tm_unz;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* unz_global_info structure contain global data about the ZIPfile
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   These data comes from the end of central dir */
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz_global_info64_s
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZPOS64_T number_entry;         /* total number of entries in
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     the central dir on this disk */
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_comment;         /* size of the global comment of the zipfile */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz_global_info64;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz_global_info_s
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong number_entry;         /* total number of entries in
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     the central dir on this disk */
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_comment;         /* size of the global comment of the zipfile */
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz_global_info;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* unz_file_info contain information about a file in the zipfile */
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz_file_info64_s
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong version;              /* version made by                 2 bytes */
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong version_needed;       /* version needed to extract       2 bytes */
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong flag;                 /* general purpose bit flag        2 bytes */
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong compression_method;   /* compression method              2 bytes */
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong dosDate;              /* last mod file date in Dos fmt   4 bytes */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong crc;                  /* crc-32                          4 bytes */
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZPOS64_T compressed_size;   /* compressed size                 8 bytes */
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZPOS64_T uncompressed_size; /* uncompressed size               8 bytes */
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_filename;        /* filename length                 2 bytes */
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_file_extra;      /* extra field length              2 bytes */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_file_comment;    /* file comment length             2 bytes */
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong disk_num_start;       /* disk number start               2 bytes */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong internal_fa;          /* internal file attributes        2 bytes */
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong external_fa;          /* external file attributes        4 bytes */
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    tm_unz tmu_date;
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz_file_info64;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz_file_info_s
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong version;              /* version made by                 2 bytes */
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong version_needed;       /* version needed to extract       2 bytes */
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong flag;                 /* general purpose bit flag        2 bytes */
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong compression_method;   /* compression method              2 bytes */
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong dosDate;              /* last mod file date in Dos fmt   4 bytes */
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong crc;                  /* crc-32                          4 bytes */
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong compressed_size;      /* compressed size                 4 bytes */
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong uncompressed_size;    /* uncompressed size               4 bytes */
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_filename;        /* filename length                 2 bytes */
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_file_extra;      /* extra field length              2 bytes */
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong size_file_comment;    /* file comment length             2 bytes */
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong disk_num_start;       /* disk number start               2 bytes */
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong internal_fa;          /* internal file attributes        2 bytes */
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong external_fa;          /* external file attributes        4 bytes */
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    tm_unz tmu_date;
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz_file_info;
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 const char* fileName2,
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 int iCaseSensitivity));
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Compare two filename (fileName1,fileName2).
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                or strcasecmp)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (like 1 on Unix, 2 on Windows)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern unzFile ZEXPORT unzOpen OF((const char *path));
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern unzFile ZEXPORT unzOpen64 OF((const void *path));
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Open a Zip file. path contain the full pathname (by example,
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     "zlib/zlib113.zip".
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     If the zipfile cannot be opened (file don't exist or in not valid), the
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       return value is NULL.
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     Else, the return value is a unzFile Handle, usable with other function
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       of this unzip package.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     the "64" function take a const void* pointer, because the path is just the
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       value passed to the open64_file_func callback.
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char*
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       does not describe the reality
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern unzFile ZEXPORT unzOpen2 OF((const char *path,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    zlib_filefunc_def* pzlib_filefunc_def));
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Open a Zip file, like unzOpen, but provide a set of file low level API
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for read/write the zip file (see ioapi.h)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    zlib_filefunc64_def* pzlib_filefunc_def));
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Open a Zip file, like unz64Open, but provide a set of file low level API
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for read/write the zip file (see ioapi.h)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzClose OF((unzFile file));
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Close a ZipFile opened with unzipOpen.
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UNZ_OK if there is no problem. */
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        unz_global_info *pglobal_info));
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        unz_global_info64 *pglobal_info));
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Write info about the ZipFile in the *pglobal_info structure.
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  No preparation of the structure is needed
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UNZ_OK if there is no problem. */
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           char *szComment,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           uLong uSizeBuf));
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Get the global comment string of the ZipFile, in the szComment buffer.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uSizeBuf is the size of the szComment buffer.
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return the number of byte copied or an error code <0
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/***************************************************************************/
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Unzip package allow you browse the directory of the zipfile */
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Set the current file of the zipfile to the first file.
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UNZ_OK if there is no problem
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGoToNextFile OF((unzFile file));
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Set the current file of the zipfile to the next file.
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UNZ_OK if there is no problem
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzLocateFile OF((unzFile file,
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     const char *szFileName,
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int iCaseSensitivity));
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Try locate the file szFileName in the zipfile.
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  For the iCaseSensitivity signification, see unzStringFileNameCompare
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return value :
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNZ_OK if the file is found. It becomes the current file.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNZ_END_OF_LIST_OF_FILE if the file is not found
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* ****************************************** */
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Ryan supplied functions */
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* unz_file_info contain information about a file in the zipfile */
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz_file_pos_s
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong pos_in_zip_directory;   /* offset in zip file directory */
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong num_of_file;            /* # of file */
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz_file_pos;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetFilePos(
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unzFile file,
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unz_file_pos* file_pos);
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGoToFilePos(
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unzFile file,
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unz_file_pos* file_pos);
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct unz64_file_pos_s
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZPOS64_T pos_in_zip_directory;   /* offset in zip file directory */
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZPOS64_T num_of_file;            /* # of file */
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} unz64_file_pos;
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetFilePos64(
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unzFile file,
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unz64_file_pos* file_pos);
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGoToFilePos64(
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unzFile file,
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const unz64_file_pos* file_pos);
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* ****************************************** */
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         unz_file_info64 *pfile_info,
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         char *szFileName,
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong fileNameBufferSize,
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         void *extraField,
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong extraFieldBufferSize,
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         char *szComment,
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong commentBufferSize));
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         unz_file_info *pfile_info,
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         char *szFileName,
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong fileNameBufferSize,
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         void *extraField,
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong extraFieldBufferSize,
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         char *szComment,
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uLong commentBufferSize));
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Get Info about the current file
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if pfile_info!=NULL, the *pfile_info structure will contain somes info about
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        the current file
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if szFileName!=NULL, the filemane string will be copied in szFileName
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            (fileNameBufferSize is the size of the buffer)
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if extraField!=NULL, the extra field information will be copied in extraField
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            (extraFieldBufferSize is the size of the buffer).
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            This is the Central-header version of the extra field
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if szComment!=NULL, the comment string of the file will be copied in szComment
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            (commentBufferSize is the size of the buffer)
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** Addition for GDAL : START */
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** Addition for GDAL : END */
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/***************************************************************************/
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* for reading the content of the current zipfile, you can open it, read data
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   from it, and close it (you can close it before reading all the file)
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Open for reading data the current file in the zipfile.
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  If there is no error, the return value is UNZ_OK.
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  const char* password));
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Open for reading data the current file in the zipfile.
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  password is a crypting password
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  If there is no error, the return value is UNZ_OK.
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int* method,
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int* level,
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int raw));
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if raw==1
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *method will receive method of compression, *level will receive level of
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     compression
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  note : you can set level parameter as NULL (if you did not want known level,
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         but you CANNOT set method parameter as NULL
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int* method,
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int* level,
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           int raw,
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           const char* password));
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if raw==1
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *method will receive method of compression, *level will receive level of
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     compression
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  note : you can set level parameter as NULL (if you did not want known level,
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         but you CANNOT set method parameter as NULL
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Close the file in zip opened with unzOpenCurrentFile
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Return UNZ_CRCERROR if all the file was read but the CRC is not good
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      voidp buf,
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      unsigned len));
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Read bytes from the current file (opened by unzOpenCurrentFile)
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buf contain buffer where data must be copied
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  len the size of buf.
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return the number of byte copied if somes bytes are copied
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0 if the end of file was reached
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return <0 with error code if there is an error
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (UNZ_ERRNO for IO error, or zLib error for uncompress error)
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern z_off_t ZEXPORT unztell OF((unzFile file));
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Give the current position in uncompressed data
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzeof OF((unzFile file));
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 1 if the end of file was reached, 0 elsewhere
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             voidp buf,
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             unsigned len));
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Read extra field from the current file (opened by unzOpenCurrentFile)
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  This is the local-header version of the extra field (sometimes, there is
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    more info in the local-header version than in the central-header)
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if buf==NULL, it return the size of the local extra field
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if buf!=NULL, len is the size of the buffer, the extra header is copied in
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    buf.
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  the return value is the number of bytes copied in buf, or (if <0)
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    the error code
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/***************************************************************************/
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Get the current file offset */
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file);
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern uLong ZEXPORT unzGetOffset (unzFile file);
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Set the current file offset */
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos);
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _unz64_H */
438