| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 | 
							- /*  -*- Mode: C -*-
 
-  *
 
-  *  compat.h is free software.
 
-  *  This file is part of AutoGen and AutoOpts.
 
-  *
 
-  *  AutoGen Copyright (C) 1992-2018 by Bruce Korb - all rights reserved
 
-  *
 
-  *  AutoOpts is available under any one of two licenses.  The license
 
-  *  in use must be one of these two and the choice is under the control
 
-  *  of the user of the license.
 
-  *
 
-  *   The GNU Lesser General Public License, version 3 or later
 
-  *      See the files "COPYING.lgplv3" and "COPYING.gplv3"
 
-  *
 
-  *   The Modified Berkeley Software Distribution License
 
-  *      See the file "COPYING.mbsd"
 
-  *
 
-  *  These files have the following sha256 sums:
 
-  *
 
-  *  8584710e9b04216a394078dc156b781d0b47e1729104d666658aecef8ee32e95  COPYING.gplv3
 
-  *  4379e7444a0e2ce2b12dd6f5a52a27a4d02d39d247901d3285c88cf0d37f477b  COPYING.lgplv3
 
-  *  13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239  COPYING.mbsd
 
-  */
 
- /**
 
-  * \file compat.h
 
-  *  fake the preprocessor into handlng stuff portability
 
-  */
 
- #ifndef COMPAT_H_GUARD
 
- #define COMPAT_H_GUARD 1
 
- #if defined(HAVE_CONFIG_H)
 
- #  include <config.h>
 
- #elif defined(_WIN32) && !defined(__CYGWIN__)
 
- #  include "windows-config.h"
 
- #else
 
- #  error "compat.h" requires "config.h"
 
-    choke me.
 
- #endif
 
- #ifndef HAVE_STRSIGNAL
 
- # ifndef HAVE_RAW_DECL_STRSIGNAL
 
-    char * strsignal(int signo);
 
- # endif
 
- #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>
 
- #ifdef HAVE_SYS_MMAN_H
 
- #  include <sys/mman.h>
 
- #endif
 
- #include <sys/param.h>
 
- #if HAVE_SYS_PROCSET_H
 
- #  include <sys/procset.h>
 
- #endif
 
- #include <sys/stat.h>
 
- #ifdef HAVE_SYS_WAIT_H
 
- #  include <sys/wait.h>
 
- #endif
 
- #if defined( HAVE_SOLARIS_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
 
-      Choke Me.
 
- #  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
 
- #if defined(HAVE_LIMITS_H)  /* this is also in options.h */
 
- #  include <limits.h>
 
- #elif defined(HAVE_SYS_LIMITS_H)
 
- #  include <sys/limits.h>
 
- #endif /* HAVE_LIMITS/SYS_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>
 
- #ifdef HAVE_UTIME_H
 
- #  include <utime.h>
 
- #endif
 
- #ifdef HAVE_UNISTD_H
 
- #  include <unistd.h>
 
- #endif
 
- #if defined(HAVE_STDBOOL_H)
 
- #  include <stdbool.h>
 
- #elif ! defined(bool)
 
-    typedef enum { false = 0, true = 1 } _Bool;
 
- #  define bool _Bool
 
-    /* The other macros must be usable in preprocessor directives.  */
 
- #  define false 0
 
- #  define true 1
 
- #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) && defined(_MAX_PATH)
 
- #  define PATH_MAX _MAX_PATH
 
- #  define MAXPATHLEN _MAX_PATH
 
- #endif
 
- #if !defined (MAXPATHLEN)
 
- #  define MAXPATHLEN 4096
 
- #endif /* MAXPATHLEN */
 
- #define AG_PATH_MAX  ((size_t)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;
 
- # define  HAVE_INT8_T           1
 
- #endif
 
- #ifndef HAVE_UINT8_T
 
-   typedef unsigned char         uint8_t;
 
- # define  HAVE_UINT8_T          1
 
- #endif
 
- #ifndef HAVE_INT16_T
 
-   typedef signed short          int16_t;
 
- # define  HAVE_INT16_T          1
 
- #endif
 
- #ifndef HAVE_UINT16_T
 
-   typedef unsigned short        uint16_t;
 
- # define  HAVE_UINT16_T         1
 
- #endif
 
- #ifndef HAVE_INT32_T
 
- # if SIZEOF_INT ==              4
 
-     typedef signed int          int32_t;
 
- # elif SIZEOF_LONG ==           4
 
-     typedef signed long         int32_t;
 
- # endif
 
- # define  HAVE_INT32_T          1
 
- #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.
 
-     Choke Me.
 
- # endif
 
- # define  HAVE_UINT32_T         1
 
- #endif
 
- #ifndef HAVE_INTPTR_T
 
- # if SIZEOF_CHARP == SIZEOF_LONG
 
-     typedef signed long         intptr_t;
 
- # else
 
-     typedef signed int          intptr_t;
 
- # endif
 
- # define  HAVE_INTPTR_T         1
 
- #endif
 
- #ifndef HAVE_UINTPTR_T
 
- # if SIZEOF_CHARP == SIZEOF_LONG
 
-     typedef unsigned long       intptr_t;
 
- # else
 
-     typedef unsigned int        intptr_t;
 
- # endif
 
- # define  HAVE_INTPTR_T         1
 
- #endif
 
- #ifndef HAVE_UINT_T
 
-   typedef unsigned int          uint_t;
 
- # define  HAVE_UINT_T           1
 
- #endif
 
- #ifndef HAVE_SIZE_T
 
-   typedef unsigned int          size_t;
 
- # define  HAVE_SIZE_T           1
 
- #endif
 
- #ifndef HAVE_WINT_T
 
-   typedef unsigned int          wint_t;
 
- # define  HAVE_WINT_T           1
 
- #endif
 
- #ifndef HAVE_PID_T
 
-   typedef signed int            pid_t;
 
- # define  HAVE_PID_T            1
 
- #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_GUARD */
 
- /*
 
-  * Local Variables:
 
-  * mode: C
 
-  * c-file-style: "stroustrup"
 
-  * indent-tabs-mode: nil
 
-  * End:
 
-  * end of compat/compat.h */
 
 
  |