/* Sample config.h for Hercules 3.11 on VMS */ #define VERSION "3.11" #define CUSTOM_BUILD_STRING "Hercules for VMS" /* Stuff added after upgrading to VMS 8.2 */ #define _LFS_LARGEFILE #define HAVE_FSEEKO #define HAVE_FTELLO #define HAVE_SETREUID #define HAVE_GETPGRP int getpgrp(); int setreuid(); int setregid(); double ldexp(); /* Additional defines required for 3.07 */ #define C99_FLEXIBLE_ARRAYS /* Use memdev[] instead of memdev[0] */ /* Additional defines required for 3.06 */ #define OPTION_ENHANCED_CONFIG_SYMBOLS #define OPTION_ENHANCED_CONFIG_INCLUDES /* Additional defines required for 3.04.1 */ #define MAX_CPU_ENGINES 8 #define HAVE_FSYNC #define HAVE_SCHED_H #define HAVE_NETINET_IN_H #define HAVE_STRUCT_IN_ADDR_S_ADDR #define HAVE_NETDB_H #define HAVE_ARPA_INET_H #define HAVE_PWD_H #define HAVE_ZLIB_H #define HAVE_BZLIB_H #define HAVE_SYS_UTSNAME_H #define HAVE_TERMIOS_H #define OPTION_CONFIG_SYMBOLS /* 2.17.1 specific defines */ #define HAVE_INTTYPES_H #define NO_ATTR_REGPARM #define NO_ASM_BYTESWAP /* #define NO_SETUID setuid is available in VMS 8.2 */ /* #define NO_IEEE_SUPPORT Doesn't work since V3.11 */ /* #define NO_900_MODE */ /* Remove the following 3 lines if libz and libbz2 are unavailable */ #define HAVE_LIBZ #define CCKD_BZIP2 #define HET_BZIP2 #define NO_SIGABEND_HANDLER /* Problem workarounds */ #define sleep(_interval) threadsafe_sleep(_interval) /* sleep !threadsafe */ #define usleep(_interval) threadsafe_usleep(_interval) /* usleep also? */ /* Since VMS V8.3, there is a realpath() in the crtl. However, it needs */ /* decc$posix_compliant_realpaths defined and that messes up other things */ #define realpath vms_realpath #include /* For definition of pthread_t */ int pthread_kill(pthread_t thread, int sig); /* Horrible hacks */ #define __inline__ inline /* __inline__ seems to be a gccism */ #define __attribute__(_attr) /* __attribute__ seems to be another one */ #define sa_sigaction sa_handler /* Wild guess. Used in impl.c */ #define fork vfork /* In printer.c, hscmisc.c and ctcadpt.c */ /* In some TCP/IP stacks on VMS, send(), recv() and related functions may not cope correctly with buffer sizes greater than 65535. This is an issue in particular with recv() calls from console.c and read_pipe() calls from logger.c. Hercules currently does not appear to call any other functions with buffers this large. Recent versions of Multinet and TCPIP services should not have this issue and in those cases, the following hacks may be omitted. */ #define send(sd, buffer, length, flags) vms_send(sd, buffer, length, flags) #define recv(sd, buffer, length, flags) vms_recv(sd, buffer, length, flags)