123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- /* -*- Mode: C -*- */
- /* --- fake the preprocessor into handlng portability */
- /*
- * Time-stamp: "2005-09-21 20:56:13 bkorb"
- *
- * Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
- * Created: Mon Jun 30 15:54:46 1997
- *
- * $Id: compat.h,v 4.6 2005/10/02 16:34:30 bkorb Exp $
- */
- #ifndef COMPAT_H
- #define COMPAT_H 1
- #ifndef HAVE_CONFIG_H
- # error "compat.h" requires "config.h"
- #endif
- #include <config.h>
- #ifndef HAVE_STRSIGNAL
- char * strsignal( int signo );
- #endif
- #define _GNU_SOURCE 1 /* for strsignal in GNU's libc */
- #define __USE_GNU 1 /* exact same thing as above */
- #define __EXTENSIONS__ 1 /* and another way to call for it */
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * SYSTEM HEADERS:
- */
- #include <sys/types.h>
- #include <sys/mman.h>
- #include <sys/param.h>
- #if HAVE_SYS_PROCSET_H
- # include <sys/procset.h>
- #endif
- #include <sys/stat.h>
- #include <sys/wait.h>
- #if defined( HAVE_POSIX_SYSINFO )
- # include <sys/systeminfo.h>
- #elif defined( HAVE_UNAME_SYSCALL )
- # include <sys/utsname.h>
- #endif
- #ifdef DAEMON_ENABLED
- # if HAVE_SYS_STROPTS_H
- # include <sys/stropts.h>
- # endif
- # if HAVE_SYS_SOCKET_H
- # include <sys/socket.h>
- # endif
- # if ! defined(HAVE_SYS_POLL_H) && ! defined(HAVE_SYS_SELECT_H)
- # error This system cannot support daemon processing
- # endif
- # if HAVE_SYS_POLL_H
- # include <sys/poll.h>
- # endif
- # if HAVE_SYS_SELECT_H
- # include <sys/select.h>
- # endif
- # if HAVE_NETINET_IN_H
- # include <netinet/in.h>
- # endif
- # if HAVE_SYS_UN_H
- # include <sys/un.h>
- # endif
- #endif
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * USER HEADERS:
- */
- #include <stdio.h>
- #include <assert.h>
- #include <ctype.h>
- /*
- * Directory opening stuff:
- */
- # if defined (_POSIX_SOURCE)
- /* Posix does not require that the d_ino field be present, and some
- systems do not provide it. */
- # define REAL_DIR_ENTRY(dp) 1
- # else /* !_POSIX_SOURCE */
- # define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
- # endif /* !_POSIX_SOURCE */
- # if defined (HAVE_DIRENT_H)
- # include <dirent.h>
- # define D_NAMLEN(dirent) strlen((dirent)->d_name)
- # else /* !HAVE_DIRENT_H */
- # define dirent direct
- # define D_NAMLEN(dirent) (dirent)->d_namlen
- # if defined (HAVE_SYS_NDIR_H)
- # include <sys/ndir.h>
- # endif /* HAVE_SYS_NDIR_H */
- # if defined (HAVE_SYS_DIR_H)
- # include <sys/dir.h>
- # endif /* HAVE_SYS_DIR_H */
- # if defined (HAVE_NDIR_H)
- # include <ndir.h>
- # endif /* HAVE_NDIR_H */
- # endif /* !HAVE_DIRENT_H */
- #include <errno.h>
- #ifdef HAVE_FCNTL_H
- # include <fcntl.h>
- #endif
- #ifndef O_NONBLOCK
- # define O_NONBLOCK FNDELAY
- #endif
- #if defined(HAVE_LIBGEN) && defined(HAVE_LIBGEN_H)
- # include <libgen.h>
- #endif
- #include <limits.h>
- #include <memory.h>
- #include <setjmp.h>
- #include <signal.h>
- #if defined( HAVE_STDINT_H )
- # include <stdint.h>
- #elif defined( HAVE_INTTYPES_H )
- # include <inttypes.h>
- #endif
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <utime.h>
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * FIXUPS and CONVIENCE STUFF:
- */
- #ifdef __cplusplus
- # define EXTERN extern "C"
- #else
- # define EXTERN extern
- #endif
- /* some systems #def errno! and others do not declare it!! */
- #ifndef errno
- extern int errno;
- #endif
- /* Some machines forget this! */
- # ifndef EXIT_FAILURE
- # define EXIT_SUCCESS 0
- # define EXIT_FAILURE 1
- # endif
- #ifndef NUL
- # define NUL '\0'
- #endif
- #ifndef NULL
- # define NULL 0
- #endif
- #if !defined (MAXPATHLEN) && defined (HAVE_SYS_PARAM_H)
- # include <sys/param.h>
- #endif /* !MAXPATHLEN && HAVE_SYS_PARAM_H */
- #if !defined (MAXPATHLEN) && defined (PATH_MAX)
- # define MAXPATHLEN PATH_MAX
- #endif /* !MAXPATHLEN && PATH_MAX */
- #if !defined (MAXPATHLEN)
- # define MAXPATHLEN 4096
- #endif /* MAXPATHLEN */
- #ifndef LONG_MAX
- # define LONG_MAX ~(1L << (8*sizeof(long) -1))
- # define INT_MAX ~(1 << (8*sizeof(int) -1))
- #endif
- #ifndef ULONG_MAX
- # define ULONG_MAX ~(OUL)
- # define UINT_MAX ~(OU)
- #endif
- #ifndef SHORT_MAX
- # define SHORT_MAX ~(1 << (8*sizeof(short) -1))
- #else
- # define USHORT_MAX ~(OUS)
- #endif
- #ifndef HAVE_INT8_T
- typedef signed char int8_t;
- #endif
- #ifndef HAVE_UINT8_T
- typedef unsigned char uint8_t;
- #endif
- #ifndef HAVE_INT16_T
- typedef signed short int16_t;
- #endif
- #ifndef HAVE_UINT16_T
- typedef unsigned short uint16_t;
- #endif
- #ifndef HAVE_INT32_T
- # if SIZEOF_INT == 4
- typedef signed int int32_t;
- # elif SIZEOF_LONG == 4
- typedef signed long int32_t;
- # endif
- #endif
- #ifndef HAVE_UINT32_T
- # if SIZEOF_INT == 4
- typedef unsigned int uint32_t;
- # elif SIZEOF_LONG == 4
- typedef unsigned long uint32_t;
- # else
- # error Cannot create a uint32_t type.
- # endif
- #endif
- #ifndef HAVE_INTPTR_T
- typedef signed long intptr_t;
- #endif
- #ifndef HAVE_UINTPTR_T
- typedef unsigned long uintptr_t;
- #endif
- /* redefine these for BSD style string libraries */
- #ifndef HAVE_STRCHR
- # define strchr index
- # define strrchr rindex
- #endif
- #ifdef USE_FOPEN_BINARY
- # ifndef FOPEN_BINARY_FLAG
- # define FOPEN_BINARY_FLAG "b"
- # endif
- # ifndef FOPEN_TEXT_FLAG
- # define FOPEN_TEXT_FLAG "t"
- # endif
- #else
- # ifndef FOPEN_BINARY_FLAG
- # define FOPEN_BINARY_FLAG
- # endif
- # ifndef FOPEN_TEXT_FLAG
- # define FOPEN_TEXT_FLAG
- # endif
- #endif
- #ifndef STR
- # define _STR(s) #s
- # define STR(s) _STR(s)
- #endif
- /* ##### Pointer sized word ##### */
- /* FIXME: the MAX stuff in here is broken! */
- #if SIZEOF_CHARP > SIZEOF_INT
- typedef long t_word;
- #define WORD_MAX LONG_MAX
- #define WORD_MIN LONG_MIN
- #else /* SIZEOF_CHARP <= SIZEOF_INT */
- typedef int t_word;
- #define WORD_MAX INT_MAX
- #define WORD_MIN INT_MIN
- #endif
- #endif /* COMPAT_H */
- /*
- * Local Variables:
- * mode: C
- * c-file-style: "stroustrup"
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- * end of compat/compat.h */
|