15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* zip.h -- IO on .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 for Zip64 support
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         For more info read MiniZip_info.txt
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         ---------------------------------------------------------------------------
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Condition of use and distribution are the same than zlib :
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  This software is provided 'as-is', without any express or implied
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  warranty.  In no event will the authors be held liable for any damages
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  arising from the use of this software.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Permission is granted to anyone to use this software for any purpose,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  including commercial applications, and to alter it and redistribute it
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  freely, subject to the following restrictions:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  1. The origin of this software must not be misrepresented; you must not
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     claim that you wrote the original software. If you use this software
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     in a product, an acknowledgment in the product documentation would be
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     appreciated but is not required.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  2. Altered source versions must be plainly marked as such, and must not be
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     misrepresented as being the original software.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  3. This notice may not be removed or altered from any source distribution.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ---------------------------------------------------------------------------
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        Changes
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        See header of zip.h
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _zip12_H
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _zip12_H
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define HAVE_BZIP2
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _ZLIB_H
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/zlib/zlib.h"
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _ZLIBIOAPI_H
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ioapi.h"
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_BZIP2
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "bzlib.h"
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define Z_BZIP2ED 12
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* like the STRICT of WIN32, we define a pointer that cannot be converted
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    from (void*) without cast */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct TagzipFile__ { int unused; } zipFile__;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef zipFile__ *zipFile;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef voidp zipFile;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_OK                          (0)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_EOF                         (0)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_ERRNO                       (Z_ERRNO)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_PARAMERROR                  (-102)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_BADZIPFILE                  (-103)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZIP_INTERNALERROR               (-104)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DEF_MEM_LEVEL
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  if MAX_MEM_LEVEL >= 8
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define DEF_MEM_LEVEL 8
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  else
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define DEF_MEM_LEVEL  MAX_MEM_LEVEL
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* default memLevel */
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* tm_zip contain date/time info */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct tm_zip_s
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_sec;            /* seconds after the minute - [0,59] */
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_min;            /* minutes after the hour - [0,59] */
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_hour;           /* hours since midnight - [0,23] */
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_mday;           /* day of the month - [1,31] */
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_mon;            /* months since January - [0,11] */
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uInt tm_year;           /* years - [1980..2044] */
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} tm_zip;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    tm_zip      tmz_date;       /* date in understandable format           */
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong       dosDate;       /* if dos_date == 0, tmu_date is used      */
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*    uLong       flag;        */   /* general purpose bit flag        2 bytes */
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong       internal_fa;    /* internal file attributes        2 bytes */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    uLong       external_fa;    /* external file attributes        4 bytes */
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} zip_fileinfo;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef const char* zipcharpc;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define APPEND_STATUS_CREATE        (0)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define APPEND_STATUS_CREATEAFTER   (1)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define APPEND_STATUS_ADDINZIP      (2)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Create a zipfile.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       an Unix computer "zlib/zlib113.zip".
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       will be created at the end of the file.
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         (useful if the file contain a self extractor code)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       add files in existing zip (be sure you don't add file that doesn't exist)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     If the zipfile cannot be opened, the return value is NULL.
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     Else, the return value is a zipFile Handle, usable with other function
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       of this zip package.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Note : there is no delete function into a zipfile.
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If you want delete file into a zipfile, you must open a zipfile, and create another
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Of couse, you can use RAW reading and writing to copy the file you did not want delte
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int append,
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   zipcharpc* globalcomment,
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   zlib_filefunc_def* pzlib_filefunc_def));
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int append,
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   zipcharpc* globalcomment,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   zlib_filefunc64_def* pzlib_filefunc_def));
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const char* filename,
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const zip_fileinfo* zipfi,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const void* extrafield_local,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       uInt size_extrafield_local,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const void* extrafield_global,
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       uInt size_extrafield_global,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const char* comment,
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int method,
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int level));
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const char* filename,
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const zip_fileinfo* zipfi,
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const void* extrafield_local,
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       uInt size_extrafield_local,
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const void* extrafield_global,
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       uInt size_extrafield_global,
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const char* comment,
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int method,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int level,
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int zip64));
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Open a file in the ZIP for writing.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  filename : the filename in zip (if NULL, '-' without quote will be used
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *zipfi contain supplemental information
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    contains the extrafield data the the local header
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    contains the extrafield data the the local header
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if comment != NULL, comment contain the comment string
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  method contain the compression method (0 for store, Z_DEFLATED for deflate)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  zip64 is set to 1 if a zip64 extended information block should be added to the local file header.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    this MUST be '1' if the uncompressed size is >= 0xffffffff.
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw));
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int zip64));
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Same than zipOpenNewFileInZip, except if raw=1, we write raw file
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw,
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int windowBits,
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int memLevel,
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int strategy,
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* password,
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crcForCrypting));
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw,
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int windowBits,
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int memLevel,
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int strategy,
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* password,
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crcForCrypting,
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int zip64
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            ));
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Same than zipOpenNewFileInZip2, except
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    password : crypting password (NULL for no crypting)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    crcForCrypting : crc of file to compress (needed for crypting)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw,
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int windowBits,
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int memLevel,
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int strategy,
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* password,
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crcForCrypting,
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong versionMadeBy,
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong flagBase
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            ));
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* filename,
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const zip_fileinfo* zipfi,
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_local,
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_local,
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const void* extrafield_global,
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uInt size_extrafield_global,
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* comment,
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int method,
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int level,
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int raw,
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int windowBits,
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int memLevel,
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int strategy,
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            const char* password,
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crcForCrypting,
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong versionMadeBy,
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong flagBase,
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            int zip64
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            ));
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Same than zipOpenNewFileInZip4, except
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    versionMadeBy : value for Version made by field
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    flag : value for flag field (compression level info will be added)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const void* buf,
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       unsigned len));
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Write data in the zipfile
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Close the current file in the zipfile
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong uncompressed_size,
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crc32));
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            ZPOS64_T uncompressed_size,
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            uLong crc32));
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Close the current file in the zipfile, for file opened with
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    parameter raw=1 in zipOpenNewFileInZip2
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uncompressed_size and crc32 are value for the uncompressed size
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipClose OF((zipFile file,
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                const char* global_comment));
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Close the zipfile
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  zipRemoveExtraInfoBlock -  Added by Mathias Svensson
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Remove extra information block from a extra information data for the local file header or central directory header
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode.
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x0001 is the signature header for the ZIP64 extra information blocks
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  usage.
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        Remove ZIP64 Extra information from a central director extra field data
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001);
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        Remove ZIP64 Extra information from a Local File Header extra field data
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001);
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _zip64_H */
363