0,0 → 1,722 |
/*--------------------------------------------------------------------------- |
|
unzip.h (new) |
|
Copyright (c) 1990-2009 Info-ZIP. All rights reserved. |
|
This header file contains the public macros and typedefs required by |
both the UnZip sources and by any application using the UnZip API. If |
UNZIP_INTERNAL is defined, it includes unzpriv.h (containing includes, |
prototypes and extern variables used by the actual UnZip sources). |
|
---------------------------------------------------------------------------*/ |
/*--------------------------------------------------------------------------- |
This is version 2009-Jan-02 of the Info-ZIP license. |
The definitive version of this document should be available at |
ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and |
a copy at http://www.info-zip.org/pub/infozip/license.html. |
|
|
Copyright (c) 1990-2009 Info-ZIP. All rights reserved. |
|
For the purposes of this copyright and license, "Info-ZIP" is defined as |
the following set of individuals: |
|
Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, |
Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, |
Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, |
David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, |
Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, |
Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, |
Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, |
Rich Wales, Mike White. |
|
This software is provided "as is," without warranty of any kind, express |
or implied. In no event shall Info-ZIP or its contributors be held liable |
for any direct, indirect, incidental, special or consequential damages |
arising out of the use of or inability to use this software. |
|
Permission is granted to anyone to use this software for any purpose, |
including commercial applications, and to alter it and redistribute it |
freely, subject to the above disclaimer and the following restrictions: |
|
1. Redistributions of source code (in whole or in part) must retain |
the above copyright notice, definition, disclaimer, and this list |
of conditions. |
|
2. Redistributions in binary form (compiled executables and libraries) |
must reproduce the above copyright notice, definition, disclaimer, |
and this list of conditions in documentation and/or other materials |
provided with the distribution. Additional documentation is not needed |
for executables where a command line license option provides these and |
a note regarding this option is in the executable's startup banner. The |
sole exception to this condition is redistribution of a standard |
UnZipSFX binary (including SFXWiz) as part of a self-extracting archive; |
that is permitted without inclusion of this license, as long as the |
normal SFX banner has not been removed from the binary or disabled. |
|
3. Altered versions--including, but not limited to, ports to new operating |
systems, existing ports with new graphical interfaces, versions with |
modified or added functionality, and dynamic, shared, or static library |
versions not from Info-ZIP--must be plainly marked as such and must not |
be misrepresented as being the original source or, if binaries, |
compiled from the original source. Such altered versions also must not |
be misrepresented as being Info-ZIP releases--including, but not |
limited to, labeling of the altered versions with the names "Info-ZIP" |
(or any variation thereof, including, but not limited to, different |
capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the |
explicit permission of Info-ZIP. Such altered versions are further |
prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP |
e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP |
will provide support for the altered versions. |
|
4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," |
"UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its |
own source and binary releases. |
---------------------------------------------------------------------------*/ |
|
#ifndef __unzip_h /* prevent multiple inclusions */ |
#define __unzip_h |
|
/*--------------------------------------------------------------------------- |
Predefined, machine-specific macros. |
---------------------------------------------------------------------------*/ |
|
#ifdef __GO32__ /* MS-DOS extender: NOT Unix */ |
# ifdef unix |
# undef unix |
# endif |
# ifdef _unix |
# undef _unix |
# endif |
# ifdef __unix |
# undef __unix |
# endif |
# ifdef __unix__ |
# undef __unix__ |
# endif |
#endif |
|
#if ((defined(__convex__) || defined(__convexc__)) && !defined(CONVEX)) |
# define CONVEX |
#endif |
|
#if (defined(unix) || defined(_unix) || defined(__unix) || defined(__unix__)) |
# ifndef UNIX |
# define UNIX |
# endif |
#endif /* unix || _unix || __unix || __unix__ */ |
#if (defined(M_XENIX) || defined(COHERENT) || defined(__hpux)) |
# ifndef UNIX |
# define UNIX |
# endif |
#endif /* M_XENIX || COHERENT || __hpux */ |
#if (defined(__NetBSD__) || defined(__FreeBSD__)) |
# ifndef UNIX |
# define UNIX |
# endif |
#endif /* __NetBSD__ || __FreeBSD__ */ |
#if (defined(CONVEX) || defined(MINIX) || defined(_AIX) || defined(__QNX__)) |
# ifndef UNIX |
# define UNIX |
# endif |
#endif /* CONVEX || MINIX || _AIX || __QNX__ */ |
|
#if (defined(VM_CMS) || defined(MVS)) |
# define CMS_MVS |
#endif |
|
#if (defined(__OS2__) && !defined(OS2)) |
# define OS2 |
#endif |
|
#if (defined(__TANDEM) && !defined(TANDEM)) |
# define TANDEM |
#endif |
|
#if (defined(__VMS) && !defined(VMS)) |
# define VMS |
#endif |
|
#if ((defined(__WIN32__) || defined(_WIN32)) && !defined(WIN32)) |
# define WIN32 |
#endif |
#if ((defined(__WINNT__) || defined(__WINNT)) && !defined(WIN32)) |
# define WIN32 |
#endif |
|
#if defined(_WIN32_WCE) |
# ifndef WIN32 /* WinCE is treated as a variant of the Win32 API */ |
# define WIN32 |
# endif |
# ifndef UNICODE /* WinCE requires UNICODE wide character support */ |
# define UNICODE |
# endif |
#endif |
|
#ifdef __COMPILER_KCC__ |
# include <c-env.h> |
# ifdef SYS_T20 |
# define TOPS20 |
# endif |
#endif /* __COMPILER_KCC__ */ |
|
/* Borland C does not define __TURBOC__ if compiling for a 32-bit platform */ |
#ifdef __BORLANDC__ |
# ifndef __TURBOC__ |
# define __TURBOC__ |
# endif |
# if (!defined(__MSDOS__) && !defined(OS2) && !defined(WIN32)) |
# define __MSDOS__ |
# endif |
#endif |
|
/* define MSDOS for Turbo C (unless OS/2) and Power C as well as Microsoft C */ |
#ifdef __POWERC |
# define __TURBOC__ |
# define MSDOS |
#endif /* __POWERC */ |
|
#if (defined(__MSDOS__) && !defined(MSDOS)) /* just to make sure */ |
# define MSDOS |
#endif |
|
/* RSXNTDJ (at least up to v1.3) compiles for WIN32 (RSXNT) using a derivate |
of the EMX environment, but defines MSDOS and __GO32__. ARG !!! */ |
#if (defined(MSDOS) && defined(WIN32)) |
# undef MSDOS /* WIN32 is >>>not<<< MSDOS */ |
#endif |
#if (defined(__GO32__) && defined(__EMX__) && defined(__RSXNT__)) |
# undef __GO32__ |
#endif |
|
#if (defined(linux) && !defined(LINUX)) |
# define LINUX |
#endif |
|
#ifdef __riscos |
# define RISCOS |
#endif |
|
#if (defined(THINK_C) || defined(MPW)) |
# define MACOS |
#endif |
#if (defined(__MWERKS__) && defined(macintosh)) |
# define MACOS |
#endif |
|
/* use prototypes and ANSI libraries if __STDC__, or MS-DOS, or OS/2, or Win32, |
* or IBM C Set/2, or Borland C, or Watcom C, or GNU gcc (emx or Cygwin), |
* or Macintosh, or Sequent, or Atari, or IBM RS/6000, or Silicon Graphics, |
* or Convex?, or AtheOS, or BeOS. |
*/ |
#if (defined(__STDC__) || defined(MSDOS) || defined(OS2) || defined(WIN32)) |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
#if (defined(__IBMC__) || defined(__BORLANDC__) || defined(__WATCOMC__)) |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
#if (defined(__EMX__) || defined(__CYGWIN__)) |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
#if (defined(MACOS) || defined(ATARI_ST) || defined(RISCOS) || defined(THEOS)) |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
/* Sequent running Dynix/ptx: non-modern compiler */ |
#if (defined(_AIX) || defined(sgi) || (defined(_SEQUENT_) && !defined(PTX))) |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
#if (defined(CMS_MVS) || defined(__ATHEOS__) || defined(__BEOS__)) |
/* || defined(CONVEX) ? */ |
# ifndef PROTO |
# define PROTO |
# endif |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
/* Bundled C compiler on HP-UX needs this. Others shouldn't care. */ |
#if (defined(__hpux)) |
# ifndef MODERN |
# define MODERN |
# endif |
#endif |
|
/* turn off prototypes if requested */ |
#if (defined(NOPROTO) && defined(PROTO)) |
# undef PROTO |
#endif |
|
/* used to remove arguments in function prototypes for non-ANSI C */ |
#ifdef PROTO |
# define OF(a) a |
#else |
# define OF(a) () |
#endif |
|
/* enable the "const" keyword only if MODERN and if not otherwise instructed */ |
#ifdef MODERN |
# if (!defined(ZCONST) && (defined(USE_CONST) || !defined(NO_CONST))) |
# define ZCONST const |
# endif |
#endif |
|
#ifndef ZCONST |
# define ZCONST |
#endif |
|
/* Tell Microsoft Visual C++ 2005 (and newer) to leave us alone |
* and let us use standard C functions the way we're supposed to. |
* (These preprocessor symbols must appear before the first system |
* header include. They are located here, because for WINDLL the |
* first system header includes follow just below.) |
*/ |
#if defined(_MSC_VER) && (_MSC_VER >= 1400) |
# ifndef _CRT_SECURE_NO_WARNINGS |
# define _CRT_SECURE_NO_WARNINGS |
# endif |
# ifndef _CRT_NONSTDC_NO_WARNINGS |
# define _CRT_NONSTDC_NO_WARNINGS |
# endif |
# if defined(POCKET_UNZIP) && !defined(_CRT_NON_CONFORMING_SWPRINTFS) |
# define _CRT_NON_CONFORMING_SWPRINTFS |
# endif |
#endif |
|
/* NO_UNIXBACKUP overrides UNIXBACKUP */ |
#if defined(NO_UNIXBACKUP) && defined(UNIXBACKUP) |
# undef UNIXBACKUP |
#endif |
|
/*--------------------------------------------------------------------------- |
Grab system-specific public include headers. |
---------------------------------------------------------------------------*/ |
|
#ifdef POCKET_UNZIP /* WinCE port */ |
# include "wince/punzip.h" /* must appear before windows.h */ |
#endif |
|
#ifdef WINDLL |
/* for UnZip, the "basic" part of the win32 api is sufficient */ |
# ifndef WIN32_LEAN_AND_MEAN |
# define WIN32_LEAN_AND_MEAN |
# define IZ_HASDEFINED_WIN32LEAN |
# endif |
# include <windows.h> |
# include "windll/structs.h" |
# ifdef IZ_HASDEFINED_WIN32LEAN |
# undef WIN32_LEAN_AND_MEAN |
# undef IZ_HASDEFINED_WIN32LEAN |
# endif |
#endif |
|
/*--------------------------------------------------------------------------- |
Grab system-dependent definition of EXPENTRY for prototypes below. |
---------------------------------------------------------------------------*/ |
|
#if 0 |
#if (defined(OS2) && !defined(FUNZIP)) |
# ifdef UNZIP_INTERNAL |
# define INCL_NOPM |
# define INCL_DOSNLS |
# define INCL_DOSPROCESS |
# define INCL_DOSDEVICES |
# define INCL_DOSDEVIOCTL |
# define INCL_DOSERRORS |
# define INCL_DOSMISC |
# ifdef OS2DLL |
# define INCL_REXXSAA |
# include <rexxsaa.h> |
# endif |
# endif /* UNZIP_INTERNAL */ |
# include <os2.h> |
# define UZ_EXP EXPENTRY |
#endif /* OS2 && !FUNZIP */ |
#endif /* 0 */ |
|
#if (defined(OS2) && !defined(FUNZIP)) |
# if (defined(__IBMC__) || defined(__WATCOMC__)) |
# define UZ_EXP _System /* compiler keyword */ |
# else |
# define UZ_EXP |
# endif |
#endif /* OS2 && !FUNZIP */ |
|
#if (defined(WINDLL) || defined(USE_UNZIP_LIB)) |
# ifndef EXPENTRY |
# define UZ_EXP WINAPI |
# else |
# define UZ_EXP EXPENTRY |
# endif |
#endif |
|
#ifndef UZ_EXP |
# define UZ_EXP |
#endif |
|
#ifdef __cplusplus |
extern "C" { |
#endif |
|
/*--------------------------------------------------------------------------- |
Public typedefs. |
---------------------------------------------------------------------------*/ |
|
#ifndef _IZ_TYPES_DEFINED |
#ifdef MODERN |
typedef void zvoid; |
#else /* !MODERN */ |
# ifndef AOS_VS /* mostly modern? */ |
# ifndef VAXC /* not fully modern, but has knows 'void' */ |
# define void int |
# endif /* !VAXC */ |
# endif /* !AOS_VS */ |
typedef char zvoid; |
#endif /* ?MODERN */ |
typedef unsigned char uch; /* code assumes unsigned bytes; these type- */ |
typedef unsigned short ush; /* defs replace byte/UWORD/ULONG (which are */ |
typedef unsigned long ulg; /* predefined on some systems) & match zip */ |
#define _IZ_TYPES_DEFINED |
#endif /* !_IZ_TYPES_DEFINED */ |
|
/* InputFn is not yet used and is likely to change: */ |
#ifdef PROTO |
typedef int (UZ_EXP MsgFn) (zvoid *pG, uch *buf, ulg size, int flag); |
typedef int (UZ_EXP InputFn) (zvoid *pG, uch *buf, int *size, int flag); |
typedef void (UZ_EXP PauseFn) (zvoid *pG, ZCONST char *prompt, int flag); |
typedef int (UZ_EXP PasswdFn) (zvoid *pG, int *rcnt, char *pwbuf, |
int size, ZCONST char *zfn, |
ZCONST char *efn); |
typedef int (UZ_EXP StatCBFn) (zvoid *pG, int fnflag, ZCONST char *zfn, |
ZCONST char *efn, ZCONST zvoid *details); |
typedef void (UZ_EXP UsrIniFn) (void); |
#else /* !PROTO */ |
typedef int (UZ_EXP MsgFn) (); |
typedef int (UZ_EXP InputFn) (); |
typedef void (UZ_EXP PauseFn) (); |
typedef int (UZ_EXP PasswdFn) (); |
typedef int (UZ_EXP StatCBFn) (); |
typedef void (UZ_EXP UsrIniFn) (); |
#endif /* ?PROTO */ |
|
typedef struct _UzpBuffer { /* rxstr */ |
ulg strlength; /* length of string */ |
char *strptr; /* pointer to string */ |
} UzpBuffer; |
|
typedef struct _UzpInit { |
ulg structlen; /* length of the struct being passed */ |
|
/* GRR: can we assume that each of these is a 32-bit pointer? if not, |
* does it matter? add "far" keyword to make sure? */ |
MsgFn *msgfn; |
InputFn *inputfn; |
PauseFn *pausefn; |
UsrIniFn *userfn; /* user init function to be called after */ |
/* globals constructed and initialized */ |
|
/* pointer to program's environment area or something? */ |
/* hooks for performance testing? */ |
/* hooks for extra unzip -v output? (detect CPU or other hardware?) */ |
/* anything else? let me (Greg) know... */ |
} UzpInit; |
|
typedef struct _UzpCB { |
ulg structlen; /* length of the struct being passed */ |
/* GRR: can we assume that each of these is a 32-bit pointer? if not, |
* does it matter? add "far" keyword to make sure? */ |
MsgFn *msgfn; |
InputFn *inputfn; |
PauseFn *pausefn; |
PasswdFn *passwdfn; |
StatCBFn *statrepfn; |
} UzpCB; |
|
/* the collection of general UnZip option flags and option arguments */ |
typedef struct _UzpOpts { |
#ifndef FUNZIP |
char *exdir; /* pointer to extraction root directory (-d option) */ |
char *pwdarg; /* pointer to command-line password (-P option) */ |
int zipinfo_mode; /* behave like ZipInfo or like normal UnZip? */ |
int aflag; /* -a: do ASCII-EBCDIC and/or end-of-line translation */ |
#ifdef VMS |
int bflag; /* -b: force fixed record format for binary files */ |
#endif |
#ifdef TANDEM |
int bflag; /* -b: create text files in 'C' format (180)*/ |
#endif |
#if defined(UNIX) || defined(OS2) || defined(WIN32) |
int B_flag; /* -B: back up existing files by renaming to *~##### */ |
#else |
#ifdef UNIXBACKUP |
int B_flag; /* -B: back up existing files by renaming to *~##### */ |
#endif |
#endif |
int cflag; /* -c: output to stdout */ |
int C_flag; /* -C: match filenames case-insensitively */ |
int D_flag; /* -D: don't restore directory (-DD: any) timestamps */ |
#ifdef MACOS |
int E_flag; /* -E: [MacOS] show Mac extra field during restoring */ |
#endif |
int fflag; /* -f: "freshen" (extract only newer files) */ |
#if (defined(RISCOS) || defined(ACORN_FTYPE_NFS)) |
int acorn_nfs_ext; /* -F: RISC OS types & NFS filetype extensions */ |
#endif |
int hflag; /* -h: header line (zipinfo) */ |
#ifdef MACOS |
int i_flag; /* -i: [MacOS] ignore filenames stored in Mac e.f. */ |
#endif |
#ifdef RISCOS |
int scanimage; /* -I: scan image files */ |
#endif |
int jflag; /* -j: junk pathnames (unzip) */ |
#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(MACOS)) |
int J_flag; /* -J: ignore AtheOS/BeOS/MacOS e. f. info (unzip) */ |
#endif |
#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(UNIX)) |
int K_flag; /* -K: keep setuid/setgid/tacky permissions */ |
#endif |
int lflag; /* -12slmv: listing format (zipinfo) */ |
int L_flag; /* -L: convert filenames from some OSes to lowercase */ |
int overwrite_none; /* -n: never overwrite files (no prompting) */ |
#ifdef AMIGA |
int N_flag; /* -N: restore comments as AmigaDOS filenotes */ |
#endif |
int overwrite_all; /* -o: OK to overwrite files without prompting */ |
#endif /* !FUNZIP */ |
int qflag; /* -q: produce a lot less output */ |
#ifdef TANDEM |
int rflag; /* -r: remove file extensions */ |
#endif |
#ifndef FUNZIP |
#if (defined(MSDOS) || defined(FLEXOS) || defined(OS2) || defined(WIN32)) |
int sflag; /* -s: convert spaces in filenames to underscores */ |
#endif |
#if (defined(NLM)) |
int sflag; /* -s: convert spaces in filenames to underscores */ |
#endif |
#ifdef VMS |
int S_flag; /* -S: use Stream_LF for text files (-a[a]) */ |
#endif |
#if (defined(MSDOS) || defined(__human68k__) || defined(OS2) || defined(WIN32)) |
int volflag; /* -$: extract volume labels */ |
#endif |
int tflag; /* -t: test (unzip) or totals line (zipinfo) */ |
int T_flag; /* -T: timestamps (unzip) or dec. time fmt (zipinfo) */ |
int uflag; /* -u: "update" (extract only newer/brand-new files) */ |
#if defined(UNIX) || defined(VMS) || defined(WIN32) |
int U_flag; /* -U: escape non-ASCII, -UU No Unicode paths */ |
#endif |
int vflag; /* -v: (verbosely) list directory */ |
int V_flag; /* -V: don't strip VMS version numbers */ |
int W_flag; /* -W: wildcard '*' won't match '/' dir separator */ |
#if (defined (__ATHEOS__) || defined(__BEOS__) || defined(UNIX)) |
int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */ |
#else |
#if (defined(TANDEM) || defined(THEOS)) |
int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */ |
#else |
#if (defined(OS2) || defined(VMS) || defined(WIN32)) |
int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */ |
#endif |
#endif |
#endif |
#ifdef VMS |
int Y_flag; /* -Y: treat ".nnn" as ";nnn" version */ |
#endif |
int zflag; /* -z: display the zipfile comment (only, for unzip) */ |
#ifdef VMS |
int ods2_flag; /* -2: force names to conform to ODS2 */ |
#endif |
#if (!defined(RISCOS) && !defined(CMS_MVS) && !defined(TANDEM)) |
int ddotflag; /* -:: don't skip over "../" path elements */ |
#endif |
#ifdef UNIX |
int cflxflag; /* -^: allow control chars in extracted filenames */ |
#endif |
#endif /* !FUNZIP */ |
} UzpOpts; |
|
/* intended to be a private struct: */ |
typedef struct _ver { |
uch major; /* e.g., integer 5 */ |
uch minor; /* e.g., 2 */ |
uch patchlevel; /* e.g., 0 */ |
uch not_used; |
} _version_type; |
|
typedef struct _UzpVer { |
ulg structlen; /* length of the struct being passed */ |
ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ |
ZCONST char *betalevel; /* e.g. "g BETA" or "" */ |
ZCONST char *date; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ |
ZCONST char *zlib_version;/* e.g. "1.2.3" or NULL */ |
_version_type unzip; /* current UnZip version */ |
_version_type zipinfo; /* current ZipInfo version */ |
_version_type os2dll; /* OS2DLL version (retained for compatibility */ |
_version_type windll; /* WinDLL version (retained for compatibility */ |
_version_type dllapimin; /* last incompatible change of library API */ |
} UzpVer; |
|
/* for Visual BASIC access to Windows DLLs: */ |
typedef struct _UzpVer2 { |
ulg structlen; /* length of the struct being passed */ |
ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ |
char betalevel[10]; /* e.g. "g BETA" or "" */ |
char date[20]; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ |
char zlib_version[10]; /* e.g. "1.2.3" or NULL */ |
_version_type unzip; /* current UnZip version */ |
_version_type zipinfo; /* current ZipInfo version */ |
_version_type os2dll; /* OS2DLL version (retained for compatibility */ |
_version_type windll; /* WinDLL version (retained for compatibility */ |
_version_type dllapimin; /* last incompatible change of library API */ |
} UzpVer2; |
|
|
typedef struct _Uzp_Siz64 { |
unsigned long lo32; |
unsigned long hi32; |
} Uzp_Siz64; |
|
typedef struct _Uzp_cdir_Rec { |
uch version_made_by[2]; |
uch version_needed_to_extract[2]; |
ush general_purpose_bit_flag; |
ush compression_method; |
ulg last_mod_dos_datetime; |
ulg crc32; |
Uzp_Siz64 csize; |
Uzp_Siz64 ucsize; |
ush filename_length; |
ush extra_field_length; |
ush file_comment_length; |
ush disk_number_start; |
ush internal_file_attributes; |
ulg external_file_attributes; |
Uzp_Siz64 relative_offset_local_header; |
} Uzp_cdir_Rec; |
|
|
#define UZPINIT_LEN sizeof(UzpInit) |
#define UZPVER_LEN sizeof(UzpVer) |
#define cbList(func) int (* UZ_EXP func)(char *filename, Uzp_cdir_Rec *crec) |
|
|
/*--------------------------------------------------------------------------- |
Return (and exit) values of the public UnZip API functions. |
---------------------------------------------------------------------------*/ |
|
/* external return codes */ |
#define PK_OK 0 /* no error */ |
#define PK_COOL 0 /* no error */ |
#define PK_WARN 1 /* warning error */ |
#define PK_ERR 2 /* error in zipfile */ |
#define PK_BADERR 3 /* severe error in zipfile */ |
#define PK_MEM 4 /* insufficient memory (during initialization) */ |
#define PK_MEM2 5 /* insufficient memory (password failure) */ |
#define PK_MEM3 6 /* insufficient memory (file decompression) */ |
#define PK_MEM4 7 /* insufficient memory (memory decompression) */ |
#define PK_MEM5 8 /* insufficient memory (not yet used) */ |
#define PK_NOZIP 9 /* zipfile not found */ |
#define PK_PARAM 10 /* bad or illegal parameters specified */ |
#define PK_FIND 11 /* no files found */ |
#define PK_DISK 50 /* disk full */ |
#define PK_EOF 51 /* unexpected EOF */ |
|
#define IZ_CTRLC 80 /* user hit ^C to terminate */ |
#define IZ_UNSUP 81 /* no files found: all unsup. compr/encrypt. */ |
#define IZ_BADPWD 82 /* no files found: all had bad password */ |
#define IZ_ERRBF 83 /* big-file archive, small-file program */ |
|
/* return codes of password fetches (negative = user abort; positive = error) */ |
#define IZ_PW_ENTERED 0 /* got some password string; use/try it */ |
#define IZ_PW_CANCEL -1 /* no password available (for this entry) */ |
#define IZ_PW_CANCELALL -2 /* no password, skip any further pwd. request */ |
#define IZ_PW_ERROR 5 /* = PK_MEM2 : failure (no mem, no tty, ...) */ |
|
/* flag values for status callback function */ |
#define UZ_ST_START_EXTRACT 1 /* no details */ |
#define UZ_ST_IN_PROGRESS 2 /* no details */ |
#define UZ_ST_FINISH_MEMBER 3 /* 'details': extracted size */ |
|
/* return values of status callback function */ |
#define UZ_ST_CONTINUE 0 |
#define UZ_ST_BREAK 1 |
|
|
/*--------------------------------------------------------------------------- |
Prototypes for public UnZip API (DLL) functions. |
---------------------------------------------------------------------------*/ |
|
#define UzpMatch match |
|
int UZ_EXP UzpMain OF((int argc, char **argv)); |
int UZ_EXP UzpAltMain OF((int argc, char **argv, UzpInit *init)); |
ZCONST UzpVer * UZ_EXP UzpVersion OF((void)); |
void UZ_EXP UzpFreeMemBuffer OF((UzpBuffer *retstr)); |
#ifndef WINDLL |
int UZ_EXP UzpUnzipToMemory OF((char *zip, char *file, UzpOpts *optflgs, |
UzpCB *UsrFunc, UzpBuffer *retstr)); |
int UZ_EXP UzpGrep OF((char *archive, char *file, |
char *pattern, int cmd, int SkipBin, |
UzpCB *UsrFunc)); |
#endif |
#ifdef OS2 |
int UZ_EXP UzpFileTree OF((char *name, cbList(callBack), |
char *cpInclude[], char *cpExclude[])); |
#endif |
|
unsigned UZ_EXP UzpVersion2 OF((UzpVer2 *version)); |
int UZ_EXP UzpValidate OF((char *archive, int AllCodes)); |
|
|
/* default I/O functions (can be swapped out via UzpAltMain() entry point): */ |
|
int UZ_EXP UzpMessagePrnt OF((zvoid *pG, uch *buf, ulg size, int flag)); |
int UZ_EXP UzpMessageNull OF((zvoid *pG, uch *buf, ulg size, int flag)); |
int UZ_EXP UzpInput OF((zvoid *pG, uch *buf, int *size, int flag)); |
void UZ_EXP UzpMorePause OF((zvoid *pG, ZCONST char *prompt, int flag)); |
int UZ_EXP UzpPassword OF((zvoid *pG, int *rcnt, char *pwbuf, |
int size, ZCONST char *zfn, |
ZCONST char *efn)); |
|
#ifdef __cplusplus |
} |
#endif |
|
|
/*--------------------------------------------------------------------------- |
Remaining private stuff for UnZip compilation. |
---------------------------------------------------------------------------*/ |
|
#ifdef UNZIP_INTERNAL |
# include "unzpriv.h" |
#endif |
|
|
#endif /* !__unzip_h */ |