1 /* 2 Copyright (c) 1990-2007 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 #ifndef VMS 10 # define VMS 1 11 #endif 12 13 #if (defined(__VMS_VER) && !defined(__CRTL_VER)) 14 # define __CRTL_VER __VMS_VER 15 #endif 16 17 #if (defined(__VMS_VERSION) && !defined(VMS_VERSION)) 18 # define VMS_VERSION __VMS_VERSION 19 #endif 20 21 #if !(defined(__DECC) || defined(__DECCXX) || defined(__GNUC__)) 22 /* VAX C does not properly support the void keyword. (Only functions 23 are allowed to have the type "void".) */ 24 # ifndef NO_TYPEDEF_VOID 25 # define NO_TYPEDEF_VOID 26 # endif 27 # define NO_FCNTL_H /* VAXC does not supply fcntl.h. */ 28 #endif /* VAX C */ 29 30 #define USE_CASE_MAP 31 #define PROCNAME(n) \ 32 (((action == ADD) || (action == UPDATE) || (action == FRESHEN)) ? \ 33 wild(n) : procname(n, filter_match_case)) 34 35 /* 2004-11-09 SMS. 36 Large file support. 37 */ 38 #ifdef LARGE_FILE_SUPPORT 39 40 # define _LARGEFILE /* Define the pertinent macro. */ 41 42 /* LARGE_FILE_SUPPORT implies ZIP64_SUPPORT, 43 unless explicitly disabled by NO_ZIP64_SUPPORT. 44 */ 45 # ifdef NO_ZIP64_SUPPORT 46 # ifdef ZIP64_SUPPORT 47 # undef ZIP64_SUPPORT 48 # endif /* def ZIP64_SUPPORT */ 49 # else /* def NO_ZIP64_SUPPORT */ 50 # ifndef ZIP64_SUPPORT 51 # define ZIP64_SUPPORT 52 # endif /* ndef ZIP64_SUPPORT */ 53 # endif /* def NO_ZIP64_SUPPORT */ 54 55 # define ZOFF_T_FORMAT_SIZE_PREFIX "ll" 56 57 #else /* def LARGE_FILE_SUPPORT */ 58 59 # define ZOFF_T_FORMAT_SIZE_PREFIX "l" 60 61 #endif /* def LARGE_FILE_SUPPORT */ 62 63 /* Need _LARGEFILE for types.h. */ 64 65 #include <types.h> 66 67 #ifdef __GNUC__ 68 #include <sys/types.h> 69 #endif /* def __GNUC__ */ 70 71 /* Need types.h for off_t. */ 72 73 #ifdef LARGE_FILE_SUPPORT 74 typedef off_t zoff_t; 75 typedef unsigned long long uzoff_t; 76 #else /* def LARGE_FILE_SUPPORT */ 77 typedef long zoff_t; 78 typedef unsigned long uzoff_t; 79 #endif /* def LARGE_FILE_SUPPORT */ 80 81 #include <stat.h> 82 83 typedef struct stat z_stat; 84 85 #include <unixio.h> 86 87 #if defined(__GNUC__) && !defined(ZCRYPT_INTERNAL) 88 # include <unixlib.h> /* ctermid() declaration needed in ttyio.c */ 89 #endif 90 #ifdef ZCRYPT_INTERNAL 91 # include <unixlib.h> /* getpid() declaration for srand seed */ 92 #endif 93 94 #if defined(_MBCS) 95 # undef _MBCS /* Zip on VMS does not support MBCS */ 96 #endif 97 98 /* VMS is run on little-endian processors with 4-byte ints: 99 * enable the optimized CRC-32 code */ 100 #ifdef IZ_CRC_BE_OPTIMIZ 101 # undef IZ_CRC_BE_OPTIMIZ 102 #endif 103 #if !defined(IZ_CRC_LE_OPTIMIZ) && !defined(NO_CRC_OPTIMIZ) 104 # define IZ_CRC_LE_OPTIMIZ 105 #endif 106 #if !defined(IZ_CRCOPTIM_UNFOLDTBL) && !defined(NO_CRC_OPTIMIZ) 107 # define IZ_CRCOPTIM_UNFOLDTBL 108 #endif 109 110 #if !defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME) 111 # if (defined(__CRTL_VER) && (__CRTL_VER >= 70000000)) 112 # define USE_EF_UT_TIME 113 # endif 114 #endif 115 116 #if defined(VMS_PK_EXTRA) && defined(VMS_IM_EXTRA) 117 # undef VMS_IM_EXTRA /* PK style takes precedence */ 118 #endif 119 #if !defined(VMS_PK_EXTRA) && !defined(VMS_IM_EXTRA) 120 # define VMS_PK_EXTRA 1 /* PK style VMS support is default */ 121 #endif 122 123 /* 2007-02-22 SMS. 124 * <unistd.h> is needed for symbolic link functions, so use it when the 125 * symbolic link criteria are met. 126 */ 127 #if defined(__VAX) || __CRTL_VER < 70301000 128 # define NO_UNISTD_H 129 # define NO_SYMLINKS 130 #endif /* defined(__VAX) || __CRTL_VER < 70301000 */ 131 132 /* 2007-02-22 SMS. Use delete() when unlink() is not available. */ 133 #if defined(NO_UNISTD_H) || (__CRTL_VER < 70000000) 134 # define unlink delete 135 #endif /* defined(NO_UNISTD_H) || __CRTL_VER < 70000000) */ 136 137 #define SSTAT vms_stat 138 #define EXIT(exit_code) vms_exit(exit_code) 139 #define RETURN(exit_code) return (vms_exit(exit_code), 1) 140 141 142 #ifdef __DECC 143 144 /* File open callback ID values. */ 145 146 # define FOPM_ID 1 147 # define FOPR_ID 2 148 # define FOPW_ID 3 149 150 /* File open callback ID storage. */ 151 152 extern int fopm_id; 153 extern int fopr_id; 154 extern int fopw_id; 155 156 /* File open callback ID function. */ 157 158 extern int acc_cb(); 159 160 /* Option macros for zfopen(). 161 * General: Stream access 162 * Output: fixed-length, 512-byte records. 163 * 164 * Callback function (DEC C only) sets deq, mbc, mbf, rah, wbh, ... 165 */ 166 167 # define FOPM "r+b", "ctx=stm", "rfm=fix", "mrs=512", "acc", acc_cb, &fopm_id 168 # define FOPR "rb", "ctx=stm", "acc", acc_cb, &fopr_id 169 # define FOPW "wb", "ctx=stm", "rfm=fix", "mrs=512", "acc", acc_cb, &fopw_id 170 171 #else /* def __DECC */ /* (So, GNU C, VAX C, ...)*/ 172 173 # define FOPM "r+b", "ctx=stm", "rfm=fix", "mrs=512" 174 # define FOPR "rb", "ctx=stm" 175 # define FOPW "wb", "ctx=stm", "rfm=fix", "mrs=512" 176 177 #endif /* def __DECC */ 178 179