Annotation of embedaddon/ntp/sntp/libopts/compat/compat.h, revision 1.1.1.1

1.1       misho       1: /*  -*- Mode: C -*-  */
                      2: 
                      3: /**
                      4:  * \file compat.h --- fake the preprocessor into handlng portability
                      5:  *
                      6:  *  Time-stamp:      "2010-07-16 15:11:57 bkorb"
                      7:  *
                      8:  *  compat.h is free software.
                      9:  *  This file is part of AutoGen.
                     10:  *
                     11:  *  AutoGen Copyright (c) 1992-2011 by Bruce Korb - all rights reserved
                     12:  *
                     13:  *  AutoGen is free software: you can redistribute it and/or modify it
                     14:  *  under the terms of the GNU General Public License as published by the
                     15:  *  Free Software Foundation, either version 3 of the License, or
                     16:  *  (at your option) any later version.
                     17:  *
                     18:  *  AutoGen is distributed in the hope that it will be useful, but
                     19:  *  WITHOUT ANY WARRANTY; without even the implied warranty of
                     20:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
                     21:  *  See the GNU General Public License for more details.
                     22:  *
                     23:  *  You should have received a copy of the GNU General Public License along
                     24:  *  with this program.  If not, see <http://www.gnu.org/licenses/>.
                     25:  *
                     26:  *  As a special exception, Bruce Korb gives permission for additional
                     27:  *  uses of the text contained in the release of compat.h.
                     28:  *
                     29:  *  The exception is that, if you link the compat.h library with other
                     30:  *  files to produce an executable, this does not by itself cause the
                     31:  *  resulting executable to be covered by the GNU General Public License.
                     32:  *  Your use of that executable is in no way restricted on account of
                     33:  *  linking the compat.h library code into it.
                     34:  *
                     35:  *  This exception does not however invalidate any other reasons why
                     36:  *  the executable file might be covered by the GNU General Public License.
                     37:  *
                     38:  *  This exception applies only to the code released by Bruce Korb under
                     39:  *  the name compat.h.  If you copy code from other sources under the
                     40:  *  General Public License into a copy of compat.h, as the General Public
                     41:  *  License permits, the exception does not apply to the code that you add
                     42:  *  in this way.  To avoid misleading anyone as to the status of such
                     43:  *  modified files, you must delete this exception notice from them.
                     44:  *
                     45:  *  If you write modifications of your own for compat.h, it is your choice
                     46:  *  whether to permit this exception to apply to your modifications.
                     47:  *  If you do not wish that, delete this exception notice.
                     48:  */
                     49: #ifndef COMPAT_H_GUARD
                     50: #define COMPAT_H_GUARD 1
                     51: 
                     52: #if defined(HAVE_CONFIG_H)
                     53: #  include <config.h>
                     54: 
                     55: #elif defined(_WIN32) && !defined(__CYGWIN__)
                     56: #  include "windows-config.h"
                     57: 
                     58: #else
                     59: #  error "compat.h" requires "config.h"
                     60:    choke me.
                     61: #endif
                     62: 
                     63: 
                     64: #ifndef HAVE_STRSIGNAL
                     65:    char * strsignal( int signo );
                     66: #endif
                     67: 
                     68: #define  _GNU_SOURCE    1 /* for strsignal in GNU's libc */
                     69: #define  __USE_GNU      1 /* exact same thing as above   */
                     70: #define  __EXTENSIONS__ 1 /* and another way to call for it */
                     71: 
                     72: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                     73:  *
                     74:  *  SYSTEM HEADERS:
                     75:  */
                     76: #include <sys/types.h>
                     77: #ifdef HAVE_SYS_MMAN_H
                     78: #  include <sys/mman.h>
                     79: #endif
                     80: #include <sys/param.h>
                     81: #if HAVE_SYS_PROCSET_H
                     82: #  include <sys/procset.h>
                     83: #endif
                     84: #include <sys/stat.h>
                     85: #include <sys/wait.h>
                     86: 
                     87: #if defined( HAVE_SOLARIS_SYSINFO )
                     88: #  include <sys/systeminfo.h>
                     89: #elif defined( HAVE_UNAME_SYSCALL )
                     90: #  include <sys/utsname.h>
                     91: #endif
                     92: 
                     93: #ifdef DAEMON_ENABLED
                     94: #  if HAVE_SYS_STROPTS_H
                     95: #  include <sys/stropts.h>
                     96: #  endif
                     97: 
                     98: #  if HAVE_SYS_SOCKET_H
                     99: #  include <sys/socket.h>
                    100: #  endif
                    101: 
                    102: #  if ! defined(HAVE_SYS_POLL_H) && ! defined(HAVE_SYS_SELECT_H)
                    103: #    error This system cannot support daemon processing
                    104:      Choke Me.
                    105: #  endif
                    106: 
                    107: #  if HAVE_SYS_POLL_H
                    108: #  include <sys/poll.h>
                    109: #  endif
                    110: 
                    111: #  if HAVE_SYS_SELECT_H
                    112: #  include <sys/select.h>
                    113: #  endif
                    114: 
                    115: #  if HAVE_NETINET_IN_H
                    116: #  include <netinet/in.h>
                    117: #  endif
                    118: 
                    119: #  if HAVE_SYS_UN_H
                    120: #  include <sys/un.h>
                    121: #  endif
                    122: #endif
                    123: 
                    124: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                    125:  *
                    126:  *  USER HEADERS:
                    127:  */
                    128: #include <stdio.h>
                    129: #include <assert.h>
                    130: #include <ctype.h>
                    131: 
                    132: /*
                    133:  *  Directory opening stuff:
                    134:  */
                    135: # if defined (_POSIX_SOURCE)
                    136: /* Posix does not require that the d_ino field be present, and some
                    137:    systems do not provide it. */
                    138: #    define REAL_DIR_ENTRY(dp) 1
                    139: # else /* !_POSIX_SOURCE */
                    140: #    define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
                    141: # endif /* !_POSIX_SOURCE */
                    142: 
                    143: # if defined (HAVE_DIRENT_H)
                    144: #   include <dirent.h>
                    145: #   define D_NAMLEN(dirent) strlen((dirent)->d_name)
                    146: # else /* !HAVE_DIRENT_H */
                    147: #   define dirent direct
                    148: #   define D_NAMLEN(dirent) (dirent)->d_namlen
                    149: #   if defined (HAVE_SYS_NDIR_H)
                    150: #     include <sys/ndir.h>
                    151: #   endif /* HAVE_SYS_NDIR_H */
                    152: #   if defined (HAVE_SYS_DIR_H)
                    153: #     include <sys/dir.h>
                    154: #   endif /* HAVE_SYS_DIR_H */
                    155: #   if defined (HAVE_NDIR_H)
                    156: #     include <ndir.h>
                    157: #   endif /* HAVE_NDIR_H */
                    158: # endif /* !HAVE_DIRENT_H */
                    159: 
                    160: #include <errno.h>
                    161: #ifdef HAVE_FCNTL_H
                    162: # include <fcntl.h>
                    163: #endif
                    164: #ifndef O_NONBLOCK
                    165: # define O_NONBLOCK FNDELAY
                    166: #endif
                    167: 
                    168: #if defined(HAVE_LIBGEN) && defined(HAVE_LIBGEN_H)
                    169: #  include <libgen.h>
                    170: #endif
                    171: 
                    172: #if defined(HAVE_LIMITS_H)  /* this is also in options.h */
                    173: #  include <limits.h>
                    174: #elif defined(HAVE_SYS_LIMITS_H)
                    175: #  include <sys/limits.h>
                    176: #endif /* HAVE_LIMITS/SYS_LIMITS_H */
                    177: 
                    178: #include <memory.h>
                    179: #include <setjmp.h>
                    180: #include <signal.h>
                    181: 
                    182: #if defined( HAVE_STDINT_H )
                    183: #  include <stdint.h>
                    184: #elif defined( HAVE_INTTYPES_H )
                    185: #  include <inttypes.h>
                    186: #endif
                    187: 
                    188: #include <stdlib.h>
                    189: #include <string.h>
                    190: 
                    191: #include <time.h>
                    192: 
                    193: #ifdef HAVE_UTIME_H
                    194: #  include <utime.h>
                    195: #endif
                    196: 
                    197: #ifdef HAVE_UNISTD_H
                    198: #  include <unistd.h>
                    199: #endif
                    200: 
                    201: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                    202:  *
                    203:  *  FIXUPS and CONVIENCE STUFF:
                    204:  */
                    205: #ifdef __cplusplus
                    206: #   define EXTERN extern "C"
                    207: #else
                    208: #   define EXTERN extern
                    209: #endif
                    210: 
                    211: /* some systems #def errno! and others do not declare it!! */
                    212: #ifndef errno
                    213:    extern int errno;
                    214: #endif
                    215: 
                    216: /* Some machines forget this! */
                    217: 
                    218: # ifndef EXIT_FAILURE
                    219: #   define EXIT_SUCCESS 0
                    220: #   define EXIT_FAILURE 1
                    221: # endif
                    222: 
                    223: #ifndef NUL
                    224: #  define NUL '\0'
                    225: #endif
                    226: 
                    227: #ifndef NULL
                    228: #  define NULL 0
                    229: #endif
                    230: 
                    231: #if !defined (MAXPATHLEN) && defined (HAVE_SYS_PARAM_H)
                    232: #  include <sys/param.h>
                    233: #endif /* !MAXPATHLEN && HAVE_SYS_PARAM_H */
                    234: 
                    235: #if !defined (MAXPATHLEN) && defined (PATH_MAX)
                    236: #  define MAXPATHLEN PATH_MAX
                    237: #endif /* !MAXPATHLEN && PATH_MAX */
                    238: 
                    239: #if !defined (MAXPATHLEN) && defined(_MAX_PATH)
                    240: #  define PATH_MAX _MAX_PATH
                    241: #  define MAXPATHLEN _MAX_PATH
                    242: #endif
                    243: 
                    244: #if !defined (MAXPATHLEN)
                    245: #  define MAXPATHLEN ((size_t)4096)
                    246: #endif /* MAXPATHLEN */
                    247: 
                    248: #define AG_PATH_MAX  ((size_t)MAXPATHLEN)
                    249: 
                    250: #ifndef LONG_MAX
                    251: #  define LONG_MAX      ~(1L << (8*sizeof(long) -1))
                    252: #  define INT_MAX       ~(1 << (8*sizeof(int) -1))
                    253: #endif
                    254: 
                    255: #ifndef ULONG_MAX
                    256: #  define ULONG_MAX     ~(OUL)
                    257: #  define UINT_MAX      ~(OU)
                    258: #endif
                    259: 
                    260: #ifndef SHORT_MAX
                    261: #  define SHORT_MAX     ~(1 << (8*sizeof(short) - 1))
                    262: #else
                    263: #  define USHORT_MAX    ~(OUS)
                    264: #endif
                    265: 
                    266: #ifndef HAVE_INT8_T
                    267:   typedef signed char           int8_t;
                    268: # define  HAVE_INT8_T           1
                    269: #endif
                    270: #ifndef HAVE_UINT8_T
                    271:   typedef unsigned char         uint8_t;
                    272: # define  HAVE_UINT8_T          1
                    273: #endif
                    274: #ifndef HAVE_INT16_T
                    275:   typedef signed short          int16_t;
                    276: # define  HAVE_INT16_T          1
                    277: #endif
                    278: #ifndef HAVE_UINT16_T
                    279:   typedef unsigned short        uint16_t;
                    280: # define  HAVE_UINT16_T         1
                    281: #endif
                    282: 
                    283: #ifndef HAVE_INT32_T
                    284: # if SIZEOF_INT ==              4
                    285:     typedef signed int          int32_t;
                    286: # elif SIZEOF_LONG ==           4
                    287:     typedef signed long         int32_t;
                    288: # endif
                    289: # define  HAVE_INT32_T          1
                    290: #endif
                    291: 
                    292: #ifndef HAVE_UINT32_T
                    293: # if SIZEOF_INT ==              4
                    294:     typedef unsigned int        uint32_t;
                    295: # elif SIZEOF_LONG ==           4
                    296:     typedef unsigned long       uint32_t;
                    297: # else
                    298: #   error Cannot create a uint32_t type.
                    299:     Choke Me.
                    300: # endif
                    301: # define  HAVE_UINT32_T         1
                    302: #endif
                    303: 
                    304: #ifndef HAVE_INTPTR_T
                    305: # if SIZEOF_CHARP == SIZEOF_LONG
                    306:     typedef signed long         intptr_t;
                    307: # else
                    308:     typedef signed int          intptr_t;
                    309: # endif
                    310: # define  HAVE_INTPTR_T         1
                    311: #endif
                    312: 
                    313: #ifndef HAVE_UINTPTR_T
                    314: # if SIZEOF_CHARP == SIZEOF_LONG
                    315:     typedef unsigned long       intptr_t;
                    316: # else
                    317:     typedef unsigned int        intptr_t;
                    318: # endif
                    319: # define  HAVE_INTPTR_T         1
                    320: #endif
                    321: 
                    322: #ifndef HAVE_UINT_T
                    323:   typedef unsigned int          uint_t;
                    324: # define  HAVE_UINT_T           1
                    325: #endif
                    326: 
                    327: #ifndef HAVE_SIZE_T
                    328:   typedef unsigned int          size_t;
                    329: # define  HAVE_SIZE_T           1
                    330: #endif
                    331: #ifndef HAVE_WINT_T
                    332:   typedef unsigned int          wint_t;
                    333: # define  HAVE_WINT_T           1
                    334: #endif
                    335: #ifndef HAVE_PID_T
                    336:   typedef signed int            pid_t;
                    337: # define  HAVE_PID_T            1
                    338: #endif
                    339: 
                    340: /* redefine these for BSD style string libraries */
                    341: #ifndef HAVE_STRCHR
                    342: #  define strchr            index
                    343: #  define strrchr           rindex
                    344: #endif
                    345: 
                    346: #ifdef USE_FOPEN_BINARY
                    347: #  ifndef FOPEN_BINARY_FLAG
                    348: #    define FOPEN_BINARY_FLAG   "b"
                    349: #  endif
                    350: #  ifndef FOPEN_TEXT_FLAG
                    351: #    define FOPEN_TEXT_FLAG     "t"
                    352: #  endif
                    353: #else
                    354: #  ifndef FOPEN_BINARY_FLAG
                    355: #    define FOPEN_BINARY_FLAG
                    356: #  endif
                    357: #  ifndef FOPEN_TEXT_FLAG
                    358: #    define FOPEN_TEXT_FLAG
                    359: #  endif
                    360: #endif
                    361: 
                    362: #ifndef STR
                    363: #  define _STR(s) #s
                    364: #  define STR(s)  _STR(s)
                    365: #endif
                    366: 
                    367: /* ##### Pointer sized word ##### */
                    368: 
                    369: /* FIXME:  the MAX stuff in here is broken! */
                    370: #if SIZEOF_CHARP > SIZEOF_INT
                    371:    typedef long t_word;
                    372:    #define WORD_MAX  LONG_MAX
                    373:    #define WORD_MIN  LONG_MIN
                    374: #else /* SIZEOF_CHARP <= SIZEOF_INT */
                    375:    typedef int t_word;
                    376:    #define WORD_MAX  INT_MAX
                    377:    #define WORD_MIN  INT_MIN
                    378: #endif
                    379: 
                    380: #endif /* COMPAT_H_GUARD */
                    381: 
                    382: /*
                    383:  * Local Variables:
                    384:  * mode: C
                    385:  * c-file-style: "stroustrup"
                    386:  * indent-tabs-mode: nil
                    387:  * End:
                    388:  * end of compat/compat.h */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>