/* Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2004-May-22 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, both of these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ #ifdef AMIGA #include "amiga/osdep.h" #endif #ifdef AOSVS #include "aosvs/osdep.h" #endif #ifdef ATARI #include "atari/osdep.h" #endif #ifdef __BEOS__ #include "beos/osdep.h" #endif #ifdef __ATHEOS__ #include "atheos/osdep.h" #endif #ifdef DOS #include "msdos/osdep.h" #endif #ifdef __human68k__ #include "human68k/osdep.h" #endif #if ((defined(__MWERKS__) && defined(macintosh)) || defined(MACOS)) #include "macos/osdep.h" #endif #ifdef OS2 #include "os2/osdep.h" #endif #ifdef __riscos #include "acorn/osdep.h" #endif #ifdef QDOS #include "qdos/osdep.h" #endif #ifdef __TANDEM #include "tandem.h" #include "tanzip.h" #endif #ifdef UNIX #include "unix/osdep.h" #endif #if defined(__COMPILER_KCC__) || defined(TOPS20) #include "tops20/osdep.h" #endif #if defined(VMS) || defined(__VMS) #include "vms/osdep.h" #endif #if defined(__VM__) || defined(VM_CMS) || defined(MVS) #include "cmsmvs.h" #endif #ifdef WIN32 #include "win32/osdep.h" #endif #ifdef THEOS #include "theos/osdep.h" #endif #if (defined(USE_ZLIB) && defined(ASM_CRC)) # undef ASM_CRC #endif #if (defined(USE_ZLIB) && defined(ASMV)) # undef ASMV #endif /* When "void" is an alias for "int", prototypes cannot be used. */ #if (defined(NO_VOID) && !defined(NO_PROTO)) # define NO_PROTO #endif /* Used to remove arguments in function prototypes for non-ANSI C */ #ifndef NO_PROTO # define OF(a) a #else /* NO_PROTO */ # define OF(a) () #endif /* ?NO_PROTO */ /* If the compiler can't handle const define ZCONST in osdep.h */ /* Define const itself in case the system include files are bonkers */ #ifndef ZCONST # ifdef NO_CONST # define ZCONST # define const # else # define ZCONST const # endif #endif /* * case mapping functions. case_map is used to ignore case in comparisons, * to_up is used to force upper case even on Unix (for dosify option). */ #ifdef USE_CASE_MAP # define case_map(c) upper[(c) & 0xff] # define to_up(c) upper[(c) & 0xff] #else # define case_map(c) (c) # define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c)) #endif /* USE_CASE_MAP */ /* Define void, zvoid, and extent (size_t) */ #include #ifndef NO_STDDEF_H # include #endif /* !NO_STDDEF_H */ #ifndef NO_STDLIB_H # include #endif /* !NO_STDLIB_H */ #ifndef NO_UNISTD_H # include /* usually defines _POSIX_VERSION */ #endif /* !NO_UNISTD_H */ #ifndef NO_FCNTL_H # include #endif /* !NO_FNCTL_H */ #ifndef NO_STRING_H # include #else # include #endif /* NO_STRING_H */ #ifdef NO_VOID # define void int typedef char zvoid; #else /* !NO_VOID */ # ifdef NO_TYPEDEF_VOID # define zvoid void # else typedef void zvoid; # endif #endif /* ?NO_VOID */ #ifdef NO_STRRCHR # define strrchr rindex #endif #ifdef NO_STRCHR # define strchr index #endif /* * A couple of forward declarations that are needed on systems that do * not supply C runtime library prototypes. */ #ifdef NO_PROTO char *strcpy(); char *strcat(); char *strrchr(); /* XXX use !defined(ZMEM) && !defined(__hpux__) ? */ #if !defined(ZMEM) && defined(NO_STRING_H) char *memset(); char *memcpy(); #endif /* !ZMEM && NO_STRING_H */ /* XXX use !defined(__hpux__) ? */ #ifdef NO_STDLIB_H char *calloc(); char *malloc(); char *getenv(); long atol(); #endif /* NO_STDLIB_H */ #ifndef NO_MKTEMP char *mktemp(); #endif /* !NO_MKTEMP */ /* moved to include mktemp - Cosmin 2/18/05 */ #endif /* NO_PROTO */ /* * SEEK_* macros, should be defined in stdio.h */ /* Define fseek() commands */ #ifndef SEEK_SET # define SEEK_SET 0 #endif /* !SEEK_SET */ #ifndef SEEK_CUR # define SEEK_CUR 1 #endif /* !SEEK_CUR */ #ifndef FALSE # define FALSE 0 #endif #ifndef TRUE # define TRUE 1 #endif #ifdef NO_SIZE_T typedef unsigned int extent; #else typedef size_t extent; #endif #ifdef NO_TIME_T typedef long time_t; #endif /* DBCS support for Info-ZIP's zip (mainly for japanese (-: ) * by Yoshioka Tsuneo (QWF00133@nifty.ne.jp,tsuneo-y@is.aist-nara.ac.jp) * This code is public domain! Date: 1998/12/20 */ #ifdef _MBCS # include /* Multi Byte Character Set */ extern char *___tmp_ptr; unsigned char *zmbschr OF((ZCONST unsigned char *, unsigned int)); unsigned char *zmbsrchr OF((ZCONST unsigned char *, unsigned int)); # define CLEN(ptr) mblen(ptr, MB_CUR_MAX) # define PREINCSTR(ptr) (ptr += CLEN(ptr)) # define POSTINCSTR(ptr) (___tmp_ptr=(char *)ptr,ptr += CLEN(ptr),___tmp_ptr) int lastchar OF((ZCONST char *ptr)); # define MBSCHR(str,c) (char *)zmbschr((ZCONST unsigned char *)(str), c) # define MBSRCHR(str,c) (char *)zmbsrchr((ZCONST unsigned char *)(str), (c)) # define SETLOCALE(category, locale) setlocale(category, locale) #else /* !_MBCS */ # define CLEN(ptr) 1 # define PREINCSTR(ptr) (++(ptr)) # define POSTINCSTR(ptr) ((ptr)++) # define lastchar(ptr) ((*(ptr)=='\0') ? '\0' : ptr[strlen(ptr)-1]) # define MBSCHR(str, c) strchr(str, c) # define MBSRCHR(str, c) strrchr(str, c) # define SETLOCALE(category, locale) #endif /* ?_MBCS */ #define INCSTR(ptr) PREINCSTR(ptr) /* System independent replacement for "struct utimbuf", which is missing * in many older OS environments. */ typedef struct ztimbuf { time_t actime; /* new access time */ time_t modtime; /* new modification time */ } ztimbuf; /* This macro round a time_t value to the OS specific resolution */ #ifndef ROUNDED_TIME # define ROUNDED_TIME(time) (time) #endif /* Some systems define S_IFLNK but do not support symbolic links */ #if defined (S_IFLNK) && defined(NO_SYMLINK) # undef S_IFLNK #endif #ifndef FOPR /* fallback default definitions for FOPR, FOPM, FOPW: */ # define FOPR "r" # define FOPM "r+" # define FOPW "w" #endif /* fallback definition */ #ifndef FOPW_TMP /* fallback default for opening writable temp files */ # define FOPW_TMP FOPW #endif /* Open the old zip file in exclusive mode if possible (to avoid adding * zip file to itself). */ #ifdef OS2 # define FOPR_EX FOPM #else # define FOPR_EX FOPR #endif /* MSDOS file or directory attributes */ #define MSDOS_HIDDEN_ATTR 0x02 #define MSDOS_DIR_ATTR 0x10 /* Define this symbol if your target allows access to unaligned data. * This is not mandatory, just a speed optimization. The compressed * output is strictly identical. */ #if (defined(MSDOS) && !defined(WIN32)) || defined(i386) # define UNALIGNED_OK #endif #if defined(mc68020) || defined(vax) # define UNALIGNED_OK #endif #if (defined(SMALL_MEM) && !defined(CBSZ)) # define CBSZ 2048 /* buffer size for copying files */ # define ZBSZ 2048 /* buffer size for temporary zip file */ #endif #if (defined(MEDIUM_MEM) && !defined(CBSZ)) # define CBSZ 8192 # define ZBSZ 8192 #endif #ifndef CBSZ # define CBSZ 16384 # define ZBSZ 16384 #endif #ifndef SBSZ # define SBSZ CBSZ /* copy buf size for STORED entries, see zipup() */ #endif #ifndef MEMORY16 # ifdef __WATCOMC__ # undef huge # undef far # undef near # endif # ifdef THEOS # undef far # undef near # endif # if (!defined(__IBMC__) || !defined(OS2)) # ifndef huge # define huge # endif # ifndef far # define far # endif # ifndef near # define near # endif # endif # define nearmalloc malloc # define nearfree free # define farmalloc malloc # define farfree free #endif /* !MEMORY16 */ #ifndef Far # define Far far #endif /* MMAP and BIG_MEM cannot be used together -> let MMAP take precedence */ #if (defined(MMAP) && defined(BIG_MEM)) # undef BIG_MEM #endif #if (defined(BIG_MEM) || defined(MMAP)) && !defined(DYN_ALLOC) # define DYN_ALLOC #endif #ifndef SSTAT # define SSTAT stat #endif #ifdef S_IFLNK # define LSTAT lstat # define LSSTAT(n, s) (linkput ? lstat((n), (s)) : SSTAT((n), (s))) #else # define LSTAT SSTAT # define LSSTAT SSTAT #endif /* The following default definition of the second input for the crypthead() * random seed computation can be used on most systems (all those that * supply a UNIX compatible getpid() function). */ #ifdef ZCRYPT_INTERNAL # ifndef ZCR_SEED2 # define ZCR_SEED2 (unsigned) getpid() /* use PID as seed pattern */ # endif #endif /* ZCRYPT_INTERNAL */ /* The following OS codes are defined in pkzip appnote.txt */ #ifdef AMIGA # define OS_CODE 0x100 #endif #ifdef VMS # define OS_CODE 0x200 #endif /* unix 3 */ #ifdef VM_CMS # define OS_CODE 0x400 #endif #ifdef ATARI # define OS_CODE 0x500 #endif #ifdef OS2 # define OS_CODE 0x600 #endif #ifdef MACOS # define OS_CODE 0x700 #endif /* z system 8 */ /* cp/m 9 */ #ifdef TOPS20 # define OS_CODE 0xa00 #endif #ifdef WIN32 # define OS_CODE 0xb00 #endif #ifdef QDOS # define OS_CODE 0xc00 #endif #ifdef RISCOS # define OS_CODE 0xd00 #endif #ifdef VFAT # define OS_CODE 0xe00 #endif #ifdef MVS # define OS_CODE 0xf00 #endif #ifdef __BEOS__ # define OS_CODE 0x1000 #endif #ifdef TANDEM # define OS_CODE 0x1100 #endif #ifdef THEOS # define OS_CODE 0x1200 #endif #ifdef __ATHEOS__ # define OS_CODE 0x1E00 #endif #define NUM_HOSTS 31 /* Number of operating systems. Should be updated when new ports are made */ #if defined(DOS) && !defined(OS_CODE) # define OS_CODE 0x000 #endif #ifndef OS_CODE # define OS_CODE 0x300 /* assume Unix */ #endif /* can't use "return 0" from main() on VMS */ #ifndef EXIT # define EXIT exit #endif #ifndef RETURN # define RETURN return #endif #ifndef ZIPERR # define ZIPERR ziperr #endif #if (defined(USE_ZLIB) && defined(MY_ZCALLOC)) /* special zcalloc function is not needed when linked against zlib */ # undef MY_ZCALLOC #endif #if (!defined(USE_ZLIB) && !defined(MY_ZCALLOC)) /* Any system without a special calloc function */ # define zcalloc(items,size) \ (zvoid far *)calloc((unsigned)(items), (unsigned)(size)) # define zcfree free #endif /* !USE_ZLIB && !MY_ZCALLOC */ /* end of tailor.h */