/* Copyright (c) 1990-2007 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2007-Mar-4 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ #ifndef VMS # define VMS 1 #endif #if (defined(__VMS_VER) && !defined(__CRTL_VER)) # define __CRTL_VER __VMS_VER #endif #if (defined(__VMS_VERSION) && !defined(VMS_VERSION)) # define VMS_VERSION __VMS_VERSION #endif #if !(defined(__DECC) || defined(__DECCXX) || defined(__GNUC__)) /* VAX C does not properly support the void keyword. (Only functions are allowed to have the type "void".) */ # ifndef NO_TYPEDEF_VOID # define NO_TYPEDEF_VOID # endif # define NO_FCNTL_H /* VAXC does not supply fcntl.h. */ #endif /* VAX C */ #define USE_CASE_MAP #define PROCNAME(n) \ (((action == ADD) || (action == UPDATE) || (action == FRESHEN)) ? \ wild(n) : procname(n, filter_match_case)) /* 2004-11-09 SMS. Large file support. */ #ifdef LARGE_FILE_SUPPORT # define _LARGEFILE /* Define the pertinent macro. */ /* LARGE_FILE_SUPPORT implies ZIP64_SUPPORT, unless explicitly disabled by NO_ZIP64_SUPPORT. */ # ifdef NO_ZIP64_SUPPORT # ifdef ZIP64_SUPPORT # undef ZIP64_SUPPORT # endif /* def ZIP64_SUPPORT */ # else /* def NO_ZIP64_SUPPORT */ # ifndef ZIP64_SUPPORT # define ZIP64_SUPPORT # endif /* ndef ZIP64_SUPPORT */ # endif /* def NO_ZIP64_SUPPORT */ # define ZOFF_T_FORMAT_SIZE_PREFIX "ll" #else /* def LARGE_FILE_SUPPORT */ # define ZOFF_T_FORMAT_SIZE_PREFIX "l" #endif /* def LARGE_FILE_SUPPORT */ /* Need _LARGEFILE for types.h. */ #include #ifdef __GNUC__ #include #endif /* def __GNUC__ */ /* Need types.h for off_t. */ #ifdef LARGE_FILE_SUPPORT typedef off_t zoff_t; typedef unsigned long long uzoff_t; #else /* def LARGE_FILE_SUPPORT */ typedef long zoff_t; typedef unsigned long uzoff_t; #endif /* def LARGE_FILE_SUPPORT */ #include typedef struct stat z_stat; #include #if defined(__GNUC__) && !defined(ZCRYPT_INTERNAL) # include /* ctermid() declaration needed in ttyio.c */ #endif #ifdef ZCRYPT_INTERNAL # include /* getpid() declaration for srand seed */ #endif #if defined(_MBCS) # undef _MBCS /* Zip on VMS does not support MBCS */ #endif /* VMS is run on little-endian processors with 4-byte ints: * enable the optimized CRC-32 code */ #ifdef IZ_CRC_BE_OPTIMIZ # undef IZ_CRC_BE_OPTIMIZ #endif #if !defined(IZ_CRC_LE_OPTIMIZ) && !defined(NO_CRC_OPTIMIZ) # define IZ_CRC_LE_OPTIMIZ #endif #if !defined(IZ_CRCOPTIM_UNFOLDTBL) && !defined(NO_CRC_OPTIMIZ) # define IZ_CRCOPTIM_UNFOLDTBL #endif #if !defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME) # if (defined(__CRTL_VER) && (__CRTL_VER >= 70000000)) # define USE_EF_UT_TIME # endif #endif #if defined(VMS_PK_EXTRA) && defined(VMS_IM_EXTRA) # undef VMS_IM_EXTRA /* PK style takes precedence */ #endif #if !defined(VMS_PK_EXTRA) && !defined(VMS_IM_EXTRA) # define VMS_PK_EXTRA 1 /* PK style VMS support is default */ #endif /* 2007-02-22 SMS. * is needed for symbolic link functions, so use it when the * symbolic link criteria are met. */ #if defined(__VAX) || __CRTL_VER < 70301000 # define NO_UNISTD_H # define NO_SYMLINKS #endif /* defined(__VAX) || __CRTL_VER < 70301000 */ /* 2007-02-22 SMS. Use delete() when unlink() is not available. */ #if defined(NO_UNISTD_H) || (__CRTL_VER < 70000000) # define unlink delete #endif /* defined(NO_UNISTD_H) || __CRTL_VER < 70000000) */ #define SSTAT vms_stat #define EXIT(exit_code) vms_exit(exit_code) #define RETURN(exit_code) return (vms_exit(exit_code), 1) #ifdef __DECC /* File open callback ID values. */ # define FOPM_ID 1 # define FOPR_ID 2 # define FOPW_ID 3 /* File open callback ID storage. */ extern int fopm_id; extern int fopr_id; extern int fopw_id; /* File open callback ID function. */ extern int acc_cb(); /* Option macros for zfopen(). * General: Stream access * Output: fixed-length, 512-byte records. * * Callback function (DEC C only) sets deq, mbc, mbf, rah, wbh, ... */ # define FOPM "r+b", "ctx=stm", "rfm=fix", "mrs=512", "acc", acc_cb, &fopm_id # define FOPR "rb", "ctx=stm", "acc", acc_cb, &fopr_id # define FOPW "wb", "ctx=stm", "rfm=fix", "mrs=512", "acc", acc_cb, &fopw_id #else /* def __DECC */ /* (So, GNU C, VAX C, ...)*/ # define FOPM "r+b", "ctx=stm", "rfm=fix", "mrs=512" # define FOPR "rb", "ctx=stm" # define FOPW "wb", "ctx=stm", "rfm=fix", "mrs=512" #endif /* def __DECC */