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