1 /* 2 Copyright (c) 1990-2005 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2000-Apr-09 or later 5 (the contents of which are also included in unzip.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 /* amiga.h 10 * 11 * Globular definitions that affect all of AmigaDom. 12 * 13 * Originally included in unzip.h, extracted for simplicity and eeze of 14 * maintenance by John Bush. 15 * 16 * THIS FILE IS #INCLUDE'd by unzpriv.h 17 * 18 */ 19 20 #ifndef __amiga_amiga_h 21 #define __amiga_amiga_h 22 23 #include "amiga/z-stat.h" /* substitute for <stat.h> and <direct.h> */ 24 #include <limits.h> 25 #ifndef NO_FCNTL_H 26 # include <fcntl.h> 27 #else 28 int mkdir(const char *_name); 29 #endif 30 31 /* we only have dinky old-sk00l 32 bit filesystems */ 32 #ifdef LARGE_FILE_SUPPORT 33 # undef LARGE_FILE_SUPPORT 34 #endif 35 36 typedef long zoff_t; 37 #define ZOFF_T_DEFINED 38 typedef struct stat z_stat; 39 #define Z_STAT_DEFINED 40 41 #ifdef AZTEC_C /* Manx Aztec C, 5.0 or newer only */ 42 # include <clib/dos_protos.h> 43 # include <pragmas/dos_lib.h> /* do inline dos.library calls */ 44 # define O_BINARY 0 45 # define direct dirent 46 47 # ifndef IZTZ_DEFINESTDGLOBALS 48 # define IZTZ_DEFINESTDGLOBALS 49 # endif 50 51 # define DECLARE_TIMEZONE 52 # define ASM_INFLATECODES 53 # define ASM_CRC 54 55 /* This compiler environment supplies a flat 32-bit address space */ 56 /* where C rtl functions are capable of handling large (32-bit-wide) */ 57 /* allocations and I/O. But, for speed on old 68000 CPUs, standard */ 58 /* ints are 16-bits wide per default. ("size_t" is defined as */ 59 /* "unsigned long" in this case.) The Deflate64 support requires */ 60 /* the variables for handling the decompression buffer to hold */ 61 /* 32-bit wide integers. The INT_16BIT symbol defined below forces */ 62 /* the declarations of these variables to use "unsigned long" type. */ 63 # ifndef _INT32 64 # define INT_16BIT /* or deflate64 stuff will fail */ 65 # endif 66 67 /* Note that defining REENTRANT will not eliminate all global/static */ 68 /* variables. The functions we use from c.lib, including stdio, are */ 69 /* not reentrant. Neither are the stuff in amiga/stat.c or the time */ 70 /* functions in amiga/filedate.c, because they just augment c.lib. */ 71 /* If you want a fully reentrant and reexecutable "pure" UnZip with */ 72 /* Aztec C, assemble and link in the startup module purify.a by Paul */ 73 /* Kienitz. REENTRANT should be used just to reduce memory waste. */ 74 #endif /* AZTEC_C */ 75 76 77 #ifdef __SASC 78 /* NOTE: SAS/C COMPILATION HAS BEEN UNSUPPORTED THROUGH MANY UNZIP VERSIONS. */ 79 /* (Which is too bad, because it would probably perform better than Aztec.) */ 80 81 /* includes */ 82 # include <sys/types.h> 83 # include <sys/dir.h> 84 # include <dos.h> 85 # include <exec/memory.h> 86 # include <exec/execbase.h> 87 # if (defined(_M68020) && (!defined(__USE_SYSBASE))) 88 /* on 68020 or higher processors it is faster */ 89 # define __USE_SYSBASE /* to use the pragma libcall instead of syscall */ 90 # endif /* to access functions of the exec.library */ 91 # include <proto/exec.h> /* see SAS/C manual:part 2,chapter 2,pages 6-7 */ 92 # include <proto/dos.h> 93 # include <proto/locale.h> 94 95 # ifdef DEBUG 96 # include <sprof.h> /* profiler header file */ 97 # endif 98 # if ( (!defined(O_BINARY)) && defined(O_RAW)) 99 # define O_BINARY O_RAW 100 # endif 101 # if (defined(_SHORTINT) && !defined(USE_FWRITE)) 102 # define USE_FWRITE /* define if write() returns 16-bit int */ 103 # endif 104 # if (!defined(REENTRANT) && !defined(FUNZIP)) 105 # define REENTRANT /* define if unzip is going to be pure */ 106 # endif 107 # if defined(REENTRANT) && defined(DYNALLOC_CRCTAB) 108 # undef DYNALLOC_CRCTAB 109 # endif 110 # ifdef MWDEBUG 111 # include <stdio.h> /* both stdio.h and stdlib.h must be included */ 112 # include <stdlib.h> /* before memwatch.h */ 113 # include "memwatch.h" 114 # undef getenv 115 # endif /* MWDEBUG */ 116 # ifndef IZTZ_SETLOCALTZINFO 117 /* XXX !! We have really got to find a way to operate without these. */ 118 # define IZTZ_SETLOCALTZINFO 119 # endif 120 #endif /* SASC */ 121 122 123 #define MALLOC_WORK 124 #define USE_EF_UT_TIME 125 #if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) 126 # define TIMESTAMP 127 #endif 128 129 #ifndef IZTZ_GETLOCALETZINFO 130 # define IZTZ_GETLOCALETZINFO GetPlatformLocalTimezone 131 #endif 132 /* the amiga port uses Info-ZIP's own timezone library, which includes 133 * a "working" mktime() implementation 134 */ 135 #ifndef HAVE_MKTIME 136 # define HAVE_MKTIME 137 #endif 138 139 /* check that TZ environment variable is defined before using UTC times */ 140 #if (!defined(NO_IZ_CHECK_TZ) && !defined(IZ_CHECK_TZ)) 141 # define IZ_CHECK_TZ 142 #endif 143 144 #define AMIGA_FILENOTELEN 80 145 #ifndef DATE_FORMAT 146 # define DATE_FORMAT DF_MDY 147 #endif 148 #define lenEOL 1 149 #define PutNativeEOL *q++ = native(LF); 150 #define PIPE_ERROR 0 151 152 #ifdef GLOBAL /* crypt.c usage conflicts with AmigaDOS headers */ 153 # undef GLOBAL 154 #endif 155 156 /* Funkshine Prough Toe Taipes */ 157 158 extern int real_timezone_is_set; 159 void tzset(void); 160 #define VALID_TIMEZONE(tempvar) (tzset(), real_timezone_is_set) 161 162 int Agetch(void); /* getch() like function, in amiga/filedate.c */ 163 LONG FileDate(char *, time_t[]); 164 int screensize(int *ttrows, int *ttcols); 165 void _abort(void); /* ctrl-C trap */ 166 167 #define SCREENSIZE(ttrows, ttcols) screensize(ttrows, ttcols) 168 #define SCREENWIDTH 80 169 #define SCREENLWRAP 1 170 #define TABSIZE 8 171 172 /* Static variables that we have to add to Uz_Globs: */ 173 #define SYSTEM_SPECIFIC_GLOBALS \ 174 int filenote_slot;\ 175 char *(filenotes[DIR_BLKSIZ]);\ 176 int created_dir, renamed_fullpath, rootlen;\ 177 char *rootpath, *buildpath, *build_end;\ 178 DIR *wild_dir;\ 179 ZCONST char *wildname;\ 180 char *dirname, matchname[FILNAMSIZ];\ 181 int dirnamelen, notfirstcall; 182 183 /* filenotes[] and filenote_slot are for the -N option that restores */ 184 /* comments of Zip archive entries as AmigaDOS filenotes. The others */ 185 /* are used by functions in amiga/amiga.c only. */ 186 /* created_dir and renamed_fullpath are used by mapname() and checkdir(). */ 187 /* rootlen, rootpath, buildpath, and build_end are used by checkdir(). */ 188 /* wild_dir, dirname, wildname, matchname[], dirnamelen and notfirstcall */ 189 /* are used by do_wild(). */ 190 #endif /* __amiga_amiga_h */ 191