|
|
1.1 ! root 1: /* tailor.h -- Not copyrighted 1992 Mark Adler */ ! 2: ! 3: /* const's are inconsistently used across ANSI libraries--kill for all ! 4: header files. */ ! 5: #define const ! 6: ! 7: ! 8: /* Define MSDOS for Turbo C as well as Microsoft C */ ! 9: #ifdef __POWERC /* For Power C too */ ! 10: # define __TURBOC__ ! 11: #endif /* __POWERC */ ! 12: #if (defined(__TURBOC__) && !defined(MSDOS)) ! 13: # define MSDOS ! 14: #endif ! 15: ! 16: #ifdef ATARI_ST ! 17: # undef MSDOS /* avoid the MS-DOS specific includes */ ! 18: #endif ! 19: ! 20: /* Use prototypes and ANSI libraries if _STDC__, or Microsoft or Borland C, ! 21: * or Silicon Graphics, or IBM C Set/2, or GNU gcc under emx. ! 22: */ ! 23: #if (defined(__STDC__) || defined(MSDOS) || defined(sgi)) ! 24: # ifndef PROTO ! 25: # define PROTO ! 26: # endif /* !PROTO */ ! 27: # define MODERN ! 28: #endif /* MSDOS */ ! 29: ! 30: #if (defined(__IBMC__) || defined(__EMX__) || defined(ATARI_ST)) ! 31: # ifndef PROTO ! 32: # define PROTO ! 33: # endif /* !PROTO */ ! 34: # define MODERN ! 35: #endif ! 36: ! 37: ! 38: #ifdef __IBMC__ ! 39: # define S_IFMT 0xF000 ! 40: #endif /* __IBMC__ */ ! 41: ! 42: #ifdef __EMX__ ! 43: # define __32BIT__ ! 44: #endif /* __EMX__ */ ! 45: ! 46: #ifdef __WATCOMC__ ! 47: # define __32BIT__ ! 48: #endif ! 49: ! 50: #if (defined(__OS2__) && !defined(OS2)) ! 51: # define OS2 ! 52: #endif ! 53: ! 54: #ifdef __convexc__ ! 55: # define CONVEX ! 56: #endif /* __convexc__ */ ! 57: ! 58: /* Turn off prototypes if requested */ ! 59: #if (defined(NOPROTO) && defined(PROTO)) ! 60: # undef PROTO ! 61: #endif ! 62: ! 63: ! 64: /* Used to remove arguments in function prototypes for non-ANSI C */ ! 65: #ifdef PROTO ! 66: # define OF(a) a ! 67: #else /* !PROTO */ ! 68: # define OF(a) () ! 69: #endif /* ?PROTO */ ! 70: ! 71: ! 72: /* Memory allocation. */ ! 73: #ifdef MACOS ! 74: # define DYN_ALLOC ! 75: #endif ! 76: #if (defined(MSDOS) && !defined(__GO32__) && !defined(WIN32)) ! 77: # ifdef __TURBOC__ ! 78: # include <alloc.h> ! 79: # define DYN_ALLOC ! 80: /* Turbo C 2.0 does not accept far static allocations in small model */ ! 81: void far * fcalloc OF((unsigned items, unsigned size)); ! 82: # else /* !__TURBOC__ */ ! 83: # include <malloc.h> ! 84: # define farmalloc _fmalloc ! 85: # define farfree _ffree ! 86: # define fcalloc(nitems,itemsize) halloc((long)(nitems),(itemsize)) ! 87: # endif /* ?__TURBOC__ */ ! 88: #else /* !MSDOS */ ! 89: # if defined(WIN32) ! 90: # include <malloc.h> ! 91: # endif ! 92: # ifdef far ! 93: # undef huge ! 94: # undef far ! 95: # undef near ! 96: # endif ! 97: # define huge ! 98: # define far ! 99: # define near ! 100: # define farmalloc malloc ! 101: # define farfree free ! 102: # define fcalloc(items,size) calloc((unsigned)(items), (unsigned)(size)) ! 103: # ifndef PROTO ! 104: extern char *calloc(); /* essential for 16 bit systems (AT&T 6300) */ ! 105: # endif ! 106: #endif /* ?MSDOS */ ! 107: ! 108: ! 109: #if (defined(OS2) && !defined(MSDOS)) ! 110: /* MSDOS is defined anyway with MS C 16-bit. So the block above works. ! 111: * For the 32-bit compilers, MSDOS must not be defined in the block above. */ ! 112: # define MSDOS ! 113: /* inherit MS-DOS file system etc. stuff */ ! 114: #endif ! 115: ! 116: ! 117: /* Define MSVMS if either MSDOS or VMS defined */ ! 118: #if defined(MSDOS) || defined(VMS) ! 119: # define MSVMS ! 120: #endif ! 121: ! 122: /* case mapping functions. case_map is used to ignore case in comparisons, ! 123: * to_up is used to force upper case even on Unix (for dosify option). ! 124: */ ! 125: #if defined(OS2) || defined(MSDOS) || defined(VMS) ! 126: # define case_map(c) upper[c] ! 127: # define to_up(c) upper[c] ! 128: #else ! 129: # define case_map(c) (c) ! 130: # define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c)) ! 131: #endif ! 132: ! 133: /* Define void, voidp, and extent (size_t) */ ! 134: #include <stdio.h> ! 135: #ifdef MODERN ! 136: # if (!defined(M_XENIX) && !(defined(__GNUC__) && defined(sun))) ! 137: # include <stddef.h> ! 138: # endif /* !M_XENIX */ ! 139: # include <stdlib.h> ! 140: typedef size_t extent; ! 141: typedef void voidp; ! 142: #else /* !MODERN */ ! 143: typedef unsigned int extent; ! 144: # define void int ! 145: typedef char voidp; ! 146: #endif /* ?MODERN */ ! 147: ! 148: /* Get types and stat */ ! 149: #ifdef VMS ! 150: # include <types.h> ! 151: # include <stat.h> ! 152: #else /* !VMS */ ! 153: # ifdef MACOS ! 154: # include <types.h> ! 155: # include <stddef.h> ! 156: # include <Files.h> ! 157: # include <StandardFile.h> ! 158: # include <Think.h> ! 159: # include <LoMem.h> ! 160: # include <Pascal.h> ! 161: # include "macstat.h" ! 162: # else ! 163: # ifdef ATARI_ST ! 164: # include <ext.h> ! 165: # include <tos.h> ! 166: # else ! 167: # include <sys/types.h> ! 168: # include <sys/stat.h> ! 169: # endif ! 170: # endif ! 171: #endif /* ?VMS */ ! 172: ! 173: /* Some systems define S_IFLNK but do not support symbolic links */ ! 174: #if defined (S_IFLNK) && (defined(NO_SYMLINK) || defined(MACOS)) ! 175: # undef S_IFLNK ! 176: #endif ! 177: ! 178: /* Cheap fix for unlink on VMS */ ! 179: #ifdef VMS ! 180: # define unlink delete ! 181: #endif /* VMS */ ! 182: ! 183: ! 184: /* For Pyramid */ ! 185: #ifdef pyr ! 186: # define strrchr rindex ! 187: # define ZMEM ! 188: #endif /* pyr */ ! 189: ! 190: ! 191: /* File operations--use "b" for binary if allowed or fixed length 512 on VMS */ ! 192: #ifdef VMS ! 193: # define FOPR "r","ctx=stm" ! 194: # define FOPM "r+","ctx=stm","rfm=fix","mrs=512" ! 195: # define FOPW "w","ctx=stm","rfm=fix","mrs=512" ! 196: #else /* !VMS */ ! 197: # ifdef MODERN ! 198: # define FOPR "rb" ! 199: # define FOPM "r+b" ! 200: # define FOPW "wb" ! 201: # else /* !MODERN */ ! 202: # define FOPR "r" ! 203: # define FOPM "r+" ! 204: # define FOPW "w" ! 205: # endif /* ?MODERN */ ! 206: #endif /* VMS */ ! 207: ! 208: /* Open the old zip file in exclusive mode if possible (to avoid adding ! 209: * zip file to itself). ! 210: */ ! 211: #ifdef OS2 ! 212: # define FOPR_EX FOPM ! 213: #else ! 214: # define FOPR_EX FOPR ! 215: #endif ! 216: ! 217: /* Define this symbol if your target allows access to unaligned data. ! 218: * This is not mandatory, just a speed optimization. The compressed ! 219: * output is strictly identical. ! 220: */ ! 221: #if defined(MSDOS) || defined(i386) || defined(mc68020) || defined(vax) ! 222: # define UNALIGNED_OK ! 223: #endif ! 224: ! 225: ! 226: /* Under MSDOS we may run out of memory when processing a large number ! 227: * of files. Compile with MEDIUM_MEM to reduce the memory requirements or ! 228: * with SMALL_MEM to use as little memory as possible. ! 229: */ ! 230: #ifdef SMALL_MEM ! 231: # define CBSZ 2048 /* buffer size for copying files */ ! 232: # define ZBSZ 2048 /* buffer size for temporary zip file */ ! 233: #else ! 234: # ifdef MEDIUM_MEM ! 235: # define CBSZ 8192 ! 236: # define ZBSZ 8192 ! 237: # else ! 238: # if defined(OS2) && !defined(M_I86SM) ! 239: # define CBSZ 0xE000 ! 240: # define ZBSZ 0x7F00 ! 241: /* The C library of some compilers does not allow a buffer size > 32K */ ! 242: # else ! 243: # define CBSZ 16384 ! 244: # define ZBSZ 16384 ! 245: # endif ! 246: # endif ! 247: #endif ! 248: ! 249: #ifdef ATARI_ST ! 250: # define MSDOS ! 251: # define MSVMS ! 252: # ifndef O_BINARY ! 253: # define O_BINARY 0 ! 254: # endif ! 255: # ifndef S_IFMT ! 256: # define S_IFMT (S_IFCHR|S_IFREG|S_IFDIR) ! 257: # endif ! 258: ! 259: /* a whole bunch of functions needs Tos '\\' filnames ! 260: * instead of '/', the translation functions are in fileio.c: ! 261: */ ! 262: # define unlink st_unlink ! 263: # define chmod st_chmod ! 264: # define mktemp st_mktemp ! 265: # define fopen st_fopen ! 266: # define open st_open ! 267: # define SSTAT st_stat ! 268: # define findfirst st_findfirst ! 269: # define link st_rename ! 270: # define rmdir st_rmdir ! 271: ! 272: int st_unlink OF((char *)); ! 273: int st_chmod OF((char *, int)); ! 274: char *st_mktemp OF((char *)); ! 275: FILE *st_fopen OF((char *, char *)); ! 276: int st_open OF((char *, int)); ! 277: int st_stat OF((char *, struct stat *)); ! 278: int st_findfirst OF((char *, struct ffblk *, int)); ! 279: int st_rename OF((char *, char *)); ! 280: int st_rmdir OF((char *)); ! 281: #else ! 282: # define SSTAT stat ! 283: #endif ! 284: ! 285: /* end of tailor.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.