1381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes/* zip.h -- IO on .zip files using zlib
2381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes   Version 1.1, February 14h, 2010
3381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes   part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
49e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
5381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes         Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
69e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
7381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes         Modifications for Zip64 support
8381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
99e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
10381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes         For more info read MiniZip_info.txt
119e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
12381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes         ---------------------------------------------------------------------------
139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project   Condition of use and distribution are the same than zlib :
159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  This software is provided 'as-is', without any express or implied
179e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  warranty.  In no event will the authors be held liable for any damages
189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  arising from the use of this software.
199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Permission is granted to anyone to use this software for any purpose,
219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  including commercial applications, and to alter it and redistribute it
229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  freely, subject to the following restrictions:
239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  1. The origin of this software must not be misrepresented; you must not
259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     claim that you wrote the original software. If you use this software
269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     in a product, an acknowledgment in the product documentation would be
279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     appreciated but is not required.
289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  2. Altered source versions must be plainly marked as such, and must not be
299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     misrepresented as being the original software.
309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  3. This notice may not be removed or altered from any source distribution.
319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
32381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes        ---------------------------------------------------------------------------
339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
34381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes        Changes
35381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
36381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes        See header of zip.h
379e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
389e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
399e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
40381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#ifndef _zip12_H
41381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#define _zip12_H
429e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
439e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#ifdef __cplusplus
449e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern "C" {
459e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
469e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
47381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes//#define HAVE_BZIP2
48381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
499e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#ifndef _ZLIB_H
509e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#include "zlib.h"
519e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
529e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
539e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#ifndef _ZLIBIOAPI_H
549e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#include "ioapi.h"
559e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
569e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
57381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#ifdef HAVE_BZIP2
58381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#include "bzlib.h"
59381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#endif
60381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
61381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#define Z_BZIP2ED 12
62381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
639e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
649e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* like the STRICT of WIN32, we define a pointer that cannot be converted
659e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    from (void*) without cast */
669e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef struct TagzipFile__ { int unused; } zipFile__;
679e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef zipFile__ *zipFile;
689e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#else
699e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef voidp zipFile;
709e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
719e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
729e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_OK                          (0)
739e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_EOF                         (0)
749e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_ERRNO                       (Z_ERRNO)
759e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_PARAMERROR                  (-102)
769e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_BADZIPFILE                  (-103)
779e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define ZIP_INTERNALERROR               (-104)
789e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
799e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#ifndef DEF_MEM_LEVEL
809e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#  if MAX_MEM_LEVEL >= 8
819e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#    define DEF_MEM_LEVEL 8
829e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#  else
839e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#    define DEF_MEM_LEVEL  MAX_MEM_LEVEL
849e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#  endif
859e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
869e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* default memLevel */
879e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
889e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* tm_zip contain date/time info */
899e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef struct tm_zip_s
909e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{
919e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_sec;            /* seconds after the minute - [0,59] */
929e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_min;            /* minutes after the hour - [0,59] */
939e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_hour;           /* hours since midnight - [0,23] */
949e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_mday;           /* day of the month - [1,31] */
959e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_mon;            /* months since January - [0,11] */
969e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uInt tm_year;           /* years - [1980..2044] */
979e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} tm_zip;
989e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
999e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef struct
1009e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{
1019e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    tm_zip      tmz_date;       /* date in understandable format           */
1029e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uLong       dosDate;       /* if dos_date == 0, tmu_date is used      */
1039e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*    uLong       flag;        */   /* general purpose bit flag        2 bytes */
1049e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1059e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uLong       internal_fa;    /* internal file attributes        2 bytes */
1069e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    uLong       external_fa;    /* external file attributes        4 bytes */
1079e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} zip_fileinfo;
1089e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1099e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projecttypedef const char* zipcharpc;
1109e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1119e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define APPEND_STATUS_CREATE        (0)
1139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define APPEND_STATUS_CREATEAFTER   (1)
1149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#define APPEND_STATUS_ADDINZIP      (2)
1159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
117381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
1189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
1199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Create a zipfile.
1209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
1219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project       an Unix computer "zlib/zlib113.zip".
1229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
1239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project       will be created at the end of the file.
1249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project         (useful if the file contain a self extractor code)
1259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
1269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project       add files in existing zip (be sure you don't add file that doesn't exist)
1279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     If the zipfile cannot be opened, the return value is NULL.
1289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project     Else, the return value is a zipFile Handle, usable with other function
1299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project       of this zip package.
1309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
1319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1329e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/* Note : there is no delete function into a zipfile.
1339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project   If you want delete file into a zipfile, you must open a zipfile, and create another
1349e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project   Of couse, you can use RAW reading and writing to copy the file you did not want delte
1359e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
1369e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1379e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
1389e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                   int append,
1399e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                   zipcharpc* globalcomment,
1409e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                   zlib_filefunc_def* pzlib_filefunc_def));
1419e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
142381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
143381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                   int append,
144381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                   zipcharpc* globalcomment,
145381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                   zlib_filefunc64_def* pzlib_filefunc_def));
146381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
1479e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
1489e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const char* filename,
1499e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const zip_fileinfo* zipfi,
1509e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const void* extrafield_local,
1519e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       uInt size_extrafield_local,
1529e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const void* extrafield_global,
1539e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       uInt size_extrafield_global,
1549e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const char* comment,
1559e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       int method,
1569e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       int level));
157381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
158381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
159381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       const char* filename,
160381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       const zip_fileinfo* zipfi,
161381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       const void* extrafield_local,
162381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       uInt size_extrafield_local,
163381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       const void* extrafield_global,
164381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       uInt size_extrafield_global,
165381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       const char* comment,
166381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       int method,
167381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       int level,
168381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                       int zip64));
169381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
1709e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
1719e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Open a file in the ZIP for writing.
1729e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  filename : the filename in zip (if NULL, '-' without quote will be used
1739e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  *zipfi contain supplemental information
1749e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
1759e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    contains the extrafield data the the local header
1769e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
1779e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    contains the extrafield data the the local header
1789e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  if comment != NULL, comment contain the comment string
1799e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  method contain the compression method (0 for store, Z_DEFLATED for deflate)
1809e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
181381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  zip64 is set to 1 if a zip64 extended information block should be added to the local file header.
182381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                    this MUST be '1' if the uncompressed size is >= 0xffffffff.
183381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
1849e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
1859e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1869e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
1879e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
1889e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const char* filename,
1899e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const zip_fileinfo* zipfi,
1909e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const void* extrafield_local,
1919e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uInt size_extrafield_local,
1929e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const void* extrafield_global,
1939e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uInt size_extrafield_global,
1949e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const char* comment,
1959e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int method,
1969e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int level,
1979e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int raw));
1989e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
199381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
200381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
201381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* filename,
202381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const zip_fileinfo* zipfi,
203381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_local,
204381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_local,
205381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_global,
206381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_global,
207381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* comment,
208381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int method,
209381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int level,
210381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int raw,
211381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int zip64));
2129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
2139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Same than zipOpenNewFileInZip, except if raw=1, we write raw file
2149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project */
2159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
2169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
2179e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const char* filename,
2189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const zip_fileinfo* zipfi,
2199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const void* extrafield_local,
2209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uInt size_extrafield_local,
2219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const void* extrafield_global,
2229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uInt size_extrafield_global,
2239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const char* comment,
2249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int method,
2259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int level,
2269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int raw,
2279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int windowBits,
2289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int memLevel,
2299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            int strategy,
2309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            const char* password,
231381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong crcForCrypting));
232381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
233381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
234381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* filename,
235381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const zip_fileinfo* zipfi,
236381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_local,
237381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_local,
238381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_global,
239381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_global,
240381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* comment,
241381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int method,
242381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int level,
243381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int raw,
244381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int windowBits,
245381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int memLevel,
246381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int strategy,
247381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* password,
248381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong crcForCrypting,
249381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int zip64
250381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            ));
2519e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
2529e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
2539e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Same than zipOpenNewFileInZip2, except
2549e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
2559e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    password : crypting password (NULL for no crypting)
256381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes    crcForCrypting : crc of file to compress (needed for crypting)
257381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes */
258381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
259381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
260381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* filename,
261381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const zip_fileinfo* zipfi,
262381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_local,
263381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_local,
264381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_global,
265381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_global,
266381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* comment,
267381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int method,
268381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int level,
269381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int raw,
270381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int windowBits,
271381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int memLevel,
272381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int strategy,
273381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* password,
274381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong crcForCrypting,
275381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong versionMadeBy,
276381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong flagBase
277381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            ));
278381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
279381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
280381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
281381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* filename,
282381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const zip_fileinfo* zipfi,
283381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_local,
284381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_local,
285381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const void* extrafield_global,
286381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uInt size_extrafield_global,
287381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* comment,
288381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int method,
289381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int level,
290381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int raw,
291381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int windowBits,
292381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int memLevel,
293381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int strategy,
294381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            const char* password,
295381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong crcForCrypting,
296381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong versionMadeBy,
297381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong flagBase,
298381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            int zip64
299381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            ));
300381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes/*
301381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  Same than zipOpenNewFileInZip4, except
302381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes    versionMadeBy : value for Version made by field
303381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes    flag : value for flag field (compression level info will be added)
3049e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project */
3059e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
3069e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
3079e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
3089e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       const void* buf,
3099e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                       unsigned len));
3109e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
3119e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Write data in the zipfile
3129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
3139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
3149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipCloseFileInZip OF((zipFile file));
3159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
3169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Close the current file in the zipfile
3179e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
3189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
3199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
3209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uLong uncompressed_size,
3219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                                            uLong crc32));
322381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
323381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
324381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            ZPOS64_T uncompressed_size,
325381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                                            uLong crc32));
326381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
3279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
328381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  Close the current file in the zipfile, for file opened with
3299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project    parameter raw=1 in zipOpenNewFileInZip2
3309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  uncompressed_size and crc32 are value for the uncompressed size
3319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
3329e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
3339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectextern int ZEXPORT zipClose OF((zipFile file,
3349e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project                const char* global_comment));
3359e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project/*
3369e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project  Close the zipfile
3379e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project*/
3389e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
339381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
340381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesextern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
341381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes/*
342381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  zipRemoveExtraInfoBlock -  Added by Mathias Svensson
343381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
344381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  Remove extra information block from a extra information data for the local file header or central directory header
345381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
346381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode.
347381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
348381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  0x0001 is the signature header for the ZIP64 extra information blocks
349381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
350381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes  usage.
351381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                        Remove ZIP64 Extra information from a central director extra field data
352381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes              zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001);
353381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
354381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes                        Remove ZIP64 Extra information from a Local File Header extra field data
355381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes        zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001);
356381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes*/
357381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes
3589e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#ifdef __cplusplus
3599e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project}
3609e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif
3619e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project
362381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#endif /* _zip64_H */
363