1/* 2 Copyright (c) 1990-2008 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2007-Mar-4 or later 5 (the contents of which are also included in zip.h) for terms of use. 6 If, for some reason, all these files are missing, the Info-ZIP license 7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8*/ 9/* The symbol DOS is used throughout the Zip source to identify code portions 10 * specific to the MSDOS port. 11 * Just to make sure, we check that it is set. 12 * (Currently, this should should not be neccessary, since currently it has 13 * to be set on the compiler command line to get this file read in.) 14 */ 15#ifndef DOS 16# define DOS 17#endif 18 19/* The symbol MSDOS is consistently used in the generic source files 20 * to identify code to support for MSDOS (and MSDOS related) stuff. 21 * e.g: FAT or (FAT like) file systems, 22 * '\\' as directory separator in paths, 23 * "\r\n" as record (line) terminator in text files, ... 24 * 25 * IMPORTANT Note: 26 * This symbol is not unique for the MSDOS port !!!!!! 27 * It is also defined by ports to some other OS which are (to some extend) 28 * considered DOS compatible. 29 * Examples are: OS/2 (OS2), Windows NT and Windows 95 (WIN32). 30 * 31 */ 32#ifndef MSDOS 33# define MSDOS 34#endif 35 36/* Power C is similar to Turbo C */ 37#ifdef __POWERC 38# define __TURBOC__ 39#endif /* __POWERC */ 40 41/* Automatic setting of the common Microsoft C idenfifier MSC. 42 * NOTE: Watcom also defines M_I*86 ! 43 */ 44#if defined(_MSC_VER) || (defined(M_I86) && !defined(__WATCOMC__)) 45# ifndef MSC 46# define MSC /* This should work for older MSC, too! */ 47# endif 48#endif 49 50#if !defined(__GO32__) && !defined(__EMX__) 51# define NO_UNISTD_H 52#endif 53 54#if defined(__WATCOMC__) && defined(__386__) 55# define WATCOMC_386 56#endif 57 58#ifdef WINDLL 59# define MSWIN 60# define MEMORY16 61#endif 62 63 64#if !defined(__EMX__) && !defined(__GO32__) && !defined(WATCOMC_386) 65#if !defined(WINDLL) 66# define MSDOS16 /* 16 bit MSDOS only */ 67# define MEMORY16 68#endif 69#endif 70 71#if !defined(NO_ASM) && !defined(ASMV) 72# define ASMV 73#endif 74 75/* enable creation of UTC time fields unless explicitely suppressed */ 76#if !defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME) 77# define USE_EF_UT_TIME 78#endif 79 80/* check that TZ environment variable is defined before using UTC times */ 81#if (!defined(NO_IZ_CHECK_TZ) && !defined(IZ_CHECK_TZ)) 82# define IZ_CHECK_TZ 83#endif 84 85#ifdef MEMORY16 86# ifndef NO_ASM 87# define ASM_CRC 1 88# endif /* ?NO_ASM */ 89# ifdef __TURBOC__ 90# include <alloc.h> 91# if defined(__COMPACT__) || defined(__LARGE__) || defined(__HUGE__) 92# if defined(DYNAMIC_CRC_TABLE) && defined(DYNALLOC_CRCTAB) 93 error: No dynamic CRC table allocation with Borland C far data models. 94# endif /* DYNAMIC_CRC_TABLE */ 95# endif /* Turbo/Borland C far data memory models */ 96# define nearmalloc malloc 97# define nearfree free 98# define DYN_ALLOC 99# else /* !__TURBOC__ */ 100# include <malloc.h> 101# define nearmalloc _nmalloc 102# define nearfree _nfree 103# define farmalloc _fmalloc 104# define farfree _ffree 105# endif /* ?__TURBOC__ */ 106# define MY_ZCALLOC 1 107# ifdef SMALL_MEM 108# define CBSZ 2048 109# define ZBSZ 2048 110# endif 111# ifdef MEDIUM_MEM 112# define CBSZ 4096 113# define ZBSZ 4096 114# endif 115# ifndef CBSZ 116# define CBSZ 8192 117# define ZBSZ 8192 118# endif 119#endif /* MEMORY16 */ 120 121 122/* Symbolic links are not supported, but some compilers may define S_IFLNK. */ 123#ifndef NO_SYMLINKS 124# define NO_SYMLINKS 125#endif 126 127#ifdef MATCH 128# undef MATCH 129#endif 130#define MATCH dosmatch /* use DOS style wildcard matching */ 131 132#define USE_CASE_MAP 133 134#define ROUNDED_TIME(time) (((time) + 1) & (~1)) 135#define PROCNAME(n) (action == ADD || action == UPDATE ? wild(n) : \ 136 procname(n, 1)) 137 138#define FOPR "rb" 139#define FOPM "r+b" 140#define FOPW "wb" 141 142#include <sys/types.h> 143#include <sys/stat.h> 144#include <io.h> 145 146#ifdef ZCRYPT_INTERNAL 147# ifdef WINDLL 148# define ZCR_SEED2 (unsigned)3141592654L /* use PI as seed pattern */ 149# else 150# ifndef __GO32__ 151# include <process.h> /* getpid() declaration for srand seed */ 152# endif 153# endif 154#endif 155 156/* 157 * djgpp 1.x did not declare these 158 */ 159#if defined(__GO32__) && !defined(__DJGPP__) 160char *strlwr(char *); 161int setmode(int, int); 162#endif 163 164#ifdef __WATCOMC__ 165# define NO_MKTEMP 166# define HAS_OPENDIR 167# define SSTAT stat_bandaid 168 int stat_bandaid(const char *path, struct stat *buf); 169 170/* Get asm routines to link properly without using "__cdecl": */ 171# ifdef __386__ 172# ifdef ASMV 173# pragma aux match_init "_*" parm caller [] modify [] 174# pragma aux longest_match "_*" parm caller [] value [eax] \ 175 modify [eax ecx edx] 176# endif 177# ifndef USE_ZLIB 178# pragma aux crc32 "_*" parm caller [] value [eax] modify [eax] 179# pragma aux get_crc_table "_*" parm caller [] value [eax] \ 180 modify [eax ecx edx] 181# endif /* !USE_ZLIB */ 182# else /* !__386__ */ 183# ifdef ASMV 184# pragma aux match_init "_*" parm caller [] loadds modify [ax bx] 185# pragma aux longest_match "_*" parm caller [] loadds value [ax] \ 186 modify [ax bx cx dx es] 187# endif /* ASMV */ 188# ifndef USE_ZLIB 189# pragma aux crc32 "_*" parm caller [] value [ax dx] \ 190 modify [ax bx cx dx es] 191# pragma aux get_crc_table "_*" parm caller [] value [ax] \ 192 modify [ax bx cx dx] 193# endif /* !USE_ZLIB */ 194# endif /* ?__386__ */ 195#endif /* __WATCOMC__ */ 196 197/* 198 * Wrapper function to get around the MSC7 00:00:00 31 Dec 1899 time base, 199 * see msdos.c for more info 200 */ 201 202#if defined(_MSC_VER) && _MSC_VER == 700 203# define localtime(t) msc7_localtime(t) 204#endif 205 206#ifdef __TURBOC__ 207# ifdef __FILEIO_C 208# include <dir.h> /* supplies mktemp() prototype */ 209# endif 210#endif 211 212#if (defined(__TURBOC__) && !defined(__BORLANDC__) && __TURBOC__ <= 0x0201) 213# ifndef NO_MKTIME 214# define NO_MKTIME /* TC 2.01 and earlier do not supply mktime() */ 215# endif 216#endif 217 218void check_for_windows(char *app); 219