1 /* 2 tailor.h - Zip 3 3 4 Copyright (c) 1990-2008 Info-ZIP. All rights reserved. 5 6 See the accompanying file LICENSE, version 2007-Mar-4 or later 7 (the contents of which are also included in zip.h) for terms of use. 8 If, for some reason, all these files are missing, the Info-ZIP license 9 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 10 */ 11 12 /* Some compiler distributions for Win32/i386 systems try to emulate 13 * a Unix (POSIX-compatible) environment. 14 */ 15 #if (defined(WIN32) && defined(UNIX)) 16 /* Zip does not support merging both ports in a single executable. */ 17 # if (defined(FORCE_WIN32_OVER_UNIX) && defined(FORCE_UNIX_OVER_WIN32)) 18 /* conflicting choice requests -> we prefer the Win32 environment */ 19 # undef FORCE_UNIX_OVER_WIN32 20 # endif 21 # ifdef FORCE_WIN32_OVER_UNIX 22 /* native Win32 support was explicitely requested... */ 23 # undef UNIX 24 # else 25 /* use the POSIX (Unix) emulation features by default... */ 26 # undef WIN32 27 # endif 28 #endif 29 30 31 /* UNICODE */ 32 #ifdef NO_UNICODE_SUPPORT 33 # ifdef UNICODE_SUPPORT 34 # undef UNICODE_SUPPORT 35 # endif 36 #endif 37 38 39 #ifdef AMIGA 40 #include "amiga/osdep.h" 41 #endif 42 43 #ifdef AOSVS 44 #include "aosvs/osdep.h" 45 #endif 46 47 #ifdef ATARI 48 #include "atari/osdep.h" 49 #endif 50 51 #ifdef __ATHEOS__ 52 #include "atheos/osdep.h" 53 #endif 54 55 #ifdef __BEOS__ 56 #include "beos/osdep.h" 57 #endif 58 59 #ifdef DOS 60 #include "msdos/osdep.h" 61 #endif 62 63 #ifdef __human68k__ 64 #include "human68k/osdep.h" 65 #endif 66 67 #if ((defined(__MWERKS__) && defined(macintosh)) || defined(MACOS)) 68 #include "macos/osdep.h" 69 #endif 70 71 #ifdef NLM 72 #include "novell/osdep.h" 73 #endif 74 75 #ifdef OS2 76 #include "os2/osdep.h" 77 #endif 78 79 #ifdef __riscos 80 #include "acorn/osdep.h" 81 #endif 82 83 #ifdef QDOS 84 #include "qdos/osdep.h" 85 #endif 86 87 #ifdef __TANDEM 88 #include "tandem.h" 89 #include "tanzip.h" 90 #endif 91 92 #ifdef UNIX 93 #include "unix/osdep.h" 94 #endif 95 96 #if defined(__COMPILER_KCC__) || defined(TOPS20) 97 #include "tops20/osdep.h" 98 #endif 99 100 #if defined(VMS) || defined(__VMS) 101 #include "vms/osdep.h" 102 #endif 103 104 #if defined(__VM__) || defined(VM_CMS) || defined(MVS) 105 #include "cmsmvs.h" 106 #endif 107 108 #ifdef WIN32 109 #include "win32/osdep.h" 110 #endif 111 112 #ifdef THEOS 113 #include "theos/osdep.h" 114 #endif 115 116 117 /* generic LARGE_FILE_SUPPORT defines 118 These get used if not defined above. 119 7/21/2004 EG 120 */ 121 /* If a port hasn't defined ZOFF_T_FORMAT_SIZE_PREFIX 122 then probably need to define all of these. */ 123 #ifndef ZOFF_T_FORMAT_SIZE_PREFIX 124 125 # ifdef LARGE_FILE_SUPPORT 126 /* Probably passed in from command line instead of in above 127 includes if get here. Assume large file support and hope. 8/14/04 EG */ 128 129 /* Set the Large File Summit (LFS) defines to turn on large file support 130 in case it helps. */ 131 132 # define _LARGEFILE_SOURCE /* some OSes need this for fseeko */ 133 # define _LARGEFILE64_SOURCE 134 # define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ 135 # define _LARGE_FILES /* some OSes need this for 64-bit off_t */ 136 137 typedef off_t zoff_t; 138 typedef unsigned long long uzoff_t; /* unsigned zoff_t (12/29/04 EG) */ 139 140 /* go with common prefix */ 141 # define ZOFF_T_FORMAT_SIZE_PREFIX "ll" 142 143 # else 144 /* Default type for offsets and file sizes was ulg but reports 145 of using ulg to create files from 2 GB to 4 GB suggest 146 it doesn't work well. Now just switch to Zip64 or not 147 support over 2 GB. 7/24/04 EG */ 148 /* Now use uzoff_t for unsigned things. 12/29/04 EG */ 149 typedef long zoff_t; 150 typedef unsigned long uzoff_t; 151 152 # define ZOFF_T_FORMAT_SIZE_PREFIX "l" 153 154 # endif 155 156 typedef struct stat z_stat; 157 158 /* flag that we are defaulting */ 159 # define USING_DEFAULT_LARGE_FILE_SUPPORT 160 #endif 161 162 163 #if (defined(USE_ZLIB) && defined(ASM_CRC)) 164 # undef ASM_CRC 165 #endif 166 167 #if (defined(USE_ZLIB) && defined(ASMV)) 168 # undef ASMV 169 #endif 170 171 /* When "void" is an alias for "int", prototypes cannot be used. */ 172 #if (defined(NO_VOID) && !defined(NO_PROTO)) 173 # define NO_PROTO 174 #endif 175 176 /* Used to remove arguments in function prototypes for non-ANSI C */ 177 #ifndef NO_PROTO 178 # define OF(a) a 179 # define OFT(a) a 180 #else /* NO_PROTO */ 181 # define OF(a) () 182 # define OFT(a) 183 #endif /* ?NO_PROTO */ 184 185 /* If the compiler can't handle const define ZCONST in osdep.h */ 186 /* Define const itself in case the system include files are bonkers */ 187 #ifndef ZCONST 188 # ifdef NO_CONST 189 # define ZCONST 190 # define const 191 # else 192 # define ZCONST const 193 # endif 194 #endif 195 196 /* 197 * Some compiler environments may require additional attributes attached 198 * to declarations of runtime libary functions (e.g. to prepare for 199 * linking against a "shared dll" version of the RTL). Here, we provide 200 * the "empty" default for these attributes. 201 */ 202 #ifndef IZ_IMP 203 # define IZ_IMP 204 #endif 205 206 /* 207 * case mapping functions. case_map is used to ignore case in comparisons, 208 * to_up is used to force upper case even on Unix (for dosify option). 209 */ 210 #ifdef USE_CASE_MAP 211 # define case_map(c) upper[(c) & 0xff] 212 # define to_up(c) upper[(c) & 0xff] 213 #else 214 # define case_map(c) (c) 215 # define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c)) 216 #endif /* USE_CASE_MAP */ 217 218 /* Define void, zvoid, and extent (size_t) */ 219 #include <stdio.h> 220 221 #ifndef NO_STDDEF_H 222 # include <stddef.h> 223 #endif /* !NO_STDDEF_H */ 224 225 #ifndef NO_STDLIB_H 226 # include <stdlib.h> 227 #endif /* !NO_STDLIB_H */ 228 229 #ifndef NO_UNISTD_H 230 # include <unistd.h> /* usually defines _POSIX_VERSION */ 231 #endif /* !NO_UNISTD_H */ 232 233 #ifndef NO_FCNTL_H 234 # include <fcntl.h> 235 #endif /* !NO_FNCTL_H */ 236 237 #ifndef NO_STRING_H 238 # include <string.h> 239 #else 240 # include <strings.h> 241 #endif /* NO_STRING_H */ 242 243 #ifdef NO_VOID 244 # define void int 245 typedef char zvoid; 246 #else /* !NO_VOID */ 247 # ifdef NO_TYPEDEF_VOID 248 # define zvoid void 249 # else 250 typedef void zvoid; 251 # endif 252 #endif /* ?NO_VOID */ 253 254 #ifdef NO_STRRCHR 255 # define strrchr rindex 256 #endif 257 258 #ifdef NO_STRCHR 259 # define strchr index 260 #endif 261 262 /* 263 * A couple of forward declarations that are needed on systems that do 264 * not supply C runtime library prototypes. 265 */ 266 #ifdef NO_PROTO 267 IZ_IMP char *strcpy(); 268 IZ_IMP char *strcat(); 269 IZ_IMP char *strrchr(); 270 /* XXX use !defined(ZMEM) && !defined(__hpux__) ? */ 271 #if !defined(ZMEM) && defined(NO_STRING_H) 272 IZ_IMP char *memset(); 273 IZ_IMP char *memcpy(); 274 #endif /* !ZMEM && NO_STRING_H */ 275 276 /* XXX use !defined(__hpux__) ? */ 277 #ifdef NO_STDLIB_H 278 IZ_IMP char *calloc(); 279 IZ_IMP char *malloc(); 280 IZ_IMP char *getenv(); 281 IZ_IMP long atol(); 282 #endif /* NO_STDLIB_H */ 283 284 #ifndef NO_MKTEMP 285 IZ_IMP char *mktemp(); 286 #endif /* !NO_MKTEMP */ 287 288 #endif /* NO_PROTO */ 289 290 /* 291 * SEEK_* macros, should be defined in stdio.h 292 */ 293 /* Define fseek() commands */ 294 #ifndef SEEK_SET 295 # define SEEK_SET 0 296 #endif /* !SEEK_SET */ 297 298 #ifndef SEEK_CUR 299 # define SEEK_CUR 1 300 #endif /* !SEEK_CUR */ 301 302 #ifndef FALSE 303 # define FALSE 0 304 #endif 305 306 #ifndef TRUE 307 # define TRUE 1 308 #endif 309 310 #ifdef NO_SIZE_T 311 typedef unsigned int extent; 312 /* define size_t 3/17/05 EG */ 313 typedef unsigned int size_t; 314 #else 315 typedef size_t extent; 316 #endif 317 318 #ifdef NO_TIME_T 319 typedef long time_t; 320 #endif 321 322 /* DBCS support for Info-ZIP's zip (mainly for japanese (-: ) 323 * by Yoshioka Tsuneo (QWF00133@nifty.ne.jp,tsuneo-y@is.aist-nara.ac.jp) 324 * This code is public domain! Date: 1998/12/20 325 */ 326 327 /* 2007-07-29 SMS. 328 * Include <locale.h> here if it will be needed later for Unicode. 329 * Otherwise, SETLOCALE may be defined here, and then defined again 330 * (differently) when <locale.h> is read later. 331 */ 332 #ifdef UNICODE_SUPPORT 333 # if defined( UNIX) || defined( VMS) 334 # include <locale.h> 335 # endif /* defined( UNIX) || defined( VMS) */ 336 # include <wchar.h> 337 # include <wctype.h> 338 #endif /* def UNICODE_SUPPORT */ 339 340 #ifdef _MBCS 341 # include <locale.h> 342 343 /* Multi Byte Character Set */ 344 extern char *___tmp_ptr; 345 unsigned char *zmbschr OF((ZCONST unsigned char *, unsigned int)); 346 unsigned char *zmbsrchr OF((ZCONST unsigned char *, unsigned int)); 347 # define CLEN(ptr) mblen((ZCONST char *)ptr, MB_CUR_MAX) 348 # define PREINCSTR(ptr) (ptr += CLEN(ptr)) 349 # define POSTINCSTR(ptr) (___tmp_ptr=(char *)ptr,ptr += CLEN(ptr),___tmp_ptr) 350 int lastchar OF((ZCONST char *ptr)); 351 # define MBSCHR(str,c) (char *)zmbschr((ZCONST unsigned char *)(str), c) 352 # define MBSRCHR(str,c) (char *)zmbsrchr((ZCONST unsigned char *)(str), (c)) 353 # ifndef SETLOCALE 354 # define SETLOCALE(category, locale) setlocale(category, locale) 355 # endif /* ndef SETLOCALE */ 356 #else /* !_MBCS */ 357 # define CLEN(ptr) 1 358 # define PREINCSTR(ptr) (++(ptr)) 359 # define POSTINCSTR(ptr) ((ptr)++) 360 # define lastchar(ptr) ((*(ptr)=='\0') ? '\0' : ptr[strlen(ptr)-1]) 361 # define MBSCHR(str, c) strchr(str, c) 362 # define MBSRCHR(str, c) strrchr(str, c) 363 # ifndef SETLOCALE 364 # define SETLOCALE(category, locale) 365 # endif /* ndef SETLOCALE */ 366 #endif /* ?_MBCS */ 367 #define INCSTR(ptr) PREINCSTR(ptr) 368 369 370 /* System independent replacement for "struct utimbuf", which is missing 371 * in many older OS environments. 372 */ 373 typedef struct ztimbuf { 374 time_t actime; /* new access time */ 375 time_t modtime; /* new modification time */ 376 } ztimbuf; 377 378 /* This macro round a time_t value to the OS specific resolution */ 379 #ifndef ROUNDED_TIME 380 # define ROUNDED_TIME(time) (time) 381 #endif 382 383 /* Some systems define S_IFLNK but do not support symbolic links */ 384 #if defined (S_IFLNK) && defined(NO_SYMLINKS) 385 # undef S_IFLNK 386 #endif 387 388 #ifndef Z_UINT4_DEFINED 389 # if !defined(NO_LIMITS_H) 390 # if (defined(UINT_MAX) && (UINT_MAX == 0xffffffffUL)) 391 typedef unsigned int z_uint4; 392 # define Z_UINT4_DEFINED 393 # else 394 # if (defined(ULONG_MAX) && (ULONG_MAX == 0xffffffffUL)) 395 typedef unsigned long z_uint4; 396 # define Z_UINT4_DEFINED 397 # else 398 # if (defined(USHRT_MAX) && (USHRT_MAX == 0xffffffffUL)) 399 typedef unsigned short z_uint4; 400 # define Z_UINT4_DEFINED 401 # endif 402 # endif 403 # endif 404 # endif /* !defined(NO_LIMITS_H) */ 405 #endif /* ndef Z_UINT4_DEFINED */ 406 #ifndef Z_UINT4_DEFINED 407 typedef ulg z_uint4; 408 # define Z_UINT4_DEFINED 409 #endif 410 411 #ifndef FOPR /* fallback default definitions for FOPR, FOPM, FOPW: */ 412 # define FOPR "r" 413 # define FOPM "r+" 414 # define FOPW "w" 415 #endif /* fallback definition */ 416 417 #ifndef FOPW_TMP /* fallback default for opening writable temp files */ 418 # define FOPW_TMP FOPW 419 #endif 420 421 /* Open the old zip file in exclusive mode if possible (to avoid adding 422 * zip file to itself). 423 */ 424 #ifdef OS2 425 # define FOPR_EX FOPM 426 #else 427 # define FOPR_EX FOPR 428 #endif 429 430 431 /* MSDOS file or directory attributes */ 432 #define MSDOS_HIDDEN_ATTR 0x02 433 #define MSDOS_DIR_ATTR 0x10 434 435 436 /* Define this symbol if your target allows access to unaligned data. 437 * This is not mandatory, just a speed optimization. The compressed 438 * output is strictly identical. 439 */ 440 #if (defined(MSDOS) && !defined(WIN32)) || defined(i386) 441 # define UNALIGNED_OK 442 #endif 443 #if defined(mc68020) || defined(vax) 444 # define UNALIGNED_OK 445 #endif 446 447 #if (defined(SMALL_MEM) && !defined(CBSZ)) 448 # define CBSZ 2048 /* buffer size for copying files */ 449 # define ZBSZ 2048 /* buffer size for temporary zip file */ 450 #endif 451 452 #if (defined(MEDIUM_MEM) && !defined(CBSZ)) 453 # define CBSZ 8192 454 # define ZBSZ 8192 455 #endif 456 457 #ifndef CBSZ 458 # define CBSZ 16384 459 # define ZBSZ 16384 460 #endif 461 462 #ifndef SBSZ 463 # define SBSZ CBSZ /* copy buf size for STORED entries, see zipup() */ 464 #endif 465 466 #ifndef MEMORY16 467 # ifdef __WATCOMC__ 468 # undef huge 469 # undef far 470 # undef near 471 # endif 472 # ifdef THEOS 473 # undef far 474 # undef near 475 # endif 476 # if (!defined(__IBMC__) || !defined(OS2)) 477 # ifndef huge 478 # define huge 479 # endif 480 # ifndef far 481 # define far 482 # endif 483 # ifndef near 484 # define near 485 # endif 486 # endif 487 # define nearmalloc malloc 488 # define nearfree free 489 # define farmalloc malloc 490 # define farfree free 491 #endif /* !MEMORY16 */ 492 493 #ifndef Far 494 # define Far far 495 #endif 496 497 /* MMAP and BIG_MEM cannot be used together -> let MMAP take precedence */ 498 #if (defined(MMAP) && defined(BIG_MEM)) 499 # undef BIG_MEM 500 #endif 501 502 #if (defined(BIG_MEM) || defined(MMAP)) && !defined(DYN_ALLOC) 503 # define DYN_ALLOC 504 #endif 505 506 507 /* LARGE_FILE_SUPPORT 508 * 509 * Types are in osdep.h for each port 510 * 511 * LARGE_FILE_SUPPORT and ZIP64_SUPPORT are automatically 512 * set in osdep.h (for some ports) based on the port and compiler. 513 * 514 * Function prototypes are below as OF is defined earlier in this file 515 * but after osdep.h is included. In the future ANSI prototype 516 * support may be required and the OF define may then go away allowing 517 * the function defines to be in the port osdep.h. 518 * 519 * E. Gordon 9/21/2003 520 * Updated 7/24/04 EG 521 */ 522 #ifdef LARGE_FILE_SUPPORT 523 /* 64-bit Large File Support */ 524 525 /* Arguments for all functions are assumed to match the actual 526 arguments of the various port calls. As such only the 527 function names are mapped below. */ 528 529 /* ---------------------------- */ 530 # ifdef UNIX 531 532 /* Assume 64-bit file environment is defined. The below should all 533 be set to their 64-bit versions automatically. Neat. 7/20/2004 EG */ 534 535 /* 64-bit stat functions */ 536 # define zstat stat 537 # define zfstat fstat 538 # define zlstat lstat 539 540 # if defined(__alpha) && defined(__osf__) /* support for osf4.0f */ 541 /* 64-bit fseek */ 542 # define zfseeko fseek 543 544 /* 64-bit ftell */ 545 # define zftello ftell 546 547 # else 548 /* 64-bit fseeko */ 549 # define zfseeko fseeko 550 551 /* 64-bit ftello */ 552 # define zftello ftello 553 # endif /* __alpha && __osf__ */ 554 555 /* 64-bit fopen */ 556 # define zfopen fopen 557 # define zfdopen fdopen 558 559 # endif /* UNIX */ 560 561 /* ---------------------------- */ 562 # ifdef VMS 563 564 /* 64-bit stat functions */ 565 # define zstat stat 566 # define zfstat fstat 567 # define zlstat lstat 568 569 /* 64-bit fseeko */ 570 # define zfseeko fseeko 571 572 /* 64-bit ftello */ 573 # define zftello ftello 574 575 /* 64-bit fopen */ 576 # define zfopen fopen 577 # define zfdopen fdopen 578 579 # endif /* def VMS */ 580 581 /* ---------------------------- */ 582 # ifdef WIN32 583 584 # if defined(__MINGW32__) 585 /* GNU C, linked against "msvcrt.dll" */ 586 587 /* 64-bit stat functions */ 588 # define zstat _stati64 589 # ifdef UNICODE_SUPPORT 590 # define zwfstat _fstati64 591 # define zwstat _wstati64 592 # define zw_stat struct _stati64 593 # endif 594 # define zfstat _fstati64 595 # define zlstat lstat 596 597 /* 64-bit fseeko */ 598 /* function in win32.c */ 599 int zfseeko OF((FILE *, zoff_t, int)); 600 601 /* 64-bit ftello */ 602 /* function in win32.c */ 603 zoff_t zftello OF((FILE *)); 604 605 /* 64-bit fopen */ 606 # define zfopen fopen 607 # define zfdopen fdopen 608 609 # endif 610 611 # if defined(__CYGWIN__) 612 /* GNU C, CygWin with its own POSIX compatible runtime library */ 613 614 /* 64-bit stat functions */ 615 # define zstat stat 616 # define zfstat fstat 617 # define zlstat lstat 618 619 /* 64-bit fseeko */ 620 # define zfseeko fseeko 621 622 /* 64-bit ftello */ 623 # define zftello ftello 624 625 /* 64-bit fopen */ 626 # define zfopen fopen 627 # define zfdopen fdopen 628 629 # endif 630 631 # ifdef __WATCOMC__ 632 /* WATCOM C */ 633 634 /* 64-bit stat functions */ 635 # define zstat _stati64 636 # ifdef UNICODE_SUPPORT 637 # define zwfstat _fstati64 638 # define zwstat _wstati64 639 # define zw_stat struct _stati64 640 # endif 641 # define zfstat _fstati64 642 # define zlstat lstat 643 644 /* 64-bit fseeko */ 645 /* function in win32.c */ 646 int zfseeko OF((FILE *, zoff_t, int)); 647 648 /* 64-bit ftello */ 649 /* function in win32.c */ 650 zoff_t zftello OF((FILE *)); 651 652 /* 64-bit fopen */ 653 # define zfopen fopen 654 # define zfdopen fdopen 655 656 # endif 657 658 # ifdef _MSC_VER 659 /* MS C and VC */ 660 661 /* 64-bit stat functions */ 662 # define zstat _stati64 663 # ifdef UNICODE_SUPPORT 664 # define zwfstat _fstati64 665 # define zwstat _wstati64 666 # define zw_stat struct _stati64 667 # endif 668 # define zfstat _fstati64 669 # define zlstat lstat 670 671 /* 64-bit fseeko */ 672 /* function in win32.c */ 673 int zfseeko OF((FILE *, zoff_t, int)); 674 675 /* 64-bit ftello */ 676 /* function in win32.c */ 677 zoff_t zftello OF((FILE *)); 678 679 /* 64-bit fopen */ 680 # define zfopen fopen 681 # define zfdopen fdopen 682 683 # endif 684 685 # ifdef __IBMC__ 686 /* IBM C */ 687 688 /* 64-bit stat functions */ 689 690 /* 64-bit fseeko */ 691 /* function in win32.c */ 692 int zfseeko OF((FILE *, zoff_t, int)); 693 694 /* 64-bit ftello */ 695 /* function in win32.c */ 696 zoff_t zftello OF((FILE *)); 697 698 /* 64-bit fopen */ 699 700 # endif 701 702 # endif /* WIN32 */ 703 704 #else 705 /* No Large File Support or default for 64-bit environment */ 706 707 # define zstat stat 708 # define zfstat fstat 709 # define zlstat lstat 710 # define zfseeko fseek 711 # define zftello ftell 712 # define zfopen fopen 713 # define zfdopen fdopen 714 # ifdef UNICODE_SUPPORT 715 # define zwfstat _fstat 716 # define zwstat _wstat 717 # define zw_stat struct _stat 718 # endif 719 720 #endif 721 722 #ifdef LARGE_FILE_SUPPORT /* E. Gordon 9/12/2003 */ 723 724 # ifndef SSTAT 725 # define SSTAT zstat 726 # ifdef UNICODE_SUPPORT 727 # define SSTATW zwstat 728 # endif 729 # endif 730 # ifdef S_IFLNK 731 # define LSTAT zlstat 732 # define LSSTAT(n, s) (linkput ? zlstat((n), (s)) : SSTAT((n), (s))) 733 # else 734 # define LSTAT SSTAT 735 # define LSSTAT SSTAT 736 # ifdef UNICODE_SUPPORT 737 # define LSSTATW SSTATW 738 # endif 739 # endif 740 741 #else /* no LARGE_FILE_SUPPORT */ 742 743 # ifndef SSTAT 744 # define SSTAT stat 745 # endif 746 # ifdef S_IFLNK 747 # define LSTAT lstat 748 # define LSSTAT(n, s) (linkput ? lstat((n), (s)) : SSTAT((n), (s))) 749 # else 750 # define LSTAT SSTAT 751 # define LSSTAT SSTAT 752 # ifdef UNICODE_SUPPORT 753 # define LSSTATW SSTATW 754 # endif 755 # endif 756 757 #endif 758 759 760 /*---------------------------------------------------------------------*/ 761 762 763 /* 2004-12-01 SMS. 764 * Added fancy zofft() macros, et c. 765 */ 766 767 /* Default fzofft() format selection. 768 * Modified 2004-12-27 EG 769 */ 770 771 #ifndef FZOFFT_FMT 772 # define FZOFFT_FMT ZOFF_T_FORMAT_SIZE_PREFIX /* printf for zoff_t values */ 773 774 # ifdef LARGE_FILE_SUPPORT 775 # define FZOFFT_HEX_WID_VALUE "16" /* width of 64-bit hex values */ 776 # else 777 # define FZOFFT_HEX_WID_VALUE "8" /* digits in 32-bit hex values */ 778 # endif 779 780 #endif /* ndef FZOFFT_FMT */ 781 782 #define FZOFFT_HEX_WID ((char *) -1) 783 #define FZOFFT_HEX_DOT_WID ((char *) -2) 784 785 786 787 788 /* The following default definition of the second input for the crypthead() 789 * random seed computation can be used on most systems (all those that 790 * supply a UNIX compatible getpid() function). 791 */ 792 #ifdef ZCRYPT_INTERNAL 793 # ifndef ZCR_SEED2 794 # define ZCR_SEED2 (unsigned) getpid() /* use PID as seed pattern */ 795 # endif 796 #endif /* ZCRYPT_INTERNAL */ 797 798 /* The following OS codes are defined in pkzip appnote.txt */ 799 #ifdef AMIGA 800 # define OS_CODE 0x100 801 #endif 802 #ifdef VMS 803 # define OS_CODE 0x200 804 #endif 805 /* unix 3 */ 806 #ifdef VM_CMS 807 # define OS_CODE 0x400 808 #endif 809 #ifdef ATARI 810 # define OS_CODE 0x500 811 #endif 812 #ifdef OS2 813 # define OS_CODE 0x600 814 #endif 815 #ifdef MACOS 816 # define OS_CODE 0x700 817 #endif 818 /* z system 8 */ 819 /* cp/m 9 */ 820 #ifdef TOPS20 821 # define OS_CODE 0xa00 822 #endif 823 #ifdef WIN32 824 # define OS_CODE 0xb00 825 #endif 826 #ifdef QDOS 827 # define OS_CODE 0xc00 828 #endif 829 #ifdef RISCOS 830 # define OS_CODE 0xd00 831 #endif 832 #ifdef VFAT 833 # define OS_CODE 0xe00 834 #endif 835 #ifdef MVS 836 # define OS_CODE 0xf00 837 #endif 838 #ifdef __BEOS__ 839 # define OS_CODE 0x1000 840 #endif 841 #ifdef TANDEM 842 # define OS_CODE 0x1100 843 #endif 844 #ifdef THEOS 845 # define OS_CODE 0x1200 846 #endif 847 /* Yes, there is a gap here. */ 848 #ifdef __ATHEOS__ 849 # define OS_CODE 0x1E00 850 #endif 851 852 #define NUM_HOSTS 31 853 /* Number of operating systems. Should be updated when new ports are made */ 854 855 #if defined(DOS) && !defined(OS_CODE) 856 # define OS_CODE 0x000 857 #endif 858 859 #ifndef OS_CODE 860 # define OS_CODE 0x300 /* assume Unix */ 861 #endif 862 863 /* can't use "return 0" from main() on VMS */ 864 #ifndef EXIT 865 # define EXIT exit 866 #endif 867 #ifndef RETURN 868 # define RETURN return 869 #endif 870 871 #ifndef ZIPERR 872 # define ZIPERR ziperr 873 #endif 874 875 #if (defined(USE_ZLIB) && defined(MY_ZCALLOC)) 876 /* special zcalloc function is not needed when linked against zlib */ 877 # undef MY_ZCALLOC 878 #endif 879 880 #if (!defined(USE_ZLIB) && !defined(MY_ZCALLOC)) 881 /* Any system without a special calloc function */ 882 # define zcalloc(items,size) \ 883 (zvoid far *)calloc((unsigned)(items), (unsigned)(size)) 884 # define zcfree free 885 #endif /* !USE_ZLIB && !MY_ZCALLOC */ 886 887 /* end of tailor.h */ 888