diff options
Diffstat (limited to 'msdos/osdep.h')
-rw-r--r-- | msdos/osdep.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/msdos/osdep.h b/msdos/osdep.h new file mode 100644 index 0000000..380cd84 --- /dev/null +++ b/msdos/osdep.h @@ -0,0 +1,205 @@ +/* + 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.htmlhtml +*/ +/* The symbol DOS is used throughout the Zip source to identify code portions + * specific to the MSDOS port. + * Just to make sure, we check that it is set. + * (Currently, this should should not be neccessary, since currently it has + * to be set on the compiler command line to get this file read in.) + */ +#ifndef DOS +# define DOS +#endif + +/* The symbol MSDOS is consistently used in the generic source files + * to identify code to support for MSDOS (and MSDOS related) stuff. + * e.g: FAT or (FAT like) file systems, + * '\\' as directory separator in paths, + * "\r\n" as record (line) terminator in text files, ... + * + * IMPORTANT Note: + * This symbol is not unique for the MSDOS port !!!!!! + * It is also defined by ports to some other OS which are (to some extend) + * considered DOS compatible. + * Examples are: OS/2 (OS2), Windows NT and Windows 95 (WIN32). + * + */ +#ifndef MSDOS +# define MSDOS +#endif + +/* Power C is similar to Turbo C */ +#ifdef __POWERC +# define __TURBOC__ +#endif /* __POWERC */ + +/* Automatic setting of the common Microsoft C idenfifier MSC. + * NOTE: Watcom also defines M_I*86 ! + */ +#if defined(_MSC_VER) || (defined(M_I86) && !defined(__WATCOMC__)) +# ifndef MSC +# define MSC /* This should work for older MSC, too! */ +# endif +#endif + +#if !defined(__GO32__) && !defined(__EMX__) +# define NO_UNISTD_H +#endif + +#if defined(__WATCOMC__) && defined(__386__) +# define WATCOMC_386 +#endif + +#ifdef WINDLL +# define MSWIN +# define MEMORY16 +#endif + + +#if !defined(__EMX__) && !defined(__GO32__) && !defined(WATCOMC_386) +#if !defined(WINDLL) +# define MSDOS16 /* 16 bit MSDOS only */ +# define MEMORY16 +#endif +#endif + +#if !defined(NO_ASM) && !defined(ASMV) +# define ASMV +#endif + +/* enable creation of UTC time fields unless explicitely suppressed */ +#if !defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME) +# define USE_EF_UT_TIME +#endif + +/* check that TZ environment variable is defined before using UTC times */ +#if (!defined(NO_IZ_CHECK_TZ) && !defined(IZ_CHECK_TZ)) +# define IZ_CHECK_TZ +#endif + +#ifdef MEMORY16 +# ifndef NO_ASM +# define ASM_CRC 1 +# endif /* ?NO_ASM */ +# ifdef __TURBOC__ +# include <alloc.h> +# if defined(__COMPACT__) || defined(__LARGE__) || defined(__HUGE__) +# if defined(DYNAMIC_CRC_TABLE) && defined(DYNALLOC_CRCTAB) + error: No dynamic CRC table allocation with Borland C far data models. +# endif /* DYNAMIC_CRC_TABLE */ +# endif /* Turbo/Borland C far data memory models */ +# define nearmalloc malloc +# define nearfree free +# define DYN_ALLOC +# else /* !__TURBOC__ */ +# include <malloc.h> +# define nearmalloc _nmalloc +# define nearfree _nfree +# define farmalloc _fmalloc +# define farfree _ffree +# endif /* ?__TURBOC__ */ +# define MY_ZCALLOC 1 +# ifdef SMALL_MEM +# define CBSZ 2048 +# define ZBSZ 2048 +# endif +# ifdef MEDIUM_MEM +# define CBSZ 4096 +# define ZBSZ 4096 +# endif +# ifndef CBSZ +# define CBSZ 8192 +# define ZBSZ 8192 +# endif +#endif /* MEMORY16 */ + + +#ifdef MATCH +# undef MATCH +#endif +#define MATCH dosmatch /* use DOS style wildcard matching */ + +#define USE_CASE_MAP + +#define ROUNDED_TIME(time) (((time) + 1) & (~1)) +#define PROCNAME(n) (action == ADD || action == UPDATE ? wild(n) : \ + procname(n, 1)) + +#define FOPR "rb" +#define FOPM "r+b" +#define FOPW "wb" + +#include <sys/types.h> +#include <sys/stat.h> +#include <io.h> + +#ifdef ZCRYPT_INTERNAL +# ifdef WINDLL +# define ZCR_SEED2 (unsigned)3141592654L /* use PI as seed pattern */ +# else +# ifndef __GO32__ +# include <process.h> /* getpid() declaration for srand seed */ +# endif +# endif +#endif + +/* + * djgpp 1.x did not declare these + */ +#if defined(__GO32__) && !defined(__DJGPP__) +char *strlwr(char *); +int setmode(int, int); +#endif + +#ifdef __WATCOMC__ +# define NO_MKTEMP +# define HAS_OPENDIR +# define SSTAT stat_bandaid + int stat_bandaid(const char *path, struct stat *buf); + +/* Get asm routines to link properly without using "__cdecl": */ +# ifdef __386__ +# ifdef ASMV +# pragma aux match_init "_*" parm caller [] modify [] +# pragma aux longest_match "_*" parm caller [] value [eax] \ + modify [eax ecx edx] +# endif +# ifndef USE_ZLIB +# pragma aux crc32 "_*" parm caller [] value [eax] modify [eax] +# pragma aux get_crc_table "_*" parm caller [] value [eax] \ + modify [eax ecx edx] +# endif /* !USE_ZLIB */ +# else /* !__386__ */ +# ifdef ASMV +# pragma aux match_init "_*" parm caller [] loadds modify [ax bx] +# pragma aux longest_match "_*" parm caller [] loadds value [ax] \ + modify [ax bx cx dx es] +# endif /* ASMV */ +# ifndef USE_ZLIB +# pragma aux crc32 "_*" parm caller [] value [ax dx] \ + modify [ax bx cx dx es] +# pragma aux get_crc_table "_*" parm caller [] value [ax] \ + modify [ax bx cx dx] +# endif /* !USE_ZLIB */ +# endif /* ?__386__ */ +#endif /* __WATCOMC__ */ + +/* + * Wrapper function to get around the MSC7 00:00:00 31 Dec 1899 time base, + * see msdos.c for more info + */ + +#if defined(_MSC_VER) && _MSC_VER == 700 +# define localtime(t) msc7_localtime(t) +#endif + +#if (defined(__TURBOC__) && !defined(__BORLANDC__) && __TURBOC__ <= 0x0201) +# ifndef NO_MKTIME +# define NO_MKTIME /* TC 2.01 and earlier do not supply mktime() */ +# endif +#endif |