diff options
Diffstat (limited to 'vms/osdep.h')
-rw-r--r-- | vms/osdep.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/vms/osdep.h b/vms/osdep.h new file mode 100644 index 0000000..d7a07a4 --- /dev/null +++ b/vms/osdep.h @@ -0,0 +1,178 @@ +/* + 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 <types.h> + +#ifdef __GNUC__ +#include <sys/types.h> +#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 <stat.h> + +typedef struct stat z_stat; + +#include <unixio.h> + +#if defined(__GNUC__) && !defined(ZCRYPT_INTERNAL) +# include <unixlib.h> /* ctermid() declaration needed in ttyio.c */ +#endif +#ifdef ZCRYPT_INTERNAL +# include <unixlib.h> /* 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. + * <unistd.h> 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 */ + |