Ignite Tools
Shared/Airship/External/UA_ZipFile-OC/UA_minizip/UA_unzip.h
00001 /* unzip.h -- IO for uncompress .zip files using zlib
00002    Version 1.01e, February 12th, 2005
00003 
00004    Copyright (C) 1998-2005 Gilles Vollant
00005 
00006    This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g
00007      WinZip, InfoZip tools and compatible.
00008 
00009    Multi volume ZipFile (span) are not supported.
00010    Encryption compatible with pkzip 2.04g only supported
00011    Old compressions used by old PKZip 1.x are not supported
00012 
00013 
00014    I WAIT FEEDBACK at mail info@winimage.com
00015    Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution
00016 
00017    Condition of use and distribution are the same than zlib :
00018 
00019   This software is provided 'as-is', without any express or implied
00020   warranty.  In no event will the authors be held liable for any damages
00021   arising from the use of this software.
00022 
00023   Permission is granted to anyone to use this software for any purpose,
00024   including commercial applications, and to alter it and redistribute it
00025   freely, subject to the following restrictions:
00026 
00027   1. The origin of this software must not be misrepresented; you must not
00028      claim that you wrote the original software. If you use this software
00029      in a product, an acknowledgment in the product documentation would be
00030      appreciated but is not required.
00031   2. Altered source versions must be plainly marked as such, and must not be
00032      misrepresented as being the original software.
00033   3. This notice may not be removed or altered from any source distribution.
00034 
00035 
00036 */
00037 
00038 /* for more info about .ZIP format, see
00039       http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip
00040       http://www.info-zip.org/pub/infozip/doc/
00041    PkWare has also a specification at :
00042       ftp://ftp.pkware.com/probdesc.zip
00043 */
00044 
00045 #ifndef _unz_H
00046 #define _unz_H
00047 
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #endif
00051 
00052 #ifndef _ZLIB_H
00053 #include "zlib.h"
00054 #endif
00055 
00056 #ifndef _ZLIBIOAPI_H
00057 #include "UA_ioapi.h"
00058 #endif
00059 
00060 #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
00061 /* like the STRICT of WIN32, we define a pointer that cannot be converted
00062     from (void*) without cast */
00063 typedef struct TagunzFile__ { int unused; } unzFile__;
00064 typedef unzFile__ *unzFile;
00065 #else
00066 typedef voidp unzFile;
00067 #endif
00068 
00069 
00070 #define UNZ_OK                          (0)
00071 #define UNZ_END_OF_LIST_OF_FILE         (-100)
00072 #define UNZ_ERRNO                       (Z_ERRNO)
00073 #define UNZ_EOF                         (0)
00074 #define UNZ_PARAMERROR                  (-102)
00075 #define UNZ_BADZIPFILE                  (-103)
00076 #define UNZ_INTERNALERROR               (-104)
00077 #define UNZ_CRCERROR                    (-105)
00078 
00079 /* tm_unz contain date/time info */
00080 typedef struct tm_unz_s
00081 {
00082     uInt tm_sec;            /* seconds after the minute - [0,59] */
00083     uInt tm_min;            /* minutes after the hour - [0,59] */
00084     uInt tm_hour;           /* hours since midnight - [0,23] */
00085     uInt tm_mday;           /* day of the month - [1,31] */
00086     uInt tm_mon;            /* months since January - [0,11] */
00087     uInt tm_year;           /* years - [1980..2044] */
00088 } tm_unz;
00089 
00090 /* unz_global_info structure contain global data about the ZIPfile
00091    These data comes from the end of central dir */
00092 typedef struct unz_global_info_s
00093 {
00094     uLong number_entry;         /* total number of entries in
00095                        the central dir on this disk */
00096     uLong size_comment;         /* size of the global comment of the zipfile */
00097 } unz_global_info;
00098 
00099 
00100 /* unz_file_info contain information about a file in the zipfile */
00101 typedef struct unz_file_info_s
00102 {
00103     uLong version;              /* version made by                 2 bytes */
00104     uLong version_needed;       /* version needed to extract       2 bytes */
00105     uLong flag;                 /* general purpose bit flag        2 bytes */
00106     uLong compression_method;   /* compression method              2 bytes */
00107     uLong dosDate;              /* last mod file date in Dos fmt   4 bytes */
00108     uLong crc;                  /* crc-32                          4 bytes */
00109     uLong compressed_size;      /* compressed size                 4 bytes */
00110     uLong uncompressed_size;    /* uncompressed size               4 bytes */
00111     uLong size_filename;        /* filename length                 2 bytes */
00112     uLong size_file_extra;      /* extra field length              2 bytes */
00113     uLong size_file_comment;    /* file comment length             2 bytes */
00114 
00115     uLong disk_num_start;       /* disk number start               2 bytes */
00116     uLong internal_fa;          /* internal file attributes        2 bytes */
00117     uLong external_fa;          /* external file attributes        4 bytes */
00118 
00119     tm_unz tmu_date;
00120 } unz_file_info;
00121 
00122 extern int ZEXPORT UA_unzStringFileNameCompare OF ((const char* fileName1,
00123                                                  const char* fileName2,
00124                                                  int iCaseSensitivity));
00125 /*
00126    Compare two filename (fileName1,fileName2).
00127    If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
00128    If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
00129                                 or strcasecmp)
00130    If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
00131     (like 1 on Unix, 2 on Windows)
00132 */
00133 
00134 
00135 extern unzFile ZEXPORT UA_unzOpen OF((const char *path));
00136 /*
00137   Open a Zip file. path contain the full pathname (by example,
00138      on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
00139      "zlib/zlib113.zip".
00140      If the zipfile cannot be opened (file don't exist or in not valid), the
00141        return value is NULL.
00142      Else, the return value is a unzFile Handle, usable with other function
00143        of this unzip package.
00144 */
00145 
00146 extern unzFile ZEXPORT UA_unzOpen2 OF((const char *path,
00147                                     zlib_filefunc_def* pzlib_filefunc_def));
00148 /*
00149    Open a Zip file, like UA_unzOpen, but provide a set of file low level API
00150       for read/write the zip file (see ioapi.h)
00151 */
00152 
00153 extern int ZEXPORT UA_unzClose OF((unzFile file));
00154 /*
00155   Close a ZipFile opened with unzipOpen.
00156   If there is files inside the .Zip opened with UA_unzOpenCurrentFile (see later),
00157     these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
00158   return UNZ_OK if there is no problem. */
00159 
00160 extern int ZEXPORT UA_unzGetGlobalInfo OF((unzFile file,
00161                                         unz_global_info *pglobal_info));
00162 /*
00163   Write info about the ZipFile in the *pglobal_info structure.
00164   No preparation of the structure is needed
00165   return UNZ_OK if there is no problem. */
00166 
00167 
00168 extern int ZEXPORT UA_unzGetGlobalComment OF((unzFile file,
00169                                            char *szComment,
00170                                            uLong uSizeBuf));
00171 /*
00172   Get the global comment string of the ZipFile, in the szComment buffer.
00173   uSizeBuf is the size of the szComment buffer.
00174   return the number of byte copied or an error code <0
00175 */
00176 
00177 
00178 /***************************************************************************/
00179 /* Unzip package allow you browse the directory of the zipfile */
00180 
00181 extern int ZEXPORT UA_unzGoToFirstFile OF((unzFile file));
00182 /*
00183   Set the current file of the zipfile to the first file.
00184   return UNZ_OK if there is no problem
00185 */
00186 
00187 extern int ZEXPORT UA_unzGoToNextFile OF((unzFile file));
00188 /*
00189   Set the current file of the zipfile to the next file.
00190   return UNZ_OK if there is no problem
00191   return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
00192 */
00193 
00194 extern int ZEXPORT UA_unzLocateFile OF((unzFile file,
00195                      const char *szFileName,
00196                      int iCaseSensitivity));
00197 /*
00198   Try locate the file szFileName in the zipfile.
00199   For the iCaseSensitivity signification, see UA_unzStringFileNameCompare
00200 
00201   return value :
00202   UNZ_OK if the file is found. It becomes the current file.
00203   UNZ_END_OF_LIST_OF_FILE if the file is not found
00204 */
00205 
00206 
00207 /* ****************************************** */
00208 /* Ryan supplied functions */
00209 /* unz_file_info contain information about a file in the zipfile */
00210 typedef struct unz_file_pos_s
00211 {
00212     uLong pos_in_zip_directory;   /* offset in zip file directory */
00213     uLong num_of_file;            /* # of file */
00214 } unz_file_pos;
00215 
00216 extern int ZEXPORT UA_unzGetFilePos(
00217     unzFile file,
00218     unz_file_pos* file_pos);
00219 
00220 extern int ZEXPORT UA_unzGoToFilePos(
00221     unzFile file,
00222     unz_file_pos* file_pos);
00223 
00224 /* ****************************************** */
00225 
00226 extern int ZEXPORT UA_unzGetCurrentFileInfo OF((unzFile file,
00227                          unz_file_info *pfile_info,
00228                          char *szFileName,
00229                          uLong fileNameBufferSize,
00230                          void *extraField,
00231                          uLong extraFieldBufferSize,
00232                          char *szComment,
00233                          uLong commentBufferSize));
00234 /*
00235   Get Info about the current file
00236   if pfile_info!=NULL, the *pfile_info structure will contain somes info about
00237         the current file
00238   if szFileName!=NULL, the filemane string will be copied in szFileName
00239             (fileNameBufferSize is the size of the buffer)
00240   if extraField!=NULL, the extra field information will be copied in extraField
00241             (extraFieldBufferSize is the size of the buffer).
00242             This is the Central-header version of the extra field
00243   if szComment!=NULL, the comment string of the file will be copied in szComment
00244             (commentBufferSize is the size of the buffer)
00245 */
00246 
00247 /***************************************************************************/
00248 /* for reading the content of the current zipfile, you can open it, read data
00249    from it, and close it (you can close it before reading all the file)
00250    */
00251 
00252 extern int ZEXPORT UA_unzOpenCurrentFile OF((unzFile file));
00253 /*
00254   Open for reading data the current file in the zipfile.
00255   If there is no error, the return value is UNZ_OK.
00256 */
00257 
00258 extern int ZEXPORT UA_unzOpenCurrentFilePassword OF((unzFile file,
00259                                                   const char* password));
00260 /*
00261   Open for reading data the current file in the zipfile.
00262   password is a crypting password
00263   If there is no error, the return value is UNZ_OK.
00264 */
00265 
00266 extern int ZEXPORT UA_unzOpenCurrentFile2 OF((unzFile file,
00267                                            int* method,
00268                                            int* level,
00269                                            int raw));
00270 /*
00271   Same than UA_unzOpenCurrentFile, but open for read raw the file (not uncompress)
00272     if raw==1
00273   *method will receive method of compression, *level will receive level of
00274      compression
00275   note : you can set level parameter as NULL (if you did not want known level,
00276          but you CANNOT set method parameter as NULL
00277 */
00278 
00279 extern int ZEXPORT UA_unzOpenCurrentFile3 OF((unzFile file,
00280                                            int* method,
00281                                            int* level,
00282                                            int raw,
00283                                            const char* password));
00284 /*
00285   Same than UA_unzOpenCurrentFile, but open for read raw the file (not uncompress)
00286     if raw==1
00287   *method will receive method of compression, *level will receive level of
00288      compression
00289   note : you can set level parameter as NULL (if you did not want known level,
00290          but you CANNOT set method parameter as NULL
00291 */
00292 
00293 
00294 extern int ZEXPORT UA_unzCloseCurrentFile OF((unzFile file));
00295 /*
00296   Close the file in zip opened with UA_unzOpenCurrentFile
00297   Return UNZ_CRCERROR if all the file was read but the CRC is not good
00298 */
00299 
00300 extern int ZEXPORT UA_unzReadCurrentFile OF((unzFile file,
00301                       voidp buf,
00302                       unsigned len));
00303 /*
00304   Read bytes from the current file (opened by UA_unzOpenCurrentFile)
00305   buf contain buffer where data must be copied
00306   len the size of buf.
00307 
00308   return the number of byte copied if somes bytes are copied
00309   return 0 if the end of file was reached
00310   return <0 with error code if there is an error
00311     (UNZ_ERRNO for IO error, or zLib error for uncompress error)
00312 */
00313 
00314 extern z_off_t ZEXPORT UA_unztell OF((unzFile file));
00315 /*
00316   Give the current position in uncompressed data
00317 */
00318 
00319 extern int ZEXPORT UA_unzeof OF((unzFile file));
00320 /*
00321   return 1 if the end of file was reached, 0 elsewhere
00322 */
00323 
00324 extern int ZEXPORT UA_unzGetLocalExtrafield OF((unzFile file,
00325                                              voidp buf,
00326                                              unsigned len));
00327 /*
00328   Read extra field from the current file (opened by UA_unzOpenCurrentFile)
00329   This is the local-header version of the extra field (sometimes, there is
00330     more info in the local-header version than in the central-header)
00331 
00332   if buf==NULL, it return the size of the local extra field
00333 
00334   if buf!=NULL, len is the size of the buffer, the extra header is copied in
00335     buf.
00336   the return value is the number of bytes copied in buf, or (if <0)
00337     the error code
00338 */
00339 
00340 /***************************************************************************/
00341 
00342 /* Get the current file offset */
00343 extern uLong ZEXPORT UA_unzGetOffset (unzFile file);
00344 
00345 /* Set the current file offset */
00346 extern int ZEXPORT UA_unzSetOffset (unzFile file, uLong pos);
00347 
00348 
00349 
00350 #ifdef __cplusplus
00351 }
00352 #endif
00353 
00354 #endif /* _unz_H */
 All Classes Functions Variables Properties