Annotation of win32/apache13/src/include/ap_config.h, revision 1.1

1.1     ! parser      1: /* ====================================================================
        !             2:  * Copyright (c) 1995-1999 The Apache Group.  All rights reserved.
        !             3:  *
        !             4:  * Redistribution and use in source and binary forms, with or without
        !             5:  * modification, are permitted provided that the following conditions
        !             6:  * are met:
        !             7:  *
        !             8:  * 1. Redistributions of source code must retain the above copyright
        !             9:  *    notice, this list of conditions and the following disclaimer. 
        !            10:  *
        !            11:  * 2. Redistributions in binary form must reproduce the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer in
        !            13:  *    the documentation and/or other materials provided with the
        !            14:  *    distribution.
        !            15:  *
        !            16:  * 3. All advertising materials mentioning features or use of this
        !            17:  *    software must display the following acknowledgment:
        !            18:  *    "This product includes software developed by the Apache Group
        !            19:  *    for use in the Apache HTTP server project (http://www.apache.org/)."
        !            20:  *
        !            21:  * 4. The names "Apache Server" and "Apache Group" must not be used to
        !            22:  *    endorse or promote products derived from this software without
        !            23:  *    prior written permission. For written permission, please contact
        !            24:  *    apache@apache.org.
        !            25:  *
        !            26:  * 5. Products derived from this software may not be called "Apache"
        !            27:  *    nor may "Apache" appear in their names without prior written
        !            28:  *    permission of the Apache Group.
        !            29:  *
        !            30:  * 6. Redistributions of any form whatsoever must retain the following
        !            31:  *    acknowledgment:
        !            32:  *    "This product includes software developed by the Apache Group
        !            33:  *    for use in the Apache HTTP server project (http://www.apache.org/)."
        !            34:  *
        !            35:  * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
        !            36:  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            37:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            38:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
        !            39:  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
        !            40:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            41:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
        !            42:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            43:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        !            44:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            45:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
        !            46:  * OF THE POSSIBILITY OF SUCH DAMAGE.
        !            47:  * ====================================================================
        !            48:  *
        !            49:  * This software consists of voluntary contributions made by many
        !            50:  * individuals on behalf of the Apache Group and was originally based
        !            51:  * on public domain software written at the National Center for
        !            52:  * Supercomputing Applications, University of Illinois, Urbana-Champaign.
        !            53:  * For more information on the Apache Group and the Apache HTTP server
        !            54:  * project, please see <http://www.apache.org/>.
        !            55:  *
        !            56:  */
        !            57: 
        !            58: #ifndef AP_CONFIG_H
        !            59: #define AP_CONFIG_H
        !            60: 
        !            61: #ifdef __cplusplus
        !            62: extern "C" {
        !            63: #endif
        !            64: 
        !            65: /*
        !            66:  * ap_config.h: system-dependant #defines and includes...
        !            67:  * See PORTING for a listing of what they mean
        !            68:  */
        !            69: 
        !            70: #include "ap_mmn.h"            /* MODULE_MAGIC_NUMBER_ */
        !            71: 
        !            72: /*
        !            73:  * Support for platform dependent autogenerated defines
        !            74:  */
        !            75: #if !defined(WIN32) && !defined(NETWARE)
        !            76: #include "ap_config_auto.h"
        !            77: #else
        !            78: /* not available under WIN32, so provide important entries manually */
        !            79: #undef HAVE_UNISTD_H
        !            80: #endif
        !            81: 
        !            82: /* Have to include sys/stat.h before ../os/win32/os.h so we can override
        !            83: stat() properly */
        !            84: #ifndef NETWARE
        !            85: #include <sys/types.h>
        !            86: #endif
        !            87: #include <sys/stat.h>
        !            88: 
        !            89: 
        !            90: /* So that we can use inline on some critical functions, and use
        !            91:  * GNUC attributes (such as to get -Wall warnings for printf-like
        !            92:  * functions).  Only do this in gcc 2.7 or later ... it may work
        !            93:  * on earlier stuff, but why chance it.
        !            94:  *
        !            95:  * We've since discovered that the gcc shipped with NeXT systems
        !            96:  * as "cc" is completely broken.  It claims to be __GNUC__ and so
        !            97:  * on, but it doesn't implement half of the things that __GNUC__
        !            98:  * means.  In particular it's missing inline and the __attribute__
        !            99:  * stuff.  So we hack around it.  PR#1613. -djg
        !           100:  */
        !           101: #if !defined(__GNUC__) || __GNUC__ < 2 || \
        !           102:     (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\
        !           103:     defined(NEXT)
        !           104: #define ap_inline
        !           105: #define __attribute__(__x)
        !           106: #define ENUM_BITFIELD(e,n,w)  signed int n : w
        !           107: #else
        !           108: #define ap_inline __inline__
        !           109: #define USE_GNU_INLINE
        !           110: #define ENUM_BITFIELD(e,n,w)  e n : w
        !           111: #endif
        !           112: 
        !           113: #ifdef WIN32
        !           114: #include "../os/win32/os.h"
        !           115: #else
        !           116: #include "os.h"
        !           117: #endif
        !           118: 
        !           119: /* Define one of these according to your system. */
        !           120: #if defined(MINT)
        !           121: typedef int rlim_t;
        !           122: #define JMP_BUF sigjmp_buf
        !           123: #define NO_LONG_DOUBLE
        !           124: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           125: #define _BSD_SOURCE
        !           126: #define EAGAIN EWOULDBLOCK
        !           127: int initgroups (char *, int);     
        !           128: char *crypt (const char *pw, const char *salt);
        !           129: int gethostname (char *name, int namelen);
        !           130: 
        !           131: #elif defined(MPE)
        !           132: #include <sys/times.h>
        !           133: #define NO_SETSID
        !           134: #define NO_KILLPG
        !           135: #define NO_WRITEV
        !           136: #define HAVE_SHMGET 1
        !           137: #define USE_SHMGET_SCOREBOARD
        !           138: /* 
        !           139:    UID/GID isn't a native concept for MPE, and it's definitely not a 100%
        !           140:    Unix implementation.  There isn't a traditional superuser concept either,
        !           141:    so we're forced to liberalize SHM security a bit so the parent & children
        !           142:    can communicate when they're running with different UIDs within the same
        !           143:    GID (the GID will *always* be the same on MPE).  Thus the weird SHM_R and
        !           144:    SHM_W below.
        !           145: */
        !           146: #define SHM_R 0440  /* Read permission */
        !           147: #define SHM_W 0220  /* Write permission */
        !           148: #define NEED_INITGROUPS
        !           149: #define NEED_STRCASECMP
        !           150: #define NEED_STRDUP
        !           151: #define NEED_STRNCASECMP
        !           152: extern void GETPRIVMODE();
        !           153: extern void GETUSERMODE();
        !           154: extern char *inet_ntoa();
        !           155: #define NO_SLACK
        !           156: #define S_IEXEC  S_IXUSR
        !           157: #define S_IREAD  S_IRUSR
        !           158: #define S_IWRITE S_IWUSR
        !           159: #define PF_INET  AF_INET
        !           160: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           161: 
        !           162: #elif defined(SUNOS4)
        !           163: #define HAVE_GMTOFF 1
        !           164: #undef NO_KILLPG
        !           165: #undef NO_SETSID
        !           166: char *crypt(const char *pw, const char *salt);
        !           167: char *mktemp(char *);
        !           168: #define HAVE_MMAP 1
        !           169: #define USE_MMAP_SCOREBOARD
        !           170: #define USE_MMAP_FILES
        !           171: #include <sys/time.h>
        !           172: #define NEED_STRERROR
        !           173: typedef int rlim_t;
        !           174: #define memmove(a,b,c) bcopy(b,a,c)
        !           175: #define NO_LINGCLOSE
        !           176: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           177: #define NEED_DIFFTIME
        !           178: #define HAVE_SYSLOG 1
        !           179: 
        !           180: #elif defined(SOLARIS2)
        !           181: #undef HAVE_GMTOFF
        !           182: #define NO_KILLPG
        !           183: #undef NO_SETSID
        !           184: #define bzero(a,b) memset(a,0,b)
        !           185: #if !defined(USE_SYSVSEM_SERIALIZED_ACCEPT) && \
        !           186:     !defined(USE_PTHREAD_SERIALIZED_ACCEPT)
        !           187: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           188: #endif
        !           189: #define NEED_UNION_SEMUN
        !           190: #define HAVE_MMAP 1
        !           191: #define USE_MMAP_SCOREBOARD
        !           192: #define USE_MMAP_FILES
        !           193: int gethostname(char *name, int namelen);
        !           194: #define HAVE_SYSLOG 1
        !           195: #define SYS_SIGLIST _sys_siglist
        !           196: 
        !           197: #elif defined(IRIX)
        !           198: #undef HAVE_GMTOFF
        !           199: /* IRIX has killpg, but it's only in _BSD_COMPAT, so don't use it in case
        !           200:  * there's some weird conflict with non-BSD signals */
        !           201: #define NO_KILLPG
        !           202: #undef NO_SETSID
        !           203: #if !defined(USE_FLOCK_SERIALIZED_ACCEPT) && \
        !           204:     !defined(USE_USLOCK_SERIALIZED_ACCEPT) && \
        !           205:     !defined(USE_SYSVSEM_SERIALIZED_ACCEPT)
        !           206: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           207: #endif
        !           208: #define HAVE_SHMGET 1
        !           209: #define USE_SHMGET_SCOREBOARD
        !           210: #define HAVE_MMAP 1
        !           211: #define USE_MMAP_FILES
        !           212: #define NO_LONG_DOUBLE
        !           213: #define NO_LINGCLOSE
        !           214: #define HAVE_SYSLOG 1
        !           215: 
        !           216: #elif defined(HIUX)
        !           217: #undef HAVE_GMTOFF
        !           218: #define NO_KILLPG
        !           219: #undef NO_SETSID
        !           220: #ifndef _HIUX_SOURCE
        !           221: #define _HIUX_SOURCE
        !           222: #endif
        !           223: #define HAVE_SHMGET 1
        !           224: #define USE_SHMGET_SCOREBOARD
        !           225: #define SELECT_NEEDS_CAST
        !           226: #define HAVE_SYSLOG 1
        !           227: 
        !           228: #elif defined(HPUX) || defined(HPUX10)
        !           229: #undef HAVE_GMTOFF
        !           230: #define NO_KILLPG
        !           231: #undef NO_SETSID
        !           232: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           233: #ifndef _HPUX_SOURCE
        !           234: #define _HPUX_SOURCE
        !           235: #endif
        !           236: #define HAVE_SHMGET 1
        !           237: #define USE_SHMGET_SCOREBOARD
        !           238: #define HAVE_SYSLOG 1
        !           239: #ifndef HPUX10
        !           240: #define SELECT_NEEDS_CAST
        !           241: typedef int rlim_t;
        !           242: #endif
        !           243: 
        !           244: #elif defined(HPUX11)
        !           245: #ifndef _HPUX_SOURCE
        !           246: #define _HPUX_SOURCE
        !           247: #endif
        !           248: #define HAVE_SHMGET
        !           249: #define USE_SHMGET_SCOREBOARD
        !           250: #undef  HAVE_GMTOFF
        !           251: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           252: /* feeling brave?  want to try using POSIX mutexes? */
        !           253: /* #define HAVE_MMAP */
        !           254: /* #define USE_MMAP_SCOREBOARD */
        !           255: /* #define USE_MMAP_FILES */
        !           256: /* #define USE_PTHREAD_SERIALIZED_ACCEPT */
        !           257: #define NO_KILLPG
        !           258: #undef  NO_SETSID
        !           259: #define HAVE_SYSLOG
        !           260: 
        !           261: #elif defined(AIX)
        !           262: #undef HAVE_GMTOFF
        !           263: #undef NO_KILLPG
        !           264: #undef NO_SETSID
        !           265: #ifndef __ps2__
        !           266: #define HAVE_MMAP 1
        !           267: #define USE_MMAP_SCOREBOARD
        !           268: #define USE_MMAP_FILES
        !           269: #define HAVE_SYSLOG 1
        !           270: #ifndef DEFAULT_GROUP
        !           271: #define DEFAULT_GROUP "nobody"
        !           272: #endif
        !           273: #endif
        !           274: #ifndef DEFAULT_USER
        !           275: #define DEFAULT_USER "nobody"
        !           276: #endif
        !           277: #ifdef NEED_RLIM_T
        !           278: typedef int rlim_t;
        !           279: #endif
        !           280: #if !defined(USE_PTHREAD_SERIALIZED_ACCEPT)
        !           281: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           282: #endif
        !           283: #ifdef USEBCOPY
        !           284: #define memmove(a,b,c) bcopy(b,a,c)
        !           285: #endif
        !           286: #if AIX >= 42
        !           287: #define NET_SIZE_T size_t
        !           288: #endif
        !           289: 
        !           290: #elif defined(ULTRIX)
        !           291: /* we don't want to use sys/resource.h under
        !           292:    Ultrix although this header exists. */
        !           293: #undef HAVE_SYS_RESOURCE_H
        !           294: #define HAVE_GMTOFF 1
        !           295: #undef NO_KILLPG
        !           296: #undef NO_SETSID
        !           297: #define ULTRIX_BRAIN_DEATH
        !           298: #define NEED_STRDUP
        !           299: /* If you have Ultrix 4.3, and are using cc, const is broken */
        !           300: #ifndef __ultrix__             /* Hack to check for pre-Ultrix 4.4 cc */
        !           301: #define const                  /* Not implemented */
        !           302: #endif
        !           303: 
        !           304: #elif defined(OSF1)
        !           305: #define HAVE_GMTOFF 1
        !           306: #undef NO_KILLPG
        !           307: #undef NO_SETSID
        !           308: #define HAVE_MMAP 1
        !           309: #define USE_MMAP_SCOREBOARD
        !           310: #define USE_MMAP_FILES
        !           311: #define NO_LONG_DOUBLE
        !           312: #define HAVE_SYSLOG 1
        !           313: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           314: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           315: 
        !           316: #elif defined(PARAGON)
        !           317: #define HAVE_GMTOFF 1
        !           318: #undef NO_KILLPG
        !           319: #undef NO_SETSID
        !           320: #define HAVE_MMAP 1
        !           321: #define USE_MMAP_SCOREBOARD
        !           322: #define USE_MMAP_FILES
        !           323: #define NO_LONG_DOUBLE
        !           324: #define HAVE_SYSLOG 1
        !           325: typedef int rlim_t;
        !           326: 
        !           327: #elif defined(SEQUENT)
        !           328: #define DEFAULT_USER "nobody"
        !           329: #define DEFAULT_GROUP "nobody"
        !           330: #define NO_SHMGET 1
        !           331: #define HAVE_MMAP 1
        !           332: #define HAVE_SYSLOG 1
        !           333: #define USE_MMAP_FILES 1
        !           334: #define USE_MMAP_SCOREBOARD 1
        !           335: #define USE_FCNTL_SERIALIZED_ACCEPT 1
        !           336: #define JMP_BUF sigjmp_buf
        !           337: #undef NO_SETSID
        !           338: #if SEQUENT < 40
        !           339: typedef int rlim_t;
        !           340: #define NO_GETTIMEOFDAY
        !           341: #undef HAVE_SYS_RESOURCE_H /* exists but does not provide *rlimit funcs */
        !           342: #include <sys/times.h>
        !           343: #endif
        !           344: #if SEQUENT < 42
        !           345: #define NEED_STRCASECMP
        !           346: #define NEED_STRNCASECMP
        !           347: #endif
        !           348: #if SEQUENT < 44
        !           349: #define NO_KILLPG 1
        !           350: #define NET_SIZE_T int
        !           351: #endif
        !           352: #if SEQUENT >= 44
        !           353: #undef NO_KILLPG
        !           354: #define NET_SIZE_T size_t
        !           355: #endif
        !           356: 
        !           357: #elif defined(NEXT)
        !           358: typedef unsigned short mode_t;
        !           359: typedef int rlim_t;
        !           360: #define HAVE_GMTOFF 1
        !           361: #undef NO_KILLPG
        !           362: #define NO_SETSID
        !           363: #define NEED_STRDUP
        !           364: #define NO_LINGCLOSE
        !           365: #undef _POSIX_SOURCE
        !           366: #ifndef FD_CLOEXEC
        !           367: #define FD_CLOEXEC 1
        !           368: #endif
        !           369: #ifndef S_ISDIR
        !           370: #define S_ISDIR(m)      (((m)&(S_IFMT)) == (S_IFDIR))
        !           371: #endif
        !           372: #ifndef S_ISREG
        !           373: #define S_ISREG(m)      (((m)&(S_IFMT)) == (S_IFREG))
        !           374: #endif
        !           375: #ifndef S_IXUSR
        !           376: #define S_IXUSR 00100
        !           377: #endif
        !           378: #ifndef S_IRGRP
        !           379: #define S_IRGRP 00040
        !           380: #endif
        !           381: #ifndef S_IXGRP
        !           382: #define S_IXGRP 00010
        !           383: #endif
        !           384: #ifndef S_IROTH
        !           385: #define S_IROTH 00004
        !           386: #endif
        !           387: #ifndef S_IXOTH
        !           388: #define S_IXOTH 00001
        !           389: #endif
        !           390: #ifndef S_IRUSR
        !           391: #define S_IRUSR S_IREAD
        !           392: #endif
        !           393: #ifndef S_IWUSR
        !           394: #define S_IWUSR S_IWRITE
        !           395: #endif
        !           396: #ifndef S_IWGRP
        !           397: #define S_IWGRP        000020
        !           398: #endif
        !           399: #ifndef S_IWOTH
        !           400: #define S_IWOTH 000002
        !           401: #endif
        !           402: 
        !           403: #define STDIN_FILENO  0
        !           404: #define STDOUT_FILENO 1
        !           405: #define STDERR_FILENO 2
        !           406: 
        !           407: /* PR#2293 fix */
        !           408: #define        ap_wait_t       union wait
        !           409: #define waitpid(a,b,c) wait4((a) == -1 ? 0 : (a),(union wait *)(b),c,NULL)
        !           410: #define WEXITSTATUS(status)     (int)( WIFEXITED(status) ? ( (status).w_retcode ) : -1)
        !           411: #define WTERMSIG(status)       (int)( (status).w_termsig )
        !           412: 
        !           413: typedef int pid_t;
        !           414: #define USE_LONGJMP
        !           415: #define NO_USE_SIGACTION
        !           416: #define HAVE_SYSLOG 1
        !           417: 
        !           418: #if defined(__DYNAMIC__)
        !           419: #define HAVE_DYLD
        !           420: #define DYLD_CANT_UNLOAD
        !           421: #endif
        !           422: 
        !           423: #elif defined(DARWIN) /* Darwin (Mac OS) */
        !           424: #undef PLATFORM
        !           425: #define PLATFORM "Darwin"
        !           426: #define HAVE_DYLD
        !           427: #define HAVE_GMTOFF
        !           428: #define HAVE_MMAP
        !           429: #define USE_MMAP_FILES
        !           430: #define USE_MMAP_SCOREBOARD
        !           431: #ifdef MAC_OS_X_SERVER
        !           432: #define MAP_TMPFILE
        !           433: #endif /* MAC_OS_X_SERVER */
        !           434: #define HAVE_RESOURCE
        !           435: #define HAVE_SNPRINTF
        !           436: #define JMP_BUF jmp_buf
        !           437: #define USE_LONGJMP
        !           438: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           439: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           440: /*
        !           441:  * If you are using APACI, (you probably should be on Mac OS) these
        !           442:  * values are set at configure time.
        !           443:  */
        !           444: #ifndef HTTPD_ROOT
        !           445: #define HTTPD_ROOT              "/Local/Library/WebServer"
        !           446: #endif
        !           447: #ifndef DOCUMENT_LOCATION
        !           448: #define DOCUMENT_LOCATION       HTTPD_ROOT "/Documents"
        !           449: #endif
        !           450: #ifndef DEFAULT_XFERLOG
        !           451: #define DEFAULT_XFERLOG         "Logs/Access"
        !           452: #endif
        !           453: #ifndef DEFAULT_ERRORLOG
        !           454: #define DEFAULT_ERRORLOG        "Logs/Errors"
        !           455: #endif
        !           456: #ifndef DEFAULT_PIDLOG
        !           457: #define DEFAULT_PIDLOG          "Logs/Process"
        !           458: #endif
        !           459: #ifndef DEFAULT_SCOREBOARD
        !           460: #define DEFAULT_SCOREBOARD      "Logs/Status"
        !           461: #endif
        !           462: #ifndef DEFAULT_LOCKFILE
        !           463: #define DEFAULT_LOCKFILE        "Logs/Lock"
        !           464: #endif
        !           465: #ifndef SERVER_CONFIG_FILE
        !           466: #define SERVER_CONFIG_FILE      "Configuration/Server"
        !           467: #endif
        !           468: #ifndef RESOURCE_CONFIG_FILE
        !           469: #define RESOURCE_CONFIG_FILE    "Configuration/Resources"
        !           470: #endif
        !           471: #ifndef TYPES_CONFIG_FILE
        !           472: #define TYPES_CONFIG_FILE       "Configuration/MIME"
        !           473: #endif
        !           474: #ifndef ACCESS_CONFIG_FILE
        !           475: #define ACCESS_CONFIG_FILE      "Configuration/Access"
        !           476: #endif
        !           477: #ifndef DEFAULT_USER_DIR
        !           478: #define DEFAULT_USER_DIR        "Library/Web Documents"
        !           479: #endif
        !           480: #ifndef DEFAULT_USER
        !           481: #define DEFAULT_USER            "www"
        !           482: #endif
        !           483: #ifndef DEFAULT_GROUP
        !           484: #define DEFAULT_GROUP           "www"
        !           485: #endif
        !           486: #ifndef DEFAULT_PATH
        !           487: #define DEFAULT_PATH            "/bin:/usr/bin:/usr/local/bin"
        !           488: #endif
        !           489: 
        !           490: #elif defined(LINUX)
        !           491: 
        !           492: #if LINUX > 1
        !           493: #include <features.h>
        !           494: 
        !           495: /* libc4 systems probably still work, it probably doesn't define
        !           496:  *  __GNU_LIBRARY__
        !           497:  * libc5 systems define __GNU_LIBRARY__ == 1, but don't define __GLIBC__
        !           498:  * glibc 2.x and later systems define __GNU_LIBRARY__ == 6, but list it as
        !           499:  * "deprecated in favour of __GLIBC__"; the value 6 will never be changed.
        !           500:  * glibc 1.x systems (i.e. redhat 4.x on sparc/alpha) should have
        !           501:  * __GLIBC__ < 2
        !           502:  * all glibc based systems need crypt.h
        !           503:  */
        !           504: #if defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
        !           505: #include <crypt.h>
        !           506: #endif
        !           507: 
        !           508: /* glibc 2.0.0 through 2.0.4 need size_t * here, where 2.0.5 needs socklen_t *
        !           509:  * there's no way to discern between these two libraries.  But using int should
        !           510:  * be portable because otherwise these libs would be hopelessly broken with
        !           511:  * reams of existing networking code.  We'll use socklen_t * for 2.1.x and
        !           512:  * later.
        !           513:  *
        !           514:  * int works for all the earlier libs, and is picked up by default later.
        !           515:  */
        !           516: #if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 0))
        !           517: #define NET_SIZE_T socklen_t
        !           518: #endif
        !           519: 
        !           520: #define HAVE_SHMGET 1
        !           521: #define USE_SHMGET_SCOREBOARD
        !           522: #define HAVE_MMAP 1
        !           523: #define USE_MMAP_FILES
        !           524: 
        !           525: /* flock is faster ... but hasn't been tested on 1.x systems */
        !           526: /* PR#3531 indicates flock() may not be stable, probably depends on
        !           527:  * kernel version.  Go back to using fcntl, but provide a way for
        !           528:  * folks to tweak their Configuration to get flock.
        !           529:  */
        !           530: #ifndef USE_FLOCK_SERIALIZED_ACCEPT
        !           531: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           532: #endif
        !           533: 
        !           534: #define SYS_SIGLIST    _sys_siglist
        !           535: 
        !           536: #else
        !           537: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           538: #endif
        !           539: 
        !           540: #undef HAVE_GMTOFF
        !           541: #undef NO_KILLPG
        !           542: #undef NO_SETSID
        !           543: #undef NEED_STRDUP
        !           544: #include <sys/time.h>
        !           545: #define HAVE_SYSLOG 1
        !           546: 
        !           547: /* glibc 2.1 and later finally define rlim_t */
        !           548: #if !defined(__GLIBC__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)
        !           549: typedef int rlim_t;
        !           550: #endif
        !           551: 
        !           552: #elif defined(SCO)
        !           553: #undef HAVE_GMTOFF
        !           554: #undef NO_KILLPG
        !           555: #undef NO_SETSID
        !           556: #define NEED_INITGROUPS
        !           557: #define NO_WRITEV
        !           558: #include <sys/time.h>
        !           559: #define HAVE_SYSLOG 1
        !           560: #undef HAVE_SYS_RESOURCE_H
        !           561: 
        !           562: #elif defined(SCO5)
        !           563: 
        !           564: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           565: #define HAVE_MMAP 1
        !           566: #define USE_MMAP_SCOREBOARD
        !           567: #define USE_MMAP_FILES
        !           568: #define SecureWare
        !           569: #define HAVE_SYSLOG 1
        !           570: 
        !           571: /* Although SCO 5 defines these in <strings.h> (note the "s") they don't have
        !           572:    consts. Sigh. */
        !           573: extern int strcasecmp(const char *, const char *);
        !           574: extern int strncasecmp(const char *, const char *, unsigned);
        !           575: 
        !           576: #elif defined(AUX3)
        !           577: /* These are to let -Wall compile more cleanly */
        !           578: extern int strcasecmp(const char *, const char *);
        !           579: extern int strncasecmp(const char *, const char *, unsigned);
        !           580: extern int set42sig(), getopt(), getpeername(), bzero();
        !           581: extern int listen(), bind(), socket(), getsockname();
        !           582: extern int accept(), gethostname(), connect(), lstat();
        !           583: extern int select(), killpg(), shutdown();
        !           584: extern int initgroups(), setsockopt();
        !           585: extern char *shmat();
        !           586: extern int shmctl();
        !           587: extern int shmget();
        !           588: extern char *sbrk();
        !           589: extern char *crypt();
        !           590: #include <sys/time.h>
        !           591: #undef HAVE_GMTOFF
        !           592: #undef NO_KILLPG
        !           593: #undef NO_SETSID
        !           594: #define NEED_STRDUP
        !           595: /* fcntl() locking is expensive with NFS */
        !           596: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           597: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           598: #define HAVE_SHMGET 1
        !           599: #define USE_SHMGET_SCOREBOARD
        !           600: /*
        !           601:  * NOTE: If when you run Apache under A/UX and you get a warning
        !           602:  * that httpd couldn't move break, then the below value for
        !           603:  * MOVEBREAK (64megs) is too large for your setup. Try reducing
        !           604:  * to 0x2000000 which is still PLENTY of space. I doubt if
        !           605:  * even on heavy systems sbrk() would be called at all...
        !           606:  */
        !           607: #define MOVEBREAK              0x4000000
        !           608: #define NO_LINGCLOSE
        !           609: #define NO_SLACK
        !           610: #define HAVE_SYSLOG 1
        !           611: #undef HAVE_SYS_RESOURCE_H     /* exists but does not provide *rlimit funcs */
        !           612: 
        !           613: #elif defined(SVR4)
        !           614: #define NO_KILLPG
        !           615: #undef  NO_SETSID
        !           616: #undef NEED_STRDUP
        !           617: #ifndef MPRAS
        !           618: #define NEED_STRCASECMP
        !           619: #ifndef ENCORE
        !           620: #define NEED_STRNCASECMP
        !           621: #endif /* ENCORE */
        !           622: #endif /* MPRAS */
        !           623: #define bzero(a,b) memset(a,0,b)
        !           624: /* A lot of SVR4 systems need this */
        !           625: #ifndef USE_SYSVSEM_SERIALIZED_ACCEPT
        !           626: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           627: #endif
        !           628: #define HAVE_SYSLOG 1
        !           629: #define NET_SIZE_T size_t
        !           630: #define HAVE_SHMGET 1
        !           631: #define USE_SHMGET_SCOREBOARD
        !           632: #ifdef _OSD_POSIX /* BS2000-POSIX mainframe needs initgroups */
        !           633: #define NEED_HASHBANG_EMUL /* execve() doesn't start shell scripts by default */
        !           634: #define _KMEMUSER          /* Enable SHM_R/SHM_W defines in <shm.h> */
        !           635: #undef NEED_STRCASECMP
        !           636: #undef NEED_STRNCASECMP
        !           637: #undef bzero
        !           638: #endif /*_OSD_POSIX*/
        !           639: 
        !           640: #elif defined(UW)
        !           641: #if UW < 700
        !           642: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           643: #define NO_LINGCLOSE
        !           644: #define NO_KILLPG
        !           645: #endif
        !           646: #undef  NO_SETSID
        !           647: #undef NEED_STRDUP
        !           648: #define NEED_STRCASECMP
        !           649: #define NEED_STRNCASECMP
        !           650: #define bzero(a,b) memset(a,0,b)
        !           651: #define HAVE_MMAP 1
        !           652: #define USE_MMAP_SCOREBOARD
        !           653: #define USE_MMAP_FILES
        !           654: #define HAVE_SHMGET 1
        !           655: #undef USE_SHMGET_SCOREBOARD   /* force use of mmap() scoreboard */
        !           656: #include <sys/time.h>
        !           657: #if UW >= 200
        !           658: #define _POSIX_SOURCE
        !           659: #endif
        !           660: #define NET_SIZE_T size_t
        !           661: #define HAVE_SYSLOG 1
        !           662: 
        !           663: #elif defined(DGUX)
        !           664: #define NO_KILLPG
        !           665: #undef  NO_SETSID
        !           666: #undef NEED_STRDUP
        !           667: #ifdef _IX86_DG
        !           668: #undef NEED_STRCASECMP
        !           669: #undef NEED_STRNCASECMP
        !           670: #else
        !           671: #define NEED_STRCASECMP
        !           672: #define NEED_STRNCASECMP
        !           673: #endif
        !           674: #define bzero(a,b) memset(a,0,b)
        !           675: /* A lot of SVR4 systems need this */
        !           676: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           677: #define ap_inet_addr inet_network
        !           678: #define HAVE_SYSLOG 1
        !           679: 
        !           680: #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(NETBSD)
        !           681: #define HAVE_GMTOFF 1
        !           682: #undef NO_KILLPG
        !           683: #undef NO_SETSID
        !           684: #define HAVE_SYSLOG 1
        !           685: #ifndef DEFAULT_USER
        !           686: #define DEFAULT_USER "nobody"
        !           687: #endif
        !           688: #ifndef DEFAULT_GROUP
        !           689: #define DEFAULT_GROUP "nogroup"
        !           690: #endif
        !           691: #define HAVE_SHMGET 1
        !           692: #define HAVE_MMAP 1
        !           693: #define USE_MMAP_SCOREBOARD
        !           694: #define USE_MMAP_FILES
        !           695: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           696: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           697: 
        !           698: #elif defined(UTS21)
        !           699: #undef HAVE_GMTOFF
        !           700: #undef NO_KILLPG
        !           701: #define NO_SETSID
        !           702: #define NEED_WAITPID
        !           703: #define STDIN_FILENO 0
        !           704: #define STDOUT_FILENO 1
        !           705: #define STDERR_FILENO 2
        !           706: #define HAVE_SYSLOG 1
        !           707: #define USE_LONGJMP
        !           708: #define JMP_BUF jmp_buf
        !           709: #define NO_USE_SIGACTION
        !           710: #define NEED_STRERROR
        !           711: #define NEED_STRSTR
        !           712: #define NEED_HASHBANG_EMUL
        !           713: #define NDELAY_PIPE_RETURNS_ZERO
        !           714: #define NO_DATA NO_ADDRESS
        !           715: #define        ap_wait_t               union wait
        !           716: #define WEXITSTATUS(status)    (int)((status).w_retcode)
        !           717: #define WTERMSIG(status)       (int)((status).w_termsig)
        !           718: #define strftime(buf,bufsize,fmt,tm)    ascftime(buf,fmt,tm)
        !           719: #undef HAVE_SYS_RESOURCE_H /* exists but does not provide *rlimit funcs */
        !           720: #include <sys/types.h>
        !           721: #include <sys/time.h>     
        !           722: 
        !           723: #elif defined(APOLLO)
        !           724: #undef HAVE_GMTOFF
        !           725: #undef NO_KILLPG
        !           726: #undef NO_SETSID
        !           727: #define HAVE_SYSLOG 1
        !           728: 
        !           729: #elif defined(__FreeBSD__) || defined(__bsdi__)
        !           730: #if defined(__FreeBSD__)
        !           731: #include <osreldate.h>
        !           732: #endif
        !           733: #define HAVE_GMTOFF 1
        !           734: #undef NO_KILLPG
        !           735: #undef NO_SETSID
        !           736: #define HAVE_MMAP 1
        !           737: #define USE_MMAP_SCOREBOARD
        !           738: #define USE_MMAP_FILES
        !           739: #ifndef DEFAULT_USER
        !           740: #define DEFAULT_USER "nobody"
        !           741: #endif
        !           742: #ifndef DEFAULT_GROUP
        !           743: #define DEFAULT_GROUP "nogroup"
        !           744: #endif
        !           745: #if defined(__bsdi__) || \
        !           746: (defined(__FreeBSD_version) && (__FreeBSD_version < 220000))
        !           747: typedef quad_t rlim_t;
        !           748: #endif
        !           749: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           750: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           751: #define HAVE_SYSLOG 1
        !           752: #define SYS_SIGLIST sys_siglist
        !           753: #if (defined(__FreeBSD_version) && (__FreeBSD_version >= 400000))
        !           754: #define NET_SIZE_T socklen_t
        !           755: #endif
        !           756: 
        !           757: #elif defined(QNX)
        !           758: #ifndef crypt
        !           759: char *crypt(const char *pw, const char *salt);
        !           760: #endif
        !           761: #ifndef initgroups
        !           762: int initgroups(char *, int);
        !           763: #endif
        !           764: #ifndef strncasecmp
        !           765: #define strncasecmp strnicmp
        !           766: #endif
        !           767: #undef NO_KILLPG
        !           768: #undef NO_SETSID
        !           769: #define NEED_INITGROUPS
        !           770: #define NEED_SELECT_H
        !           771: #define NEED_PROCESS_H
        !           772: #include <unix.h>
        !           773: #define HAVE_MMAP 1
        !           774: #define USE_POSIX_SCOREBOARD
        !           775: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           776: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           777: #define HAVE_SYSLOG 1
        !           778: 
        !           779: #elif defined(LYNXOS)
        !           780: #undef HAVE_GMTOFF
        !           781: #undef USE_MMAP_SCOREBOARD
        !           782: #undef USE_SHMGET_SCOREBOARD
        !           783: #undef USE_FCNTL_SERIALIZED_ACCEPT
        !           784: #undef USE_FLOCK_SERIALIZED_ACCEPT
        !           785: #define USE_LONGJMP
        !           786: #undef NO_KILLPG
        !           787: #undef NO_SETSID
        !           788: #undef NO_USE_SIGACTION
        !           789: #undef NO_LINGCLOSE
        !           790: extern char *crypt(char *pw, char *salt);
        !           791: typedef int rlim_t;
        !           792: #define HAVE_SYSLOG 1
        !           793: 
        !           794: #elif defined(UXPDS)
        !           795: #undef NEED_STRCASECMP
        !           796: #undef NEED_STRNCASECMP
        !           797: #undef NEED_STRDUP
        !           798: #undef HAVE_GMTOFF
        !           799: #define NO_KILLPG
        !           800: #undef NO_SETSID
        !           801: #define bzero(a,b) memset(a,0,b)
        !           802: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           803: #define HAVE_MMAP 1
        !           804: #define USE_MMAP_SCOREBOARD
        !           805: #define USE_MMAP_FILES
        !           806: #define HAVE_SYSLOG 1
        !           807: 
        !           808: #elif defined(OS2)
        !           809: /* Defines required for EMX OS/2 port. */
        !           810: #define NO_KILLPG
        !           811: #define NEED_STRCASECMP
        !           812: #define NEED_STRNCASECMP
        !           813: #define NEED_PROCESS_H
        !           814: #define NO_SETSID
        !           815: #define NO_TIMES
        !           816: #define CASE_BLIND_FILESYSTEM
        !           817: /* Add some drive name support */
        !           818: #define chdir _chdir2
        !           819: #include <sys/time.h>
        !           820: #define MAXSOCKETS 2048
        !           821: #define USE_OS2_SCOREBOARD
        !           822: #define NO_RELIABLE_PIPED_LOGS
        !           823: #define USE_OS2SEM_SERIALIZED_ACCEPT
        !           824: #define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
        !           825: #define NO_SLACK
        !           826: #define FOPEN_REQUIRES_T
        !           827: 
        !           828: #elif defined(__MACHTEN__)
        !           829: typedef int rlim_t;
        !           830: #undef NO_KILLPG
        !           831: #define NO_SETSID
        !           832: #define HAVE_GMTOFF 1
        !           833: #ifndef __MACHTEN_PPC__
        !           834: #ifndef __MACHTEN_68K__
        !           835: #define __MACHTEN_68K__
        !           836: #endif
        !           837: #define USE_FLOCK_SERIALIZED_ACCEPT
        !           838: #define NO_USE_SIGACTION
        !           839: #define JMP_BUF sigjmp_buf
        !           840: #define USE_LONGJMP
        !           841: #undef NEED_STRDUP
        !           842: #else
        !           843: #define HAVE_SHMGET 1
        !           844: #define USE_SHMGET_SCOREBOARD
        !           845: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           846: #endif
        !           847: 
        !           848: /* Convex OS v11 */
        !           849: #elif defined(CONVEXOS11)
        !           850: #undef HAVE_GMTOFF
        !           851: #undef NO_KILLPG
        !           852: #undef NO_SETSID
        !           853: #undef NEED_STRDUP
        !           854: #define HAVE_MMAP 1
        !           855: #define USE_MMAP_SCOREBOARD
        !           856: #define USE_MMAP_FILES
        !           857: #define HAVE_SYSLOG 1
        !           858: 
        !           859: #define NO_TIMEZONE
        !           860: #include <stdio.h>
        !           861: #include <sys/types.h>
        !           862: typedef int rlim_t;
        !           863: 
        !           864: #elif defined(ISC)
        !           865: #include <net/errno.h>
        !           866: #define NO_KILLPG
        !           867: #undef NO_SETSID
        !           868: #define HAVE_SHMGET 1
        !           869: #define USE_SHMGET_SCOREBOARD
        !           870: #define USE_FCNTL_SERIALIZED_ACCEPT
        !           871: #define HAVE_SYSLOG 1
        !           872: 
        !           873: #elif defined(NEWSOS)
        !           874: #define HAVE_SHMGET 1
        !           875: #define USE_SHMGET_SCOREBOARD
        !           876: #define USE_LONGJMP
        !           877: #define NO_SETSID
        !           878: #define NO_USE_SIGACTION
        !           879: #define NEED_WAITPID
        !           880: #define NO_OTHER_CHILD
        !           881: #define HAVE_SYSLOG 1
        !           882: #include <sys/time.h>
        !           883: #include <stdlib.h>
        !           884: #include <sys/types.h>
        !           885: typedef int pid_t;
        !           886: typedef int rlim_t;
        !           887: typedef int mode_t;
        !           888: 
        !           889: #elif defined(RISCIX)
        !           890: #include <sys/time.h>
        !           891: typedef int rlim_t;
        !           892: #define NO_USE_SIGACTION
        !           893: #define USE_LONGJMP
        !           894: #define NEED_STRCASECMP
        !           895: #define NEED_STRNCASECMP
        !           896: #define NEED_STRDUP
        !           897: 
        !           898: #elif defined(BEOS)
        !           899: #undef PLATFORM
        !           900: #define PLATFORM "BeOS"
        !           901: #include <stddef.h>
        !           902: 
        !           903: #define NO_WRITEV
        !           904: #define NO_KILLPG
        !           905: #define NEED_INITGROUPS
        !           906: #define PF_INET AF_INET
        !           907: #define S_IEXEC S_IXUSR
        !           908: 
        !           909: #elif defined(_CX_SX)
        !           910: #define JMP_BUF sigjmp_buf
        !           911: #include <sys/types.h>
        !           912: #include <sys/time.h>
        !           913: 
        !           914: #elif defined(WIN32)
        !           915: 
        !           916: /* All windows stuff is now in os/win32/os.h */
        !           917: 
        !           918: #elif defined(TPF) /* IBM Transaction Processing Facility operating system */
        !           919: 
        !           920: #include <tpfeq.h>
        !           921: #include <tpfio.h>
        !           922: #include <sysapi.h>
        !           923: #include <sysgtime.h>
        !           924: #define PRIMECRAS 0x010000
        !           925: #define JMP_BUF jmp_buf
        !           926: #define HAVE_SHMGET
        !           927: #undef  HAVE_SYS_RESOURCE_H
        !           928: #define NEED_INITGROUPS
        !           929: #define NEED_SIGNAL_INTERRUPT
        !           930: #include <strings.h>
        !           931: #ifndef __strings_h
        !           932: #define NEED_STRCASECMP
        !           933: #define NEED_STRNCASECMP
        !           934: #endif
        !           935: #define NEED_STRDUP
        !           936: #define NO_DBM_REWRITEMAP
        !           937: #define NO_GETTIMEOFDAY
        !           938: #define NO_KILLPG
        !           939: #define NO_LINGCLOSE
        !           940: #define NO_MMAP
        !           941: #define NO_OTHER_CHILD
        !           942: #define NO_PIPED_LOGS
        !           943: #define NO_RELIABLE_PIPED_LOGS
        !           944: #define NO_SETSID
        !           945: #define NO_SLACK
        !           946: #define NO_TIMES
        !           947: #define NO_USE_SIGACTION
        !           948: #define USE_LONGJMP
        !           949: /*#define USE_SHMGET_SCOREBOARD*/
        !           950: #define USE_TPF_ACCEPT
        !           951: #define USE_TPF_CORE_SERIALIZED_ACCEPT
        !           952: /*#define USE_TPF_DAEMON*/
        !           953: #define USE_TPF_SCOREBOARD
        !           954: #define USE_TPF_SELECT
        !           955: #define S_IREAD S_IRUSR
        !           956: #define S_IWRITE S_IWUSR
        !           957: #define S_IEXEC S_IXUSR
        !           958: #define crypt(buf,salt) ((char *)buf)
        !           959: #undef  offsetof
        !           960: #define offsetof(s_type,field) ((size_t)&(((s_type*)0)->field))
        !           961: 
        !           962: #elif defined(__TANDEM)
        !           963: #define NO_WRITEV
        !           964: #define NO_KILLPG
        !           965: #define NEED_INITGROUPS
        !           966: #define NO_SLACK
        !           967: 
        !           968: #elif defined(OS390)                /* IBM OS/390 Operating System      */
        !           969: #define HAVE_MMAP
        !           970: #define HAVE_SHMGET
        !           971: #define USE_SHMGET_SCOREBOARD
        !           972: #define USE_MMAP_FILES
        !           973: #define NEED_UNION_SEMUN
        !           974: #define USE_SYSVSEM_SERIALIZED_ACCEPT
        !           975: #define _POSIX_SOURCE
        !           976: #include <signal.h>
        !           977: #ifdef SIGDUMP  /* SIGDUMP is not defined by OS/390 v1r2 */
        !           978: #define NSIG SIGDUMP+1
        !           979: #else
        !           980: #define NSIG 40
        !           981: #endif
        !           982: #define JMP_BUF sigjmp_buf
        !           983: #define _XOPEN_SOURCE_EXTENDED 1
        !           984: #define _OPEN_MSGQ_EXT
        !           985: #define _XOPEN_SOURCE
        !           986: #define SHM_R S_IRUSR
        !           987: #define SHM_W S_IWUSR
        !           988: #include <sys/time.h>
        !           989: #include <sys/types.h>
        !           990: #include <sys/msg.h>
        !           991: #include <sys/socket.h>
        !           992: #define NET_SIZE_T size_t
        !           993: #define NEED_HASHBANG_EMUL
        !           994: 
        !           995: #else
        !           996: /* Unknown system - Edit these to match */
        !           997: #ifdef BSD
        !           998: #define HAVE_GMTOFF 1
        !           999: #else
        !          1000: #undef HAVE_GMTOFF
        !          1001: #endif
        !          1002: /* NO_KILLPG is set on systems that don't have killpg */
        !          1003: #undef NO_KILLPG
        !          1004: /* NO_SETSID is set on systems that don't have setsid */
        !          1005: #undef NO_SETSID
        !          1006: /* NEED_STRDUP is set on stupid systems that don't have strdup. */
        !          1007: #undef NEED_STRDUP
        !          1008: #endif
        !          1009: 
        !          1010: #ifdef HAVE_SYS_PARAM_H
        !          1011: #include <sys/param.h>
        !          1012: #endif /* HAVE_SYS_PARAM_H */
        !          1013: 
        !          1014: /* stuff marked API_EXPORT is part of the API, and intended for use
        !          1015:  * by modules
        !          1016:  */
        !          1017: #ifndef API_EXPORT
        !          1018: #define API_EXPORT(type)    type
        !          1019: #endif
        !          1020: 
        !          1021: /* Stuff marked API_EXPORT_NONSTD is part of the API, and intended for
        !          1022:  * use by modules.  The difference between API_EXPORT and
        !          1023:  * API_EXPORT_NONSTD is that the latter is required for any functions
        !          1024:  * which use varargs or are used via indirect function call.  This
        !          1025:  * is to accomodate the two calling conventions in windows dlls.
        !          1026:  */
        !          1027: #ifndef API_EXPORT_NONSTD
        !          1028: #define API_EXPORT_NONSTD(type)    type
        !          1029: #endif
        !          1030: 
        !          1031: #ifndef MODULE_VAR_EXPORT
        !          1032: #define MODULE_VAR_EXPORT
        !          1033: #endif
        !          1034: #ifndef API_VAR_EXPORT
        !          1035: #define API_VAR_EXPORT
        !          1036: #endif
        !          1037: 
        !          1038: /* modules should not used functions marked CORE_EXPORT
        !          1039:  * or CORE_EXPORT_NONSTD */
        !          1040: #ifndef CORE_EXPORT
        !          1041: #define CORE_EXPORT    API_EXPORT
        !          1042: #endif
        !          1043: #ifndef CORE_EXPORT_NONSTD
        !          1044: #define CORE_EXPORT_NONSTD     API_EXPORT_NONSTD
        !          1045: #endif
        !          1046: 
        !          1047: /* On Darwin, symbols that conflict with loaded dylibs
        !          1048:  * (eg. System framework) need to be declared as private symbols with
        !          1049:  * __private_extern__.
        !          1050:  * For other systems, make that a no-op.
        !          1051:  */
        !          1052: #if defined(DARWIN) && defined(__DYNAMIC__)
        !          1053: #define ap_private_extern __private_extern__
        !          1054: #else
        !          1055: #define ap_private_extern
        !          1056: #endif
        !          1057: 
        !          1058: /*
        !          1059:  * The particular directory style your system supports. If you have dirent.h
        !          1060:  * in /usr/include (POSIX) or /usr/include/sys (SYSV), #include 
        !          1061:  * that file and define DIR_TYPE to be dirent. Otherwise, if you have 
        !          1062:  * /usr/include/sys/dir.h, define DIR_TYPE to be direct and include that
        !          1063:  * file. If you have neither, I'm confused.
        !          1064:  */
        !          1065: 
        !          1066: #ifndef NETWARE
        !          1067: #include <sys/types.h>
        !          1068: #endif
        !          1069: #include <stdarg.h>
        !          1070: 
        !          1071: #if !defined(NEXT) && !defined(WIN32)
        !          1072: #include <dirent.h>
        !          1073: #define DIR_TYPE dirent
        !          1074: #elif !defined(WIN32)
        !          1075: #include <sys/dir.h>
        !          1076: #define DIR_TYPE direct
        !          1077: #else
        !          1078: #define DIR_TYPE dirent
        !          1079: #endif
        !          1080: 
        !          1081: #include <stdio.h>
        !          1082: #include <stdlib.h>
        !          1083: #include <string.h>
        !          1084: #ifdef __TANDEM
        !          1085: #include <strings.h>
        !          1086: #endif
        !          1087: #include "ap_ctype.h"
        !          1088: #if !defined(MPE) && !defined(WIN32) && !defined(TPF) && !defined(__TANDEM) && !defined(NETWARE)
        !          1089: #include <sys/file.h>
        !          1090: #endif
        !          1091: #if !defined(WIN32) && !defined(NETWARE)
        !          1092: #include <sys/socket.h>
        !          1093: #ifdef HAVE_SYS_SELECT_H
        !          1094: #include <sys/select.h>
        !          1095: #endif /* HAVE_SYS_SELECT_H */
        !          1096: #ifndef TPF
        !          1097: #include <netinet/in.h>
        !          1098: #endif /* TPF */
        !          1099: #if defined(OS390) && !defined(NO_ADDRESS)
        !          1100: #define NO_ADDRESS NO_DATA  /* Not defined properly by OS/390 v1r2 */
        !          1101: #endif
        !          1102: #include <netdb.h>
        !          1103: #include <sys/ioctl.h>
        !          1104: #if !defined(MPE) && !defined(BEOS) && !defined(TPF)
        !          1105: #include <arpa/inet.h>         /* for inet_ntoa */
        !          1106: #endif
        !          1107: #include <sys/wait.h>
        !          1108: #include <pwd.h>
        !          1109: #include <grp.h>
        !          1110: #include <fcntl.h>
        !          1111: #ifndef BEOS
        !          1112: #define closesocket(s) close(s)
        !          1113: #endif
        !          1114: #ifndef O_BINARY
        !          1115: #define O_BINARY (0)
        !          1116: #endif
        !          1117: #endif /* ndef WIN32 */
        !          1118: 
        !          1119: #include <limits.h>
        !          1120: #include <time.h>              /* for ctime */
        !          1121: #ifdef WIN32
        !          1122: #define strftime(s,max,format,tm)  os_strftime(s,max,format,tm)
        !          1123: #endif
        !          1124: #include <signal.h>
        !          1125: #ifdef NETWARE
        !          1126: #undef SIGKILL
        !          1127: #undef SA_NOCLDSTOP
        !          1128: #undef SIGALRM
        !          1129: #undef SIGCHILD
        !          1130: #undef SIGCONT
        !          1131: #undef SIGHUP
        !          1132: #undef SIGPIPE
        !          1133: #undef SIGQUIT
        !          1134: #undef SIGSTOP
        !          1135: #undef SIGTSTP
        !          1136: #undef SIGTTIN
        !          1137: #undef SIGTTOU
        !          1138: #undef SIGUSR1
        !          1139: #undef SIGUSR2
        !          1140: #undef SIG_BLOCK
        !          1141: #undef SIG_SETMASK
        !          1142: #undef SIG_UNBLOCK
        !          1143: #endif
        !          1144: #if defined(TPF) && defined(NSIG)
        !          1145: #undef NSIG
        !          1146: #endif
        !          1147: #include <errno.h>
        !          1148: #if !defined(QNX) && !defined(CONVEXOS11) && !defined(NEXT) && !defined(TPF) && !defined(NETWARE) && !defined(MPE)
        !          1149: #include <memory.h>
        !          1150: #endif
        !          1151: 
        !          1152: #ifdef NEED_PROCESS_H
        !          1153: #include <process.h>
        !          1154: #endif
        !          1155: 
        !          1156: #ifdef WIN32
        !          1157: #include "../include/hsregex.h"
        !          1158: #elif defined(USE_HSREGEX)
        !          1159: #include "hsregex.h"
        !          1160: #else
        !          1161: #include <regex.h>
        !          1162: #endif
        !          1163: 
        !          1164: #ifdef HAVE_SYS_RESOURCE_H
        !          1165: #include <sys/resource.h>
        !          1166: #ifdef SUNOS4
        !          1167: int getrlimit(int, struct rlimit *);
        !          1168: int setrlimit(int, struct rlimit *);
        !          1169: #endif
        !          1170: #endif
        !          1171: #ifdef USE_MMAP_SCOREBOARD
        !          1172: #if !defined(OS2) && !defined(WIN32)
        !          1173: /* This file is not needed for OS/2 */
        !          1174: #include <sys/mman.h>
        !          1175: #endif
        !          1176: #endif
        !          1177: #if !defined(MAP_ANON) && defined(MAP_ANONYMOUS)
        !          1178: #define MAP_ANON MAP_ANONYMOUS
        !          1179: #endif
        !          1180: 
        !          1181: #if defined(USE_MMAP_FILES) && (defined(NO_MMAP) || !defined(HAVE_MMAP))
        !          1182: #undef USE_MMAP_FILES
        !          1183: #endif
        !          1184: 
        !          1185: #if defined(USE_MMAP_SCOREBOARD) && (defined(NO_MMAP) || !defined(HAVE_MMAP))
        !          1186: #undef USE_MMAP_SCOREBOARD
        !          1187: #endif
        !          1188: 
        !          1189: #if defined(USE_SHMGET_SCOREBOARD) && (defined(NO_SHMGET) || !defined(HAVE_SHMGET))
        !          1190: #undef USE_SHMGET_SCOREBOARD
        !          1191: #endif
        !          1192: 
        !          1193: #ifndef LOGNAME_MAX
        !          1194: #define LOGNAME_MAX 25
        !          1195: #endif
        !          1196: 
        !          1197: #ifdef HAVE_UNISTD_H
        !          1198: #include <unistd.h>
        !          1199: #endif
        !          1200: 
        !          1201: #ifdef ultrix
        !          1202: #define ULTRIX_BRAIN_DEATH
        !          1203: #endif
        !          1204: 
        !          1205: #ifndef S_ISLNK
        !          1206: #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
        !          1207: #endif
        !          1208: 
        !          1209: #ifndef INADDR_NONE
        !          1210: #define INADDR_NONE ((unsigned long) -1)
        !          1211: #endif
        !          1212: 
        !          1213: /*
        !          1214:  * Replace signal function with sigaction equivalent
        !          1215:  */
        !          1216: #ifndef NO_USE_SIGACTION
        !          1217: typedef void Sigfunc(int);
        !          1218: 
        !          1219: #if defined(SIG_IGN) && !defined(SIG_ERR)
        !          1220: #define SIG_ERR ((Sigfunc *)-1)
        !          1221: #endif
        !          1222: 
        !          1223: /*
        !          1224:  * For some strange reason, QNX defines signal to signal. Eliminate it.
        !          1225:  */
        !          1226: #ifdef signal
        !          1227: #undef signal
        !          1228: #endif
        !          1229: #define signal(s,f)    ap_signal(s,f)
        !          1230: Sigfunc *signal(int signo, Sigfunc * func);
        !          1231: #endif
        !          1232: 
        !          1233: #include <setjmp.h>
        !          1234: 
        !          1235: #if defined(USE_LONGJMP)
        !          1236: #define ap_longjmp(x, y)        longjmp((x), (y))
        !          1237: #define ap_setjmp(x)            setjmp(x)
        !          1238: #ifndef JMP_BUF
        !          1239: #define JMP_BUF jmp_buf
        !          1240: #endif
        !          1241: #else
        !          1242: #define ap_longjmp(x, y)        siglongjmp((x), (y))
        !          1243: #define ap_setjmp(x)            sigsetjmp((x), 1)
        !          1244: #ifndef JMP_BUF
        !          1245: #define JMP_BUF sigjmp_buf
        !          1246: #endif
        !          1247: #endif
        !          1248: 
        !          1249: /* Majority of os's want to verify FD_SETSIZE */
        !          1250: #if !defined(WIN32) && !defined(TPF) && !defined(NETWARE)
        !          1251: #define CHECK_FD_SETSIZE
        !          1252: #endif
        !          1253: 
        !          1254: #ifdef USE_TPF_SELECT
        !          1255: #define ap_select(_a, _b, _c, _d, _e)  \
        !          1256:        tpf_select(_a, _b, _c, _d, _e)
        !          1257: #elif defined(SELECT_NEEDS_CAST)
        !          1258: #define ap_select(_a, _b, _c, _d, _e)   \
        !          1259:     select((_a), (int *)(_b), (int *)(_c), (int *)(_d), (_e))
        !          1260: #else
        !          1261: #define ap_select(_a, _b, _c, _d, _e)   \
        !          1262:        select(_a, _b, _c, _d, _e)
        !          1263: #endif
        !          1264: 
        !          1265: #ifdef USE_TPF_ACCEPT
        !          1266: #define ap_accept(_fd, _sa, _ln)       tpf_accept(_fd, _sa, _ln)
        !          1267: #else
        !          1268: #define ap_accept(_fd, _sa, _ln)       accept(_fd, _sa, _ln)
        !          1269: #endif
        !          1270: 
        !          1271: #ifdef NEED_SIGNAL_INTERRUPT
        !          1272: #define ap_check_signals()     tpf_process_signals()
        !          1273: #else
        !          1274: #define ap_check_signals()
        !          1275: #endif
        !          1276: 
        !          1277: #ifdef ULTRIX_BRAIN_DEATH
        !          1278: #define ap_fdopen(d,m) fdopen((d), (char *)(m))
        !          1279: #else
        !          1280: #define ap_fdopen(d,m) fdopen((d), (m))
        !          1281: #endif
        !          1282: 
        !          1283: #ifndef ap_inet_addr
        !          1284: #define ap_inet_addr inet_addr
        !          1285: #endif
        !          1286: 
        !          1287: #ifdef NO_OTHER_CHILD
        !          1288: #define NO_RELIABLE_PIPED_LOGS
        !          1289: #endif
        !          1290: 
        !          1291: /* When the underlying OS doesn't support exec() of scripts which start
        !          1292:  * with a HASHBANG (#!) followed by interpreter name and args, define this.
        !          1293:  */
        !          1294: #ifdef NEED_HASHBANG_EMUL
        !          1295: extern int ap_execle(const char *filename, const char *arg,...);
        !          1296: extern int ap_execve(const char *filename, char * const argv[],
        !          1297:                      char * const envp[]);
        !          1298: /* ap_execle() is a wrapper function around ap_execve(). */
        !          1299: #define execle  ap_execle
        !          1300: #define execve(path,argv,envp)  ap_execve(path,argv,envp)
        !          1301: #endif
        !          1302: 
        !          1303: /* Finding offsets of elements within structures.
        !          1304:  * Taken from the X code... they've sweated portability of this stuff
        !          1305:  * so we don't have to.  Sigh...
        !          1306:  */
        !          1307: 
        !          1308: #if defined(CRAY) || (defined(__arm) && !defined(LINUX))
        !          1309: #ifdef __STDC__
        !          1310: #define XtOffset(p_type,field) _Offsetof(p_type,field)
        !          1311: #else
        !          1312: #ifdef CRAY2
        !          1313: #define XtOffset(p_type,field) \
        !          1314:        (sizeof(int)*((unsigned int)&(((p_type)NULL)->field)))
        !          1315: 
        !          1316: #else /* !CRAY2 */
        !          1317: 
        !          1318: #define XtOffset(p_type,field) ((unsigned int)&(((p_type)NULL)->field))
        !          1319: 
        !          1320: #endif /* !CRAY2 */
        !          1321: #endif /* __STDC__ */
        !          1322: #else /* ! (CRAY || __arm) */
        !          1323: 
        !          1324: #define XtOffset(p_type,field) \
        !          1325:        ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL)))
        !          1326: 
        !          1327: #endif /* !CRAY */
        !          1328: 
        !          1329: #ifdef offsetof
        !          1330: #define XtOffsetOf(s_type,field) offsetof(s_type,field)
        !          1331: #else
        !          1332: #define XtOffsetOf(s_type,field) XtOffset(s_type*,field)
        !          1333: #endif
        !          1334: 
        !          1335: /*
        !          1336:  * NET_SIZE_T exists because of shortsightedness on the POSIX committee.  BSD
        !          1337:  * systems used "int *" as the parameter to accept(), getsockname(),
        !          1338:  * getpeername() et al.  Consequently many unixes took an int * for that
        !          1339:  * parameter.  The POSIX committee decided that "int" was just too generic and
        !          1340:  * had to be replaced with size_t almost everywhere.  There's no problem with
        !          1341:  * that when you're passing by value.  But when you're passing by reference
        !          1342:  * this creates a gross source incompatibility with existing programs.  On
        !          1343:  * 32-bit architectures it creates only a warning.  On 64-bit architectures it
        !          1344:  * creates broken code -- because "int *" is a pointer to a 64-bit quantity and
        !          1345:  * "size_t *" is frequently a pointer to a 32-bit quantity.
        !          1346:  *
        !          1347:  * Some Unixes adopted "size_t *" for the sake of POSIX compliance.  Others
        !          1348:  * ignored it because it was such a broken interface.  Chaos ensued.  POSIX
        !          1349:  * finally woke up and decided that it was wrong and created a new type
        !          1350:  * socklen_t.  The only useful value for socklen_t is int, and that's how
        !          1351:  * everyone who has a clue implements it.  It is almost always the case that
        !          1352:  * NET_SIZE_T should be defined to be an int, unless the system being compiled
        !          1353:  * for was created in the window of POSIX madness.
        !          1354:  */
        !          1355: #ifndef NET_SIZE_T
        !          1356: #define NET_SIZE_T int
        !          1357: #endif
        !          1358: 
        !          1359: /* Linux defines __WCOREDUMP, but doesn't define WCOREDUMP unless __USE_BSD
        !          1360:  * is in use... we'd prefer to just use WCOREDUMP everywhere.
        !          1361:  */
        !          1362: #if defined(__WCOREDUMP) && !defined(WCOREDUMP)
        !          1363: #define WCOREDUMP __WCOREDUMP
        !          1364: #endif
        !          1365: 
        !          1366: #ifdef SUNOS_LIB_PROTOTYPES
        !          1367: /* Prototypes needed to get a clean compile with gcc -Wall.
        !          1368:  * Believe it or not, these do have to be declared, at least on SunOS,
        !          1369:  * because they aren't mentioned in the relevant system headers.
        !          1370:  * Sun Quality Software.  Gotta love it.  This section is not 
        !          1371:  * currently (13Nov97) used.
        !          1372:  */
        !          1373: 
        !          1374: int getopt(int, char **, char *);
        !          1375: 
        !          1376: int strcasecmp(const char *, const char *);
        !          1377: int strncasecmp(const char *, const char *, int);
        !          1378: int toupper(int);
        !          1379: int tolower(int);
        !          1380: 
        !          1381: int printf(char *,...);
        !          1382: int fprintf(FILE *, char *,...);
        !          1383: int fputs(char *, FILE *);
        !          1384: int fread(char *, int, int, FILE *);
        !          1385: int fwrite(char *, int, int, FILE *);
        !          1386: int fgetc(FILE *);
        !          1387: char *fgets(char *s, int, FILE*);
        !          1388: int fflush(FILE *);
        !          1389: int fclose(FILE *);
        !          1390: int ungetc(int, FILE *);
        !          1391: int _filbuf(FILE *);   /* !!! */
        !          1392: int _flsbuf(unsigned char, FILE *);    /* !!! */
        !          1393: int sscanf(char *, char *,...);
        !          1394: void setbuf(FILE *, char *);
        !          1395: void perror(char *);
        !          1396: 
        !          1397: time_t time(time_t *);
        !          1398: int strftime(char *, int, const char *, struct tm *);
        !          1399: 
        !          1400: int initgroups(char *, int);
        !          1401: int wait3(int *, int, void *); /* Close enough for us... */
        !          1402: int lstat(const char *, struct stat *);
        !          1403: int stat(const char *, struct stat *);
        !          1404: int flock(int, int);
        !          1405: #ifndef NO_KILLPG
        !          1406: int killpg(int, int);
        !          1407: #endif
        !          1408: int socket(int, int, int);
        !          1409: int setsockopt(int, int, int, const char *, int);
        !          1410: int listen(int, int);
        !          1411: int bind(int, struct sockaddr *, int);
        !          1412: int connect(int, struct sockaddr *, int);
        !          1413: int accept(int, struct sockaddr *, int *);
        !          1414: int shutdown(int, int);
        !          1415: 
        !          1416: int getsockname(int s, struct sockaddr *name, int *namelen);
        !          1417: int getpeername(int s, struct sockaddr *name, int *namelen);
        !          1418: int gethostname(char *name, int namelen);
        !          1419: void syslog(int, char *,...);
        !          1420: char *mktemp(char *);
        !          1421: 
        !          1422: int vfprintf(FILE *, const char *, va_list);
        !          1423: 
        !          1424: #endif /* SUNOS_LIB_PROTOTYPES */
        !          1425: 
        !          1426: /* The assumption is that when the functions are missing,
        !          1427:  * then there's no matching prototype available either.
        !          1428:  * Declare what is needed exactly as the replacement routines implement it.
        !          1429:  */
        !          1430: #ifdef NEED_STRDUP
        !          1431: extern char *strdup (const char *str);
        !          1432: #endif
        !          1433: #ifdef NEED_STRCASECMP
        !          1434: extern int strcasecmp (const char *a, const char *b);
        !          1435: #endif
        !          1436: #ifdef NEED_STRNCASECMP
        !          1437: extern int strncasecmp (const char *a, const char *b, int n);
        !          1438: #endif
        !          1439: #ifdef NEED_INITGROUPS
        !          1440: extern int initgroups(const char *name, gid_t basegid);
        !          1441: #endif
        !          1442: #ifdef NEED_WAITPID
        !          1443: extern int waitpid(pid_t pid, int *statusp, int options);
        !          1444: #endif
        !          1445: #ifdef NEED_STRERROR
        !          1446: extern char *strerror (int err);
        !          1447: #endif
        !          1448: #ifdef NEED_DIFFTIME
        !          1449: extern double difftime(time_t time1, time_t time0);
        !          1450: #endif
        !          1451: 
        !          1452: #ifndef ap_wait_t
        !          1453: #define ap_wait_t int
        !          1454: #endif
        !          1455: 
        !          1456: #ifdef __cplusplus
        !          1457: }
        !          1458: #endif
        !          1459: 
        !          1460: #endif /* !AP_CONFIG_H */

E-mail: