LMMS
Loading...
Searching...
No Matches
unzip.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------------
2
3 unzip.h (new)
4
5 Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
6
7 This header file contains the public macros and typedefs required by
8 both the UnZip sources and by any application using the UnZip API. If
9 UNZIP_INTERNAL is defined, it includes unzpriv.h (containing includes,
10 prototypes and extern variables used by the actual UnZip sources).
11
12 ---------------------------------------------------------------------------*/
13/*---------------------------------------------------------------------------
14This is version 2009-Jan-02 of the Info-ZIP license.
15The definitive version of this document should be available at
16ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and
17a copy at http://www.info-zip.org/pub/infozip/license.html.
18
19
20Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
21
22For the purposes of this copyright and license, "Info-ZIP" is defined as
23the following set of individuals:
24
25 Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
26 Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth,
27 Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
28 David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
29 Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
30 Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda,
31 Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,
32 Rich Wales, Mike White.
33
34This software is provided "as is," without warranty of any kind, express
35or implied. In no event shall Info-ZIP or its contributors be held liable
36for any direct, indirect, incidental, special or consequential damages
37arising out of the use of or inability to use this software.
38
39Permission is granted to anyone to use this software for any purpose,
40including commercial applications, and to alter it and redistribute it
41freely, subject to the above disclaimer and the following restrictions:
42
43 1. Redistributions of source code (in whole or in part) must retain
44 the above copyright notice, definition, disclaimer, and this list
45 of conditions.
46
47 2. Redistributions in binary form (compiled executables and libraries)
48 must reproduce the above copyright notice, definition, disclaimer,
49 and this list of conditions in documentation and/or other materials
50 provided with the distribution. Additional documentation is not needed
51 for executables where a command line license option provides these and
52 a note regarding this option is in the executable's startup banner. The
53 sole exception to this condition is redistribution of a standard
54 UnZipSFX binary (including SFXWiz) as part of a self-extracting archive;
55 that is permitted without inclusion of this license, as long as the
56 normal SFX banner has not been removed from the binary or disabled.
57
58 3. Altered versions--including, but not limited to, ports to new operating
59 systems, existing ports with new graphical interfaces, versions with
60 modified or added functionality, and dynamic, shared, or static library
61 versions not from Info-ZIP--must be plainly marked as such and must not
62 be misrepresented as being the original source or, if binaries,
63 compiled from the original source. Such altered versions also must not
64 be misrepresented as being Info-ZIP releases--including, but not
65 limited to, labeling of the altered versions with the names "Info-ZIP"
66 (or any variation thereof, including, but not limited to, different
67 capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the
68 explicit permission of Info-ZIP. Such altered versions are further
69 prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP
70 e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP
71 will provide support for the altered versions.
72
73 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip,"
74 "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its
75 own source and binary releases.
76 ---------------------------------------------------------------------------*/
77
78#ifndef __unzip_h /* prevent multiple inclusions */
79#define __unzip_h
80
81/*---------------------------------------------------------------------------
82 Predefined, machine-specific macros.
83 ---------------------------------------------------------------------------*/
84
85#ifdef __GO32__ /* MS-DOS extender: NOT Unix */
86# ifdef unix
87# undef unix
88# endif
89# ifdef _unix
90# undef _unix
91# endif
92# ifdef __unix
93# undef __unix
94# endif
95# ifdef __unix__
96# undef __unix__
97# endif
98#endif
99
100#if ((defined(__convex__) || defined(__convexc__)) && !defined(CONVEX))
101# define CONVEX
102#endif
103
104#if (defined(unix) || defined(_unix) || defined(__unix) || defined(__unix__))
105# ifndef UNIX
106# define UNIX
107# endif
108#endif /* unix || _unix || __unix || __unix__ */
109#if (defined(M_XENIX) || defined(COHERENT) || defined(__hpux))
110# ifndef UNIX
111# define UNIX
112# endif
113#endif /* M_XENIX || COHERENT || __hpux */
114#if (defined(__NetBSD__) || defined(__FreeBSD__))
115# ifndef UNIX
116# define UNIX
117# endif
118#endif /* __NetBSD__ || __FreeBSD__ */
119#if (defined(CONVEX) || defined(MINIX) || defined(_AIX) || defined(__QNX__))
120# ifndef UNIX
121# define UNIX
122# endif
123#endif /* CONVEX || MINIX || _AIX || __QNX__ */
124
125#if (defined(VM_CMS) || defined(MVS))
126# define CMS_MVS
127#endif
128
129#if (defined(__OS2__) && !defined(OS2))
130# define OS2
131#endif
132
133#if (defined(__TANDEM) && !defined(TANDEM))
134# define TANDEM
135#endif
136
137#if (defined(__VMS) && !defined(VMS))
138# define VMS
139#endif
140
141#if ((defined(__WIN32__) || defined(_WIN32)) && !defined(WIN32))
142# define WIN32
143#endif
144#if ((defined(__WINNT__) || defined(__WINNT)) && !defined(WIN32))
145# define WIN32
146#endif
147
148#if defined(_WIN32_WCE)
149# ifndef WIN32 /* WinCE is treated as a variant of the Win32 API */
150# define WIN32
151# endif
152# ifndef UNICODE /* WinCE requires UNICODE wide character support */
153# define UNICODE
154# endif
155#endif
156
157#ifdef __COMPILER_KCC__
158# include <c-env.h>
159# ifdef SYS_T20
160# define TOPS20
161# endif
162#endif /* __COMPILER_KCC__ */
163
164/* Borland C does not define __TURBOC__ if compiling for a 32-bit platform */
165#ifdef __BORLANDC__
166# ifndef __TURBOC__
167# define __TURBOC__
168# endif
169# if (!defined(__MSDOS__) && !defined(OS2) && !defined(WIN32))
170# define __MSDOS__
171# endif
172#endif
173
174/* define MSDOS for Turbo C (unless OS/2) and Power C as well as Microsoft C */
175#ifdef __POWERC
176# define __TURBOC__
177# define MSDOS
178#endif /* __POWERC */
179
180#if (defined(__MSDOS__) && !defined(MSDOS)) /* just to make sure */
181# define MSDOS
182#endif
183
184/* RSXNTDJ (at least up to v1.3) compiles for WIN32 (RSXNT) using a derivate
185 of the EMX environment, but defines MSDOS and __GO32__. ARG !!! */
186#if (defined(MSDOS) && defined(WIN32))
187# undef MSDOS /* WIN32 is >>>not<<< MSDOS */
188#endif
189#if (defined(__GO32__) && defined(__EMX__) && defined(__RSXNT__))
190# undef __GO32__
191#endif
192
193#if (defined(linux) && !defined(LINUX))
194# define LINUX
195#endif
196
197#ifdef __riscos
198# define RISCOS
199#endif
200
201#if (defined(THINK_C) || defined(MPW))
202# define MACOS
203#endif
204#if (defined(__MWERKS__) && defined(macintosh))
205# define MACOS
206#endif
207
208/* use prototypes and ANSI libraries if __STDC__, or MS-DOS, or OS/2, or Win32,
209 * or IBM C Set/2, or Borland C, or Watcom C, or GNU gcc (emx or Cygwin),
210 * or Macintosh, or Sequent, or Atari, or IBM RS/6000, or Silicon Graphics,
211 * or Convex?, or AtheOS, or BeOS.
212 */
213#if (defined(__STDC__) || defined(MSDOS) || defined(OS2) || defined(WIN32))
214# ifndef PROTO
215# define PROTO
216# endif
217# ifndef MODERN
218# define MODERN
219# endif
220#endif
221#if (defined(__IBMC__) || defined(__BORLANDC__) || defined(__WATCOMC__))
222# ifndef PROTO
223# define PROTO
224# endif
225# ifndef MODERN
226# define MODERN
227# endif
228#endif
229#if (defined(__EMX__) || defined(__CYGWIN__))
230# ifndef PROTO
231# define PROTO
232# endif
233# ifndef MODERN
234# define MODERN
235# endif
236#endif
237#if (defined(MACOS) || defined(ATARI_ST) || defined(RISCOS) || defined(THEOS))
238# ifndef PROTO
239# define PROTO
240# endif
241# ifndef MODERN
242# define MODERN
243# endif
244#endif
245/* Sequent running Dynix/ptx: non-modern compiler */
246#if (defined(_AIX) || defined(sgi) || (defined(_SEQUENT_) && !defined(PTX)))
247# ifndef PROTO
248# define PROTO
249# endif
250# ifndef MODERN
251# define MODERN
252# endif
253#endif
254#if (defined(CMS_MVS) || defined(__ATHEOS__) || defined(__BEOS__))
255/* || defined(CONVEX) ? */
256# ifndef PROTO
257# define PROTO
258# endif
259# ifndef MODERN
260# define MODERN
261# endif
262#endif
263/* Bundled C compiler on HP-UX needs this. Others shouldn't care. */
264#if (defined(__hpux))
265# ifndef MODERN
266# define MODERN
267# endif
268#endif
269
270/* turn off prototypes if requested */
271#if (defined(NOPROTO) && defined(PROTO))
272# undef PROTO
273#endif
274
275/* used to remove arguments in function prototypes for non-ANSI C */
276#ifdef PROTO
277# define OF(a) a
278#else
279# define OF(a) ()
280#endif
281
282/* enable the "const" keyword only if MODERN and if not otherwise instructed */
283#ifdef MODERN
284# if (!defined(ZCONST) && (defined(USE_CONST) || !defined(NO_CONST)))
285# define ZCONST const
286# endif
287#endif
288
289#ifndef ZCONST
290# define ZCONST
291#endif
292
293/* Tell Microsoft Visual C++ 2005 (and newer) to leave us alone
294 * and let us use standard C functions the way we're supposed to.
295 * (These preprocessor symbols must appear before the first system
296 * header include. They are located here, because for WINDLL the
297 * first system header includes follow just below.)
298 */
299#if defined(_MSC_VER) && (_MSC_VER >= 1400)
300# ifndef _CRT_SECURE_NO_WARNINGS
301# define _CRT_SECURE_NO_WARNINGS
302# endif
303# ifndef _CRT_NONSTDC_NO_WARNINGS
304# define _CRT_NONSTDC_NO_WARNINGS
305# endif
306# if defined(POCKET_UNZIP) && !defined(_CRT_NON_CONFORMING_SWPRINTFS)
307# define _CRT_NON_CONFORMING_SWPRINTFS
308# endif
309#endif
310
311/* NO_UNIXBACKUP overrides UNIXBACKUP */
312#if defined(NO_UNIXBACKUP) && defined(UNIXBACKUP)
313# undef UNIXBACKUP
314#endif
315
316/*---------------------------------------------------------------------------
317 Grab system-specific public include headers.
318 ---------------------------------------------------------------------------*/
319
320#ifdef POCKET_UNZIP /* WinCE port */
321# include "wince/punzip.h" /* must appear before windows.h */
322#endif
323
324#ifdef WINDLL
325 /* for UnZip, the "basic" part of the win32 api is sufficient */
326# ifndef WIN32_LEAN_AND_MEAN
327# define WIN32_LEAN_AND_MEAN
328# define IZ_HASDEFINED_WIN32LEAN
329# endif
330# include <windows.h>
331# include "windll/structs.h"
332# ifdef IZ_HASDEFINED_WIN32LEAN
333# undef WIN32_LEAN_AND_MEAN
334# undef IZ_HASDEFINED_WIN32LEAN
335# endif
336#endif
337
338/*---------------------------------------------------------------------------
339 Grab system-dependent definition of EXPENTRY for prototypes below.
340 ---------------------------------------------------------------------------*/
341
342#if 0
343#if (defined(OS2) && !defined(FUNZIP))
344# ifdef UNZIP_INTERNAL
345# define INCL_NOPM
346# define INCL_DOSNLS
347# define INCL_DOSPROCESS
348# define INCL_DOSDEVICES
349# define INCL_DOSDEVIOCTL
350# define INCL_DOSERRORS
351# define INCL_DOSMISC
352# ifdef OS2DLL
353# define INCL_REXXSAA
354# include <rexxsaa.h>
355# endif
356# endif /* UNZIP_INTERNAL */
357# include <os2.h>
358# define UZ_EXP EXPENTRY
359#endif /* OS2 && !FUNZIP */
360#endif /* 0 */
361
362#if (defined(OS2) && !defined(FUNZIP))
363# if (defined(__IBMC__) || defined(__WATCOMC__))
364# define UZ_EXP _System /* compiler keyword */
365# else
366# define UZ_EXP
367# endif
368#endif /* OS2 && !FUNZIP */
369
370#if (defined(WINDLL) || defined(USE_UNZIP_LIB))
371# ifndef EXPENTRY
372# define UZ_EXP WINAPI
373# else
374# define UZ_EXP EXPENTRY
375# endif
376#endif
377
378#ifndef UZ_EXP
379# define UZ_EXP
380#endif
381
382#ifdef __cplusplus
383extern "C" {
384#endif
385
386/*---------------------------------------------------------------------------
387 Public typedefs.
388 ---------------------------------------------------------------------------*/
389
390#ifndef _IZ_TYPES_DEFINED
391#ifdef MODERN
392 typedef void zvoid;
393#else /* !MODERN */
394# ifndef AOS_VS /* mostly modern? */
395# ifndef VAXC /* not fully modern, but has knows 'void' */
396# define void int
397# endif /* !VAXC */
398# endif /* !AOS_VS */
399 typedef char zvoid;
400#endif /* ?MODERN */
401typedef unsigned char uch; /* code assumes unsigned bytes; these type- */
402typedef unsigned short ush; /* defs replace byte/UWORD/ULONG (which are */
403typedef unsigned long ulg; /* predefined on some systems) & match zip */
404#define _IZ_TYPES_DEFINED
405#endif /* !_IZ_TYPES_DEFINED */
406
407/* InputFn is not yet used and is likely to change: */
408#ifdef PROTO
409 typedef int (UZ_EXP MsgFn) (zvoid *pG, uch *buf, ulg size, int flag);
410 typedef int (UZ_EXP InputFn) (zvoid *pG, uch *buf, int *size, int flag);
411 typedef void (UZ_EXP PauseFn) (zvoid *pG, ZCONST char *prompt, int flag);
412 typedef int (UZ_EXP PasswdFn) (zvoid *pG, int *rcnt, char *pwbuf,
413 int size, ZCONST char *zfn,
414 ZCONST char *efn);
415 typedef int (UZ_EXP StatCBFn) (zvoid *pG, int fnflag, ZCONST char *zfn,
416 ZCONST char *efn, ZCONST zvoid *details);
417 typedef void (UZ_EXP UsrIniFn) (void);
418#else /* !PROTO */
419 typedef int (UZ_EXP MsgFn) ();
420 typedef int (UZ_EXP InputFn) ();
421 typedef void (UZ_EXP PauseFn) ();
422 typedef int (UZ_EXP PasswdFn) ();
423 typedef int (UZ_EXP StatCBFn) ();
424 typedef void (UZ_EXP UsrIniFn) ();
425#endif /* ?PROTO */
426
427typedef struct _UzpBuffer { /* rxstr */
428 ulg strlength; /* length of string */
429 char *strptr; /* pointer to string */
431
432typedef struct _UzpInit {
433 ulg structlen; /* length of the struct being passed */
434
435 /* GRR: can we assume that each of these is a 32-bit pointer? if not,
436 * does it matter? add "far" keyword to make sure? */
437 MsgFn *msgfn;
438 InputFn *inputfn;
439 PauseFn *pausefn;
440 UsrIniFn *userfn; /* user init function to be called after */
441 /* globals constructed and initialized */
442
443 /* pointer to program's environment area or something? */
444 /* hooks for performance testing? */
445 /* hooks for extra unzip -v output? (detect CPU or other hardware?) */
446 /* anything else? let me (Greg) know... */
448
449typedef struct _UzpCB {
450 ulg structlen; /* length of the struct being passed */
451 /* GRR: can we assume that each of these is a 32-bit pointer? if not,
452 * does it matter? add "far" keyword to make sure? */
453 MsgFn *msgfn;
454 InputFn *inputfn;
455 PauseFn *pausefn;
456 PasswdFn *passwdfn;
457 StatCBFn *statrepfn;
459
460/* the collection of general UnZip option flags and option arguments */
461typedef struct _UzpOpts {
462#ifndef FUNZIP
463 char *exdir; /* pointer to extraction root directory (-d option) */
464 char *pwdarg; /* pointer to command-line password (-P option) */
465 int zipinfo_mode; /* behave like ZipInfo or like normal UnZip? */
466 int aflag; /* -a: do ASCII-EBCDIC and/or end-of-line translation */
467#ifdef VMS
468 int bflag; /* -b: force fixed record format for binary files */
469#endif
470#ifdef TANDEM
471 int bflag; /* -b: create text files in 'C' format (180)*/
472#endif
473#if defined(UNIX) || defined(OS2) || defined(WIN32)
474 int B_flag; /* -B: back up existing files by renaming to *~##### */
475#else
476#ifdef UNIXBACKUP
477 int B_flag; /* -B: back up existing files by renaming to *~##### */
478#endif
479#endif
480 int cflag; /* -c: output to stdout */
481 int C_flag; /* -C: match filenames case-insensitively */
482 int D_flag; /* -D: don't restore directory (-DD: any) timestamps */
483#ifdef MACOS
484 int E_flag; /* -E: [MacOS] show Mac extra field during restoring */
485#endif
486 int fflag; /* -f: "freshen" (extract only newer files) */
487#if (defined(RISCOS) || defined(ACORN_FTYPE_NFS))
488 int acorn_nfs_ext; /* -F: RISC OS types & NFS filetype extensions */
489#endif
490 int hflag; /* -h: header line (zipinfo) */
491#ifdef MACOS
492 int i_flag; /* -i: [MacOS] ignore filenames stored in Mac e.f. */
493#endif
494#ifdef RISCOS
495 int scanimage; /* -I: scan image files */
496#endif
497 int jflag; /* -j: junk pathnames (unzip) */
498#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(MACOS))
499 int J_flag; /* -J: ignore AtheOS/BeOS/MacOS e. f. info (unzip) */
500#endif
501#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(UNIX))
502 int K_flag; /* -K: keep setuid/setgid/tacky permissions */
503#endif
504 int lflag; /* -12slmv: listing format (zipinfo) */
505 int L_flag; /* -L: convert filenames from some OSes to lowercase */
506 int overwrite_none; /* -n: never overwrite files (no prompting) */
507#ifdef AMIGA
508 int N_flag; /* -N: restore comments as AmigaDOS filenotes */
509#endif
510 int overwrite_all; /* -o: OK to overwrite files without prompting */
511#endif /* !FUNZIP */
512 int qflag; /* -q: produce a lot less output */
513#ifdef TANDEM
514 int rflag; /* -r: remove file extensions */
515#endif
516#ifndef FUNZIP
517#if (defined(MSDOS) || defined(FLEXOS) || defined(OS2) || defined(WIN32))
518 int sflag; /* -s: convert spaces in filenames to underscores */
519#endif
520#if (defined(NLM))
521 int sflag; /* -s: convert spaces in filenames to underscores */
522#endif
523#ifdef VMS
524 int S_flag; /* -S: use Stream_LF for text files (-a[a]) */
525#endif
526#if (defined(MSDOS) || defined(__human68k__) || defined(OS2) || defined(WIN32))
527 int volflag; /* -$: extract volume labels */
528#endif
529 int tflag; /* -t: test (unzip) or totals line (zipinfo) */
530 int T_flag; /* -T: timestamps (unzip) or dec. time fmt (zipinfo) */
531 int uflag; /* -u: "update" (extract only newer/brand-new files) */
532#if defined(UNIX) || defined(VMS) || defined(WIN32)
533 int U_flag; /* -U: escape non-ASCII, -UU No Unicode paths */
534#endif
535 int vflag; /* -v: (verbosely) list directory */
536 int V_flag; /* -V: don't strip VMS version numbers */
537 int W_flag; /* -W: wildcard '*' won't match '/' dir separator */
538#if (defined (__ATHEOS__) || defined(__BEOS__) || defined(UNIX))
539 int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */
540#else
541#if (defined(TANDEM) || defined(THEOS))
542 int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */
543#else
544#if (defined(OS2) || defined(VMS) || defined(WIN32))
545 int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */
546#endif
547#endif
548#endif
549#ifdef VMS
550 int Y_flag; /* -Y: treat ".nnn" as ";nnn" version */
551#endif
552 int zflag; /* -z: display the zipfile comment (only, for unzip) */
553#ifdef VMS
554 int ods2_flag; /* -2: force names to conform to ODS2 */
555#endif
556#if (!defined(RISCOS) && !defined(CMS_MVS) && !defined(TANDEM))
557 int ddotflag; /* -:: don't skip over "../" path elements */
558#endif
559#ifdef UNIX
560 int cflxflag; /* -^: allow control chars in extracted filenames */
561#endif
562#endif /* !FUNZIP */
564
565/* intended to be a private struct: */
566typedef struct _ver {
567 uch major; /* e.g., integer 5 */
568 uch minor; /* e.g., 2 */
569 uch patchlevel; /* e.g., 0 */
572
573typedef struct _UzpVer {
574 ulg structlen; /* length of the struct being passed */
575 ulg flag; /* bit 0: is_beta bit 1: uses_zlib */
576 ZCONST char *betalevel; /* e.g. "g BETA" or "" */
577 ZCONST char *date; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */
578 ZCONST char *zlib_version;/* e.g. "1.2.3" or NULL */
579 _version_type unzip; /* current UnZip version */
580 _version_type zipinfo; /* current ZipInfo version */
581 _version_type os2dll; /* OS2DLL version (retained for compatibility */
582 _version_type windll; /* WinDLL version (retained for compatibility */
583 _version_type dllapimin; /* last incompatible change of library API */
585
586/* for Visual BASIC access to Windows DLLs: */
587typedef struct _UzpVer2 {
588 ulg structlen; /* length of the struct being passed */
589 ulg flag; /* bit 0: is_beta bit 1: uses_zlib */
590 char betalevel[10]; /* e.g. "g BETA" or "" */
591 char date[20]; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */
592 char zlib_version[10]; /* e.g. "1.2.3" or NULL */
593 _version_type unzip; /* current UnZip version */
594 _version_type zipinfo; /* current ZipInfo version */
595 _version_type os2dll; /* OS2DLL version (retained for compatibility */
596 _version_type windll; /* WinDLL version (retained for compatibility */
597 _version_type dllapimin; /* last incompatible change of library API */
599
600
601typedef struct _Uzp_Siz64 {
602 unsigned long lo32;
603 unsigned long hi32;
605
606typedef struct _Uzp_cdir_Rec {
612 ulg crc32;
623
624
625#define UZPINIT_LEN sizeof(UzpInit)
626#define UZPVER_LEN sizeof(UzpVer)
627#define cbList(func) int (* UZ_EXP func)(char *filename, Uzp_cdir_Rec *crec)
628
629
630/*---------------------------------------------------------------------------
631 Return (and exit) values of the public UnZip API functions.
632 ---------------------------------------------------------------------------*/
633
634/* external return codes */
635#define PK_OK 0 /* no error */
636#define PK_COOL 0 /* no error */
637#define PK_WARN 1 /* warning error */
638#define PK_ERR 2 /* error in zipfile */
639#define PK_BADERR 3 /* severe error in zipfile */
640#define PK_MEM 4 /* insufficient memory (during initialization) */
641#define PK_MEM2 5 /* insufficient memory (password failure) */
642#define PK_MEM3 6 /* insufficient memory (file decompression) */
643#define PK_MEM4 7 /* insufficient memory (memory decompression) */
644#define PK_MEM5 8 /* insufficient memory (not yet used) */
645#define PK_NOZIP 9 /* zipfile not found */
646#define PK_PARAM 10 /* bad or illegal parameters specified */
647#define PK_FIND 11 /* no files found */
648#define PK_DISK 50 /* disk full */
649#define PK_EOF 51 /* unexpected EOF */
650
651#define IZ_CTRLC 80 /* user hit ^C to terminate */
652#define IZ_UNSUP 81 /* no files found: all unsup. compr/encrypt. */
653#define IZ_BADPWD 82 /* no files found: all had bad password */
654#define IZ_ERRBF 83 /* big-file archive, small-file program */
655
656/* return codes of password fetches (negative = user abort; positive = error) */
657#define IZ_PW_ENTERED 0 /* got some password string; use/try it */
658#define IZ_PW_CANCEL -1 /* no password available (for this entry) */
659#define IZ_PW_CANCELALL -2 /* no password, skip any further pwd. request */
660#define IZ_PW_ERROR 5 /* = PK_MEM2 : failure (no mem, no tty, ...) */
661
662/* flag values for status callback function */
663#define UZ_ST_START_EXTRACT 1 /* no details */
664#define UZ_ST_IN_PROGRESS 2 /* no details */
665#define UZ_ST_FINISH_MEMBER 3 /* 'details': extracted size */
666
667/* return values of status callback function */
668#define UZ_ST_CONTINUE 0
669#define UZ_ST_BREAK 1
670
671
672/*---------------------------------------------------------------------------
673 Prototypes for public UnZip API (DLL) functions.
674 ---------------------------------------------------------------------------*/
675
676#define UzpMatch match
677
678int UZ_EXP UzpMain OF((int argc, char **argv));
679int UZ_EXP UzpAltMain OF((int argc, char **argv, UzpInit *init));
680ZCONST UzpVer * UZ_EXP UzpVersion OF((void));
681void UZ_EXP UzpFreeMemBuffer OF((UzpBuffer *retstr));
682#ifndef WINDLL
683int UZ_EXP UzpUnzipToMemory OF((char *zip, char *file, UzpOpts *optflgs,
684 UzpCB *UsrFunc, UzpBuffer *retstr));
685int UZ_EXP UzpGrep OF((char *archive, char *file,
686 char *pattern, int cmd, int SkipBin,
687 UzpCB *UsrFunc));
688#endif
689#ifdef OS2
690int UZ_EXP UzpFileTree OF((char *name, cbList(callBack),
691 char *cpInclude[], char *cpExclude[]));
692#endif
693
694unsigned UZ_EXP UzpVersion2 OF((UzpVer2 *version));
695int UZ_EXP UzpValidate OF((char *archive, int AllCodes));
696
697
698/* default I/O functions (can be swapped out via UzpAltMain() entry point): */
699
700int UZ_EXP UzpMessagePrnt OF((zvoid *pG, uch *buf, ulg size, int flag));
701int UZ_EXP UzpMessageNull OF((zvoid *pG, uch *buf, ulg size, int flag));
702int UZ_EXP UzpInput OF((zvoid *pG, uch *buf, int *size, int flag));
703void UZ_EXP UzpMorePause OF((zvoid *pG, ZCONST char *prompt, int flag));
704int UZ_EXP UzpPassword OF((zvoid *pG, int *rcnt, char *pwbuf,
705 int size, ZCONST char *zfn,
706 ZCONST char *efn));
707
708#ifdef __cplusplus
709}
710#endif
711
712
713/*---------------------------------------------------------------------------
714 Remaining private stuff for UnZip compilation.
715 ---------------------------------------------------------------------------*/
716
717#ifdef UNZIP_INTERNAL
718# include "unzpriv.h"
719#endif
720
721
722#endif /* !__unzip_h */
#define ZCONST
Definition crc32.h:25
char * argv[]
Definition unzip.c:738
static const char * name
Definition pugl.h:1582
int version
Definition jpeglib.h:901
Definition unzip.h:601
unsigned long hi32
Definition unzip.h:603
unsigned long lo32
Definition unzip.h:602
Definition unzip.h:606
ush extra_field_length
Definition unzip.h:616
ulg crc32
Definition unzip.h:612
ush disk_number_start
Definition unzip.h:618
uch version_made_by[2]
Definition unzip.h:607
ulg external_file_attributes
Definition unzip.h:620
ush internal_file_attributes
Definition unzip.h:619
ush compression_method
Definition unzip.h:610
Uzp_Siz64 relative_offset_local_header
Definition unzip.h:621
uch version_needed_to_extract[2]
Definition unzip.h:608
Uzp_Siz64 ucsize
Definition unzip.h:614
ulg last_mod_dos_datetime
Definition unzip.h:611
ush file_comment_length
Definition unzip.h:617
ush filename_length
Definition unzip.h:615
ush general_purpose_bit_flag
Definition unzip.h:609
Uzp_Siz64 csize
Definition unzip.h:613
Definition unzip.h:427
ulg strlength
Definition unzip.h:428
char * strptr
Definition unzip.h:429
Definition unzip.h:449
PasswdFn * passwdfn
Definition unzip.h:456
StatCBFn * statrepfn
Definition unzip.h:457
PauseFn * pausefn
Definition unzip.h:455
MsgFn * msgfn
Definition unzip.h:453
ulg structlen
Definition unzip.h:450
InputFn * inputfn
Definition unzip.h:454
Definition unzip.h:432
UsrIniFn * userfn
Definition unzip.h:440
MsgFn * msgfn
Definition unzip.h:437
PauseFn * pausefn
Definition unzip.h:439
ulg structlen
Definition unzip.h:433
InputFn * inputfn
Definition unzip.h:438
Definition unzip.h:461
int W_flag
Definition unzip.h:537
int lflag
Definition unzip.h:504
char * exdir
Definition unzip.h:463
int zflag
Definition unzip.h:552
int cflag
Definition unzip.h:480
int vflag
Definition unzip.h:535
int qflag
Definition unzip.h:512
int aflag
Definition unzip.h:466
int overwrite_all
Definition unzip.h:510
int uflag
Definition unzip.h:531
int zipinfo_mode
Definition unzip.h:465
int overwrite_none
Definition unzip.h:506
int ddotflag
Definition unzip.h:557
int fflag
Definition unzip.h:486
int V_flag
Definition unzip.h:536
int D_flag
Definition unzip.h:482
int hflag
Definition unzip.h:490
int T_flag
Definition unzip.h:530
int tflag
Definition unzip.h:529
char * pwdarg
Definition unzip.h:464
int jflag
Definition unzip.h:497
int L_flag
Definition unzip.h:505
int C_flag
Definition unzip.h:481
Definition unzip.h:587
_version_type unzip
Definition unzip.h:593
char date[20]
Definition unzip.h:591
ulg flag
Definition unzip.h:589
char betalevel[10]
Definition unzip.h:590
_version_type os2dll
Definition unzip.h:595
ulg structlen
Definition unzip.h:588
char zlib_version[10]
Definition unzip.h:592
_version_type dllapimin
Definition unzip.h:597
_version_type windll
Definition unzip.h:596
_version_type zipinfo
Definition unzip.h:594
Definition unzip.h:573
ulg flag
Definition unzip.h:575
_version_type unzip
Definition unzip.h:579
_version_type dllapimin
Definition unzip.h:583
ZCONST char * zlib_version
Definition unzip.h:578
_version_type zipinfo
Definition unzip.h:580
_version_type os2dll
Definition unzip.h:581
ulg structlen
Definition unzip.h:574
ZCONST char * date
Definition unzip.h:577
ZCONST char * betalevel
Definition unzip.h:576
_version_type windll
Definition unzip.h:582
Definition unzip.h:566
uch not_used
Definition unzip.h:570
uch patchlevel
Definition unzip.h:569
uch major
Definition unzip.h:567
uch minor
Definition unzip.h:568
ZCONST uch * init
Definition extract.c:2392
ulg size
Definition extract.c:2350
void UZ_EXP UzpMorePause(zvoid *pG, ZCONST char *prompt, int flag)
Definition fileio.c:1509
int UZ_EXP UzpMessagePrnt(zvoid *pG, uch *buf, ulg size, int flag)
Definition fileio.c:1242
int UZ_EXP UzpInput(zvoid *pG, uch *buf, int *size, int flag)
Definition fileio.c:1485
archive
Definition fileio.c:1981
int UZ_EXP UzpPassword(zvoid *pG, int *rcnt, char *pwbuf, int size, ZCONST char *zfn, ZCONST char *efn)
Definition fileio.c:1571
int * pattern
Definition match.c:126
int flag
Definition unix.c:754
struct _UzpVer2 UzpVer2
struct _UzpBuffer UzpBuffer
unsigned short ush
Definition unzip.h:402
struct _UzpOpts UzpOpts
struct _UzpCB UzpCB
struct _ver _version_type
typedef int(UZ_EXP MsgFn)()
struct _Uzp_cdir_Rec Uzp_cdir_Rec
#define cbList(func)
Definition unzip.h:627
#define void
Definition unzip.h:396
unsigned long ulg
Definition unzip.h:403
struct _UzpInit UzpInit
struct _UzpVer UzpVer
char zvoid
Definition unzip.h:399
#define OF(a)
Definition unzip.h:279
#define UZ_EXP
Definition unzip.h:379
unsigned char uch
Definition unzip.h:401
struct _Uzp_Siz64 Uzp_Siz64
struct zdirent * file
Definition win32.c:1500
int argc
Definition zipinfo.c:455
struct _ver _version_type
#define ZCONST
Definition unzip.h:290
struct _Uzp_Siz64 Uzp_Siz64