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