Annotation of win32/apache22/srclib/apr/include/apr_errno.h, revision 1.1

1.1     ! moko        1: /* Licensed to the Apache Software Foundation (ASF) under one or more
        !             2:  * contributor license agreements.  See the NOTICE file distributed with
        !             3:  * this work for additional information regarding copyright ownership.
        !             4:  * The ASF licenses this file to You under the Apache License, Version 2.0
        !             5:  * (the "License"); you may not use this file except in compliance with
        !             6:  * the License.  You may obtain a copy of the License at
        !             7:  *
        !             8:  *     http://www.apache.org/licenses/LICENSE-2.0
        !             9:  *
        !            10:  * Unless required by applicable law or agreed to in writing, software
        !            11:  * distributed under the License is distributed on an "AS IS" BASIS,
        !            12:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        !            13:  * See the License for the specific language governing permissions and
        !            14:  * limitations under the License.
        !            15:  */
        !            16: 
        !            17: #ifndef APR_ERRNO_H
        !            18: #define APR_ERRNO_H
        !            19: 
        !            20: /**
        !            21:  * @file apr_errno.h
        !            22:  * @brief APR Error Codes
        !            23:  */
        !            24: 
        !            25: #include "apr.h"
        !            26: 
        !            27: #if APR_HAVE_ERRNO_H
        !            28: #include <errno.h>
        !            29: #endif
        !            30: 
        !            31: #ifdef __cplusplus
        !            32: extern "C" {
        !            33: #endif /* __cplusplus */
        !            34: 
        !            35: /**
        !            36:  * @defgroup apr_errno Error Codes
        !            37:  * @ingroup APR
        !            38:  * @{
        !            39:  */
        !            40: 
        !            41: /**
        !            42:  * Type for specifying an error or status code.
        !            43:  */
        !            44: typedef int apr_status_t;
        !            45: 
        !            46: /**
        !            47:  * Return a human readable string describing the specified error.
        !            48:  * @param statcode The error code the get a string for.
        !            49:  * @param buf A buffer to hold the error string.
        !            50:  * @param bufsize Size of the buffer to hold the string.
        !            51:  */
        !            52: APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf,
        !            53:                                  apr_size_t bufsize);
        !            54: 
        !            55: #if defined(DOXYGEN)
        !            56: /**
        !            57:  * @def APR_FROM_OS_ERROR(os_err_type syserr)
        !            58:  * Fold a platform specific error into an apr_status_t code.
        !            59:  * @return apr_status_t
        !            60:  * @param e The platform os error code.
        !            61:  * @warning  macro implementation; the syserr argument may be evaluated
        !            62:  *      multiple times.
        !            63:  */
        !            64: #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
        !            65: 
        !            66: /**
        !            67:  * @def APR_TO_OS_ERROR(apr_status_t statcode)
        !            68:  * @return os_err_type
        !            69:  * Fold an apr_status_t code back to the native platform defined error.
        !            70:  * @param e The apr_status_t folded platform os error code.
        !            71:  * @warning  macro implementation; the statcode argument may be evaluated
        !            72:  *      multiple times.  If the statcode was not created by apr_get_os_error
        !            73:  *      or APR_FROM_OS_ERROR, the results are undefined.
        !            74:  */
        !            75: #define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
        !            76: 
        !            77: /** @def apr_get_os_error()
        !            78:  * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms
        !            79:  * @remark This retrieves errno, or calls a GetLastError() style function, and
        !            80:  *      folds it with APR_FROM_OS_ERROR.  Some platforms (such as OS2) have no
        !            81:  *      such mechanism, so this call may be unsupported.  Do NOT use this
        !            82:  *      call for socket errors from socket, send, recv etc!
        !            83:  */
        !            84: 
        !            85: /** @def apr_set_os_error(e)
        !            86:  * Reset the last platform error, unfolded from an apr_status_t, on some platforms
        !            87:  * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR()
        !            88:  * @warning This is a macro implementation; the statcode argument may be evaluated
        !            89:  *      multiple times.  If the statcode was not created by apr_get_os_error
        !            90:  *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
        !            91:  *      errno, or calls a SetLastError() style function, unfolding statcode
        !            92:  *      with APR_TO_OS_ERROR.  Some platforms (such as OS2) have no such
        !            93:  *      mechanism, so this call may be unsupported.
        !            94:  */
        !            95: 
        !            96: /** @def apr_get_netos_error()
        !            97:  * Return the last socket error, folded into apr_status_t, on all platforms
        !            98:  * @remark This retrieves errno or calls a GetLastSocketError() style function,
        !            99:  *      and folds it with APR_FROM_OS_ERROR.
        !           100:  */
        !           101: 
        !           102: /** @def apr_set_netos_error(e)
        !           103:  * Reset the last socket error, unfolded from an apr_status_t
        !           104:  * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR()
        !           105:  * @warning This is a macro implementation; the statcode argument may be evaluated
        !           106:  *      multiple times.  If the statcode was not created by apr_get_os_error
        !           107:  *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
        !           108:  *      errno, or calls a WSASetLastError() style function, unfolding
        !           109:  *      socketcode with APR_TO_OS_ERROR.
        !           110:  */
        !           111: 
        !           112: #endif /* defined(DOXYGEN) */
        !           113: 
        !           114: /**
        !           115:  * APR_OS_START_ERROR is where the APR specific error values start.
        !           116:  */
        !           117: #define APR_OS_START_ERROR     20000
        !           118: /**
        !           119:  * APR_OS_ERRSPACE_SIZE is the maximum number of errors you can fit
        !           120:  *    into one of the error/status ranges below -- except for
        !           121:  *    APR_OS_START_USERERR, which see.
        !           122:  */
        !           123: #define APR_OS_ERRSPACE_SIZE 50000
        !           124: /**
        !           125:  * APR_UTIL_ERRSPACE_SIZE is the size of the space that is reserved for
        !           126:  * use within apr-util. This space is reserved above that used by APR
        !           127:  * internally.
        !           128:  * @note This number MUST be smaller than APR_OS_ERRSPACE_SIZE by a
        !           129:  *       large enough amount that APR has sufficient room for it's
        !           130:  *       codes.
        !           131:  */
        !           132: #define APR_UTIL_ERRSPACE_SIZE 20000
        !           133: /**
        !           134:  * APR_OS_START_STATUS is where the APR specific status codes start.
        !           135:  */
        !           136: #define APR_OS_START_STATUS    (APR_OS_START_ERROR + APR_OS_ERRSPACE_SIZE)
        !           137: /**
        !           138:  * APR_UTIL_START_STATUS is where APR-Util starts defining it's
        !           139:  * status codes.
        !           140:  */
        !           141: #define APR_UTIL_START_STATUS   (APR_OS_START_STATUS + \
        !           142:                            (APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE))
        !           143: /**
        !           144:  * APR_OS_START_USERERR are reserved for applications that use APR that
        !           145:  *     layer their own error codes along with APR's.  Note that the
        !           146:  *     error immediately following this one is set ten times farther
        !           147:  *     away than usual, so that users of apr have a lot of room in
        !           148:  *     which to declare custom error codes.
        !           149:  *
        !           150:  * In general applications should try and create unique error codes. To try
        !           151:  * and assist in finding suitable ranges of numbers to use, the following
        !           152:  * ranges are known to be used by the listed applications. If your
        !           153:  * application defines error codes please advise the range of numbers it
        !           154:  * uses to dev@apr.apache.org for inclusion in this list.
        !           155:  *
        !           156:  * Ranges shown are in relation to APR_OS_START_USERERR
        !           157:  *
        !           158:  * Subversion - Defined ranges, of less than 100, at intervals of 5000
        !           159:  *              starting at an offset of 5000, e.g.
        !           160:  *               +5000 to 5100,  +10000 to 10100
        !           161:  *
        !           162:  * Apache HTTPD - +2000 to 2999
        !           163:  */
        !           164: #define APR_OS_START_USERERR    (APR_OS_START_STATUS + APR_OS_ERRSPACE_SIZE)
        !           165: /**
        !           166:  * APR_OS_START_USEERR is obsolete, defined for compatibility only.
        !           167:  * Use APR_OS_START_USERERR instead.
        !           168:  */
        !           169: #define APR_OS_START_USEERR     APR_OS_START_USERERR
        !           170: /**
        !           171:  * APR_OS_START_CANONERR is where APR versions of errno values are defined
        !           172:  *     on systems which don't have the corresponding errno.
        !           173:  */
        !           174: #define APR_OS_START_CANONERR  (APR_OS_START_USERERR \
        !           175:                                  + (APR_OS_ERRSPACE_SIZE * 10))
        !           176: /**
        !           177:  * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into
        !           178:  *     apr_status_t values.
        !           179:  */
        !           180: #define APR_OS_START_EAIERR    (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE)
        !           181: /**
        !           182:  * APR_OS_START_SYSERR folds platform-specific system error values into
        !           183:  *     apr_status_t values.
        !           184:  */
        !           185: #define APR_OS_START_SYSERR    (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE)
        !           186: 
        !           187: /**
        !           188:  * @defgroup APR_ERROR_map APR Error Space
        !           189:  * <PRE>
        !           190:  * The following attempts to show the relation of the various constants
        !           191:  * used for mapping APR Status codes.
        !           192:  *
        !           193:  *       0
        !           194:  *
        !           195:  *  20,000     APR_OS_START_ERROR
        !           196:  *
        !           197:  *         + APR_OS_ERRSPACE_SIZE (50,000)
        !           198:  *
        !           199:  *  70,000      APR_OS_START_STATUS
        !           200:  *
        !           201:  *         + APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE (30,000)
        !           202:  *
        !           203:  * 100,000      APR_UTIL_START_STATUS
        !           204:  *
        !           205:  *         + APR_UTIL_ERRSPACE_SIZE (20,000)
        !           206:  *
        !           207:  * 120,000      APR_OS_START_USERERR
        !           208:  *
        !           209:  *         + 10 x APR_OS_ERRSPACE_SIZE (50,000 * 10)
        !           210:  *
        !           211:  * 620,000      APR_OS_START_CANONERR
        !           212:  *
        !           213:  *         + APR_OS_ERRSPACE_SIZE (50,000)
        !           214:  *
        !           215:  * 670,000      APR_OS_START_EAIERR
        !           216:  *
        !           217:  *         + APR_OS_ERRSPACE_SIZE (50,000)
        !           218:  *
        !           219:  * 720,000      APR_OS_START_SYSERR
        !           220:  *
        !           221:  * </PRE>
        !           222:  */
        !           223: 
        !           224: /** no error. */
        !           225: #define APR_SUCCESS 0
        !           226: 
        !           227: /**
        !           228:  * @defgroup APR_Error APR Error Values
        !           229:  * <PRE>
        !           230:  * <b>APR ERROR VALUES</b>
        !           231:  * APR_ENOSTAT      APR was unable to perform a stat on the file
        !           232:  * APR_ENOPOOL      APR was not provided a pool with which to allocate memory
        !           233:  * APR_EBADDATE     APR was given an invalid date
        !           234:  * APR_EINVALSOCK   APR was given an invalid socket
        !           235:  * APR_ENOPROC      APR was not given a process structure
        !           236:  * APR_ENOTIME      APR was not given a time structure
        !           237:  * APR_ENODIR       APR was not given a directory structure
        !           238:  * APR_ENOLOCK      APR was not given a lock structure
        !           239:  * APR_ENOPOLL      APR was not given a poll structure
        !           240:  * APR_ENOSOCKET    APR was not given a socket
        !           241:  * APR_ENOTHREAD    APR was not given a thread structure
        !           242:  * APR_ENOTHDKEY    APR was not given a thread key structure
        !           243:  * APR_ENOSHMAVAIL  There is no more shared memory available
        !           244:  * APR_EDSOOPEN     APR was unable to open the dso object.  For more
        !           245:  *                  information call apr_dso_error().
        !           246:  * APR_EGENERAL     General failure (specific information not available)
        !           247:  * APR_EBADIP       The specified IP address is invalid
        !           248:  * APR_EBADMASK     The specified netmask is invalid
        !           249:  * APR_ESYMNOTFOUND Could not find the requested symbol
        !           250:  * APR_ENOTENOUGHENTROPY Not enough entropy to continue
        !           251:  * </PRE>
        !           252:  *
        !           253:  * <PRE>
        !           254:  * <b>APR STATUS VALUES</b>
        !           255:  * APR_INCHILD        Program is currently executing in the child
        !           256:  * APR_INPARENT       Program is currently executing in the parent
        !           257:  * APR_DETACH         The thread is detached
        !           258:  * APR_NOTDETACH      The thread is not detached
        !           259:  * APR_CHILD_DONE     The child has finished executing
        !           260:  * APR_CHILD_NOTDONE  The child has not finished executing
        !           261:  * APR_TIMEUP         The operation did not finish before the timeout
        !           262:  * APR_INCOMPLETE     The operation was incomplete although some processing
        !           263:  *                    was performed and the results are partially valid
        !           264:  * APR_BADCH          Getopt found an option not in the option string
        !           265:  * APR_BADARG         Getopt found an option that is missing an argument
        !           266:  *                    and an argument was specified in the option string
        !           267:  * APR_EOF            APR has encountered the end of the file
        !           268:  * APR_NOTFOUND       APR was unable to find the socket in the poll structure
        !           269:  * APR_ANONYMOUS      APR is using anonymous shared memory
        !           270:  * APR_FILEBASED      APR is using a file name as the key to the shared memory
        !           271:  * APR_KEYBASED       APR is using a shared key as the key to the shared memory
        !           272:  * APR_EINIT          Ininitalizer value.  If no option has been found, but
        !           273:  *                    the status variable requires a value, this should be used
        !           274:  * APR_ENOTIMPL       The APR function has not been implemented on this
        !           275:  *                    platform, either because nobody has gotten to it yet,
        !           276:  *                    or the function is impossible on this platform.
        !           277:  * APR_EMISMATCH      Two passwords do not match.
        !           278:  * APR_EABSOLUTE      The given path was absolute.
        !           279:  * APR_ERELATIVE      The given path was relative.
        !           280:  * APR_EINCOMPLETE    The given path was neither relative nor absolute.
        !           281:  * APR_EABOVEROOT     The given path was above the root path.
        !           282:  * APR_EBUSY          The given lock was busy.
        !           283:  * APR_EPROC_UNKNOWN  The given process wasn't recognized by APR
        !           284:  * </PRE>
        !           285:  * @{
        !           286:  */
        !           287: /** @see APR_STATUS_IS_ENOSTAT */
        !           288: #define APR_ENOSTAT        (APR_OS_START_ERROR + 1)
        !           289: /** @see APR_STATUS_IS_ENOPOOL */
        !           290: #define APR_ENOPOOL        (APR_OS_START_ERROR + 2)
        !           291: /* empty slot: +3 */
        !           292: /** @see APR_STATUS_IS_EBADDATE */
        !           293: #define APR_EBADDATE       (APR_OS_START_ERROR + 4)
        !           294: /** @see APR_STATUS_IS_EINVALSOCK */
        !           295: #define APR_EINVALSOCK     (APR_OS_START_ERROR + 5)
        !           296: /** @see APR_STATUS_IS_ENOPROC */
        !           297: #define APR_ENOPROC        (APR_OS_START_ERROR + 6)
        !           298: /** @see APR_STATUS_IS_ENOTIME */
        !           299: #define APR_ENOTIME        (APR_OS_START_ERROR + 7)
        !           300: /** @see APR_STATUS_IS_ENODIR */
        !           301: #define APR_ENODIR         (APR_OS_START_ERROR + 8)
        !           302: /** @see APR_STATUS_IS_ENOLOCK */
        !           303: #define APR_ENOLOCK        (APR_OS_START_ERROR + 9)
        !           304: /** @see APR_STATUS_IS_ENOPOLL */
        !           305: #define APR_ENOPOLL        (APR_OS_START_ERROR + 10)
        !           306: /** @see APR_STATUS_IS_ENOSOCKET */
        !           307: #define APR_ENOSOCKET      (APR_OS_START_ERROR + 11)
        !           308: /** @see APR_STATUS_IS_ENOTHREAD */
        !           309: #define APR_ENOTHREAD      (APR_OS_START_ERROR + 12)
        !           310: /** @see APR_STATUS_IS_ENOTHDKEY */
        !           311: #define APR_ENOTHDKEY      (APR_OS_START_ERROR + 13)
        !           312: /** @see APR_STATUS_IS_EGENERAL */
        !           313: #define APR_EGENERAL       (APR_OS_START_ERROR + 14)
        !           314: /** @see APR_STATUS_IS_ENOSHMAVAIL */
        !           315: #define APR_ENOSHMAVAIL    (APR_OS_START_ERROR + 15)
        !           316: /** @see APR_STATUS_IS_EBADIP */
        !           317: #define APR_EBADIP         (APR_OS_START_ERROR + 16)
        !           318: /** @see APR_STATUS_IS_EBADMASK */
        !           319: #define APR_EBADMASK       (APR_OS_START_ERROR + 17)
        !           320: /* empty slot: +18 */
        !           321: /** @see APR_STATUS_IS_EDSOPEN */
        !           322: #define APR_EDSOOPEN       (APR_OS_START_ERROR + 19)
        !           323: /** @see APR_STATUS_IS_EABSOLUTE */
        !           324: #define APR_EABSOLUTE      (APR_OS_START_ERROR + 20)
        !           325: /** @see APR_STATUS_IS_ERELATIVE */
        !           326: #define APR_ERELATIVE      (APR_OS_START_ERROR + 21)
        !           327: /** @see APR_STATUS_IS_EINCOMPLETE */
        !           328: #define APR_EINCOMPLETE    (APR_OS_START_ERROR + 22)
        !           329: /** @see APR_STATUS_IS_EABOVEROOT */
        !           330: #define APR_EABOVEROOT     (APR_OS_START_ERROR + 23)
        !           331: /** @see APR_STATUS_IS_EBADPATH */
        !           332: #define APR_EBADPATH       (APR_OS_START_ERROR + 24)
        !           333: /** @see APR_STATUS_IS_EPATHWILD */
        !           334: #define APR_EPATHWILD      (APR_OS_START_ERROR + 25)
        !           335: /** @see APR_STATUS_IS_ESYMNOTFOUND */
        !           336: #define APR_ESYMNOTFOUND   (APR_OS_START_ERROR + 26)
        !           337: /** @see APR_STATUS_IS_EPROC_UNKNOWN */
        !           338: #define APR_EPROC_UNKNOWN  (APR_OS_START_ERROR + 27)
        !           339: /** @see APR_STATUS_IS_ENOTENOUGHENTROPY */
        !           340: #define APR_ENOTENOUGHENTROPY (APR_OS_START_ERROR + 28)
        !           341: /** @} */
        !           342: 
        !           343: /**
        !           344:  * @defgroup APR_STATUS_IS Status Value Tests
        !           345:  * @warning For any particular error condition, more than one of these tests
        !           346:  *      may match. This is because platform-specific error codes may not
        !           347:  *      always match the semantics of the POSIX codes these tests (and the
        !           348:  *      corresponding APR error codes) are named after. A notable example
        !           349:  *      are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on
        !           350:  *      Win32 platforms. The programmer should always be aware of this and
        !           351:  *      adjust the order of the tests accordingly.
        !           352:  * @{
        !           353:  */
        !           354: /**
        !           355:  * APR was unable to perform a stat on the file
        !           356:  * @warning always use this test, as platform-specific variances may meet this
        !           357:  * more than one error code
        !           358:  */
        !           359: #define APR_STATUS_IS_ENOSTAT(s)        ((s) == APR_ENOSTAT)
        !           360: /**
        !           361:  * APR was not provided a pool with which to allocate memory
        !           362:  * @warning always use this test, as platform-specific variances may meet this
        !           363:  * more than one error code
        !           364:  */
        !           365: #define APR_STATUS_IS_ENOPOOL(s)        ((s) == APR_ENOPOOL)
        !           366: /** APR was given an invalid date  */
        !           367: #define APR_STATUS_IS_EBADDATE(s)       ((s) == APR_EBADDATE)
        !           368: /** APR was given an invalid socket */
        !           369: #define APR_STATUS_IS_EINVALSOCK(s)     ((s) == APR_EINVALSOCK)
        !           370: /** APR was not given a process structure */
        !           371: #define APR_STATUS_IS_ENOPROC(s)        ((s) == APR_ENOPROC)
        !           372: /** APR was not given a time structure */
        !           373: #define APR_STATUS_IS_ENOTIME(s)        ((s) == APR_ENOTIME)
        !           374: /** APR was not given a directory structure */
        !           375: #define APR_STATUS_IS_ENODIR(s)         ((s) == APR_ENODIR)
        !           376: /** APR was not given a lock structure */
        !           377: #define APR_STATUS_IS_ENOLOCK(s)        ((s) == APR_ENOLOCK)
        !           378: /** APR was not given a poll structure */
        !           379: #define APR_STATUS_IS_ENOPOLL(s)        ((s) == APR_ENOPOLL)
        !           380: /** APR was not given a socket */
        !           381: #define APR_STATUS_IS_ENOSOCKET(s)      ((s) == APR_ENOSOCKET)
        !           382: /** APR was not given a thread structure */
        !           383: #define APR_STATUS_IS_ENOTHREAD(s)      ((s) == APR_ENOTHREAD)
        !           384: /** APR was not given a thread key structure */
        !           385: #define APR_STATUS_IS_ENOTHDKEY(s)      ((s) == APR_ENOTHDKEY)
        !           386: /** Generic Error which can not be put into another spot */
        !           387: #define APR_STATUS_IS_EGENERAL(s)       ((s) == APR_EGENERAL)
        !           388: /** There is no more shared memory available */
        !           389: #define APR_STATUS_IS_ENOSHMAVAIL(s)    ((s) == APR_ENOSHMAVAIL)
        !           390: /** The specified IP address is invalid */
        !           391: #define APR_STATUS_IS_EBADIP(s)         ((s) == APR_EBADIP)
        !           392: /** The specified netmask is invalid */
        !           393: #define APR_STATUS_IS_EBADMASK(s)       ((s) == APR_EBADMASK)
        !           394: /* empty slot: +18 */
        !           395: /**
        !           396:  * APR was unable to open the dso object.
        !           397:  * For more information call apr_dso_error().
        !           398:  */
        !           399: #if defined(WIN32)
        !           400: #define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN \
        !           401:                        || APR_TO_OS_ERROR(s) == ERROR_MOD_NOT_FOUND)
        !           402: #else
        !           403: #define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN)
        !           404: #endif
        !           405: /** The given path was absolute. */
        !           406: #define APR_STATUS_IS_EABSOLUTE(s)      ((s) == APR_EABSOLUTE)
        !           407: /** The given path was relative. */
        !           408: #define APR_STATUS_IS_ERELATIVE(s)      ((s) == APR_ERELATIVE)
        !           409: /** The given path was neither relative nor absolute. */
        !           410: #define APR_STATUS_IS_EINCOMPLETE(s)    ((s) == APR_EINCOMPLETE)
        !           411: /** The given path was above the root path. */
        !           412: #define APR_STATUS_IS_EABOVEROOT(s)     ((s) == APR_EABOVEROOT)
        !           413: /** The given path was bad. */
        !           414: #define APR_STATUS_IS_EBADPATH(s)       ((s) == APR_EBADPATH)
        !           415: /** The given path contained wildcards. */
        !           416: #define APR_STATUS_IS_EPATHWILD(s)      ((s) == APR_EPATHWILD)
        !           417: /** Could not find the requested symbol.
        !           418:  * For more information call apr_dso_error().
        !           419:  */
        !           420: #if defined(WIN32)
        !           421: #define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND \
        !           422:                        || APR_TO_OS_ERROR(s) == ERROR_PROC_NOT_FOUND)
        !           423: #else
        !           424: #define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND)
        !           425: #endif
        !           426: /** The given process was not recognized by APR. */
        !           427: #define APR_STATUS_IS_EPROC_UNKNOWN(s)  ((s) == APR_EPROC_UNKNOWN)
        !           428: /** APR could not gather enough entropy to continue. */
        !           429: #define APR_STATUS_IS_ENOTENOUGHENTROPY(s) ((s) == APR_ENOTENOUGHENTROPY)
        !           430: 
        !           431: /** @} */
        !           432: 
        !           433: /**
        !           434:  * @addtogroup APR_Error
        !           435:  * @{
        !           436:  */
        !           437: /** @see APR_STATUS_IS_INCHILD */
        !           438: #define APR_INCHILD        (APR_OS_START_STATUS + 1)
        !           439: /** @see APR_STATUS_IS_INPARENT */
        !           440: #define APR_INPARENT       (APR_OS_START_STATUS + 2)
        !           441: /** @see APR_STATUS_IS_DETACH */
        !           442: #define APR_DETACH         (APR_OS_START_STATUS + 3)
        !           443: /** @see APR_STATUS_IS_NOTDETACH */
        !           444: #define APR_NOTDETACH      (APR_OS_START_STATUS + 4)
        !           445: /** @see APR_STATUS_IS_CHILD_DONE */
        !           446: #define APR_CHILD_DONE     (APR_OS_START_STATUS + 5)
        !           447: /** @see APR_STATUS_IS_CHILD_NOTDONE */
        !           448: #define APR_CHILD_NOTDONE  (APR_OS_START_STATUS + 6)
        !           449: /** @see APR_STATUS_IS_TIMEUP */
        !           450: #define APR_TIMEUP         (APR_OS_START_STATUS + 7)
        !           451: /** @see APR_STATUS_IS_INCOMPLETE */
        !           452: #define APR_INCOMPLETE     (APR_OS_START_STATUS + 8)
        !           453: /* empty slot: +9 */
        !           454: /* empty slot: +10 */
        !           455: /* empty slot: +11 */
        !           456: /** @see APR_STATUS_IS_BADCH */
        !           457: #define APR_BADCH          (APR_OS_START_STATUS + 12)
        !           458: /** @see APR_STATUS_IS_BADARG */
        !           459: #define APR_BADARG         (APR_OS_START_STATUS + 13)
        !           460: /** @see APR_STATUS_IS_EOF */
        !           461: #define APR_EOF            (APR_OS_START_STATUS + 14)
        !           462: /** @see APR_STATUS_IS_NOTFOUND */
        !           463: #define APR_NOTFOUND       (APR_OS_START_STATUS + 15)
        !           464: /* empty slot: +16 */
        !           465: /* empty slot: +17 */
        !           466: /* empty slot: +18 */
        !           467: /** @see APR_STATUS_IS_ANONYMOUS */
        !           468: #define APR_ANONYMOUS      (APR_OS_START_STATUS + 19)
        !           469: /** @see APR_STATUS_IS_FILEBASED */
        !           470: #define APR_FILEBASED      (APR_OS_START_STATUS + 20)
        !           471: /** @see APR_STATUS_IS_KEYBASED */
        !           472: #define APR_KEYBASED       (APR_OS_START_STATUS + 21)
        !           473: /** @see APR_STATUS_IS_EINIT */
        !           474: #define APR_EINIT          (APR_OS_START_STATUS + 22)
        !           475: /** @see APR_STATUS_IS_ENOTIMPL */
        !           476: #define APR_ENOTIMPL       (APR_OS_START_STATUS + 23)
        !           477: /** @see APR_STATUS_IS_EMISMATCH */
        !           478: #define APR_EMISMATCH      (APR_OS_START_STATUS + 24)
        !           479: /** @see APR_STATUS_IS_EBUSY */
        !           480: #define APR_EBUSY          (APR_OS_START_STATUS + 25)
        !           481: /** @} */
        !           482: 
        !           483: /**
        !           484:  * @addtogroup APR_STATUS_IS
        !           485:  * @{
        !           486:  */
        !           487: /**
        !           488:  * Program is currently executing in the child
        !           489:  * @warning
        !           490:  * always use this test, as platform-specific variances may meet this
        !           491:  * more than one error code */
        !           492: #define APR_STATUS_IS_INCHILD(s)        ((s) == APR_INCHILD)
        !           493: /**
        !           494:  * Program is currently executing in the parent
        !           495:  * @warning
        !           496:  * always use this test, as platform-specific variances may meet this
        !           497:  * more than one error code
        !           498:  */
        !           499: #define APR_STATUS_IS_INPARENT(s)       ((s) == APR_INPARENT)
        !           500: /**
        !           501:  * The thread is detached
        !           502:  * @warning
        !           503:  * always use this test, as platform-specific variances may meet this
        !           504:  * more than one error code
        !           505:  */
        !           506: #define APR_STATUS_IS_DETACH(s)         ((s) == APR_DETACH)
        !           507: /**
        !           508:  * The thread is not detached
        !           509:  * @warning
        !           510:  * always use this test, as platform-specific variances may meet this
        !           511:  * more than one error code
        !           512:  */
        !           513: #define APR_STATUS_IS_NOTDETACH(s)      ((s) == APR_NOTDETACH)
        !           514: /**
        !           515:  * The child has finished executing
        !           516:  * @warning
        !           517:  * always use this test, as platform-specific variances may meet this
        !           518:  * more than one error code
        !           519:  */
        !           520: #define APR_STATUS_IS_CHILD_DONE(s)     ((s) == APR_CHILD_DONE)
        !           521: /**
        !           522:  * The child has not finished executing
        !           523:  * @warning
        !           524:  * always use this test, as platform-specific variances may meet this
        !           525:  * more than one error code
        !           526:  */
        !           527: #define APR_STATUS_IS_CHILD_NOTDONE(s)  ((s) == APR_CHILD_NOTDONE)
        !           528: /**
        !           529:  * The operation did not finish before the timeout
        !           530:  * @warning
        !           531:  * always use this test, as platform-specific variances may meet this
        !           532:  * more than one error code
        !           533:  */
        !           534: #define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP)
        !           535: /**
        !           536:  * The operation was incomplete although some processing was performed
        !           537:  * and the results are partially valid.
        !           538:  * @warning
        !           539:  * always use this test, as platform-specific variances may meet this
        !           540:  * more than one error code
        !           541:  */
        !           542: #define APR_STATUS_IS_INCOMPLETE(s)     ((s) == APR_INCOMPLETE)
        !           543: /* empty slot: +9 */
        !           544: /* empty slot: +10 */
        !           545: /* empty slot: +11 */
        !           546: /**
        !           547:  * Getopt found an option not in the option string
        !           548:  * @warning
        !           549:  * always use this test, as platform-specific variances may meet this
        !           550:  * more than one error code
        !           551:  */
        !           552: #define APR_STATUS_IS_BADCH(s)          ((s) == APR_BADCH)
        !           553: /**
        !           554:  * Getopt found an option not in the option string and an argument was
        !           555:  * specified in the option string
        !           556:  * @warning
        !           557:  * always use this test, as platform-specific variances may meet this
        !           558:  * more than one error code
        !           559:  */
        !           560: #define APR_STATUS_IS_BADARG(s)         ((s) == APR_BADARG)
        !           561: /**
        !           562:  * APR has encountered the end of the file
        !           563:  * @warning
        !           564:  * always use this test, as platform-specific variances may meet this
        !           565:  * more than one error code
        !           566:  */
        !           567: #define APR_STATUS_IS_EOF(s)            ((s) == APR_EOF)
        !           568: /**
        !           569:  * APR was unable to find the socket in the poll structure
        !           570:  * @warning
        !           571:  * always use this test, as platform-specific variances may meet this
        !           572:  * more than one error code
        !           573:  */
        !           574: #define APR_STATUS_IS_NOTFOUND(s)       ((s) == APR_NOTFOUND)
        !           575: /* empty slot: +16 */
        !           576: /* empty slot: +17 */
        !           577: /* empty slot: +18 */
        !           578: /**
        !           579:  * APR is using anonymous shared memory
        !           580:  * @warning
        !           581:  * always use this test, as platform-specific variances may meet this
        !           582:  * more than one error code
        !           583:  */
        !           584: #define APR_STATUS_IS_ANONYMOUS(s)      ((s) == APR_ANONYMOUS)
        !           585: /**
        !           586:  * APR is using a file name as the key to the shared memory
        !           587:  * @warning
        !           588:  * always use this test, as platform-specific variances may meet this
        !           589:  * more than one error code
        !           590:  */
        !           591: #define APR_STATUS_IS_FILEBASED(s)      ((s) == APR_FILEBASED)
        !           592: /**
        !           593:  * APR is using a shared key as the key to the shared memory
        !           594:  * @warning
        !           595:  * always use this test, as platform-specific variances may meet this
        !           596:  * more than one error code
        !           597:  */
        !           598: #define APR_STATUS_IS_KEYBASED(s)       ((s) == APR_KEYBASED)
        !           599: /**
        !           600:  * Ininitalizer value.  If no option has been found, but
        !           601:  * the status variable requires a value, this should be used
        !           602:  * @warning
        !           603:  * always use this test, as platform-specific variances may meet this
        !           604:  * more than one error code
        !           605:  */
        !           606: #define APR_STATUS_IS_EINIT(s)          ((s) == APR_EINIT)
        !           607: /**
        !           608:  * The APR function has not been implemented on this
        !           609:  * platform, either because nobody has gotten to it yet,
        !           610:  * or the function is impossible on this platform.
        !           611:  * @warning
        !           612:  * always use this test, as platform-specific variances may meet this
        !           613:  * more than one error code
        !           614:  */
        !           615: #define APR_STATUS_IS_ENOTIMPL(s)       ((s) == APR_ENOTIMPL)
        !           616: /**
        !           617:  * Two passwords do not match.
        !           618:  * @warning
        !           619:  * always use this test, as platform-specific variances may meet this
        !           620:  * more than one error code
        !           621:  */
        !           622: #define APR_STATUS_IS_EMISMATCH(s)      ((s) == APR_EMISMATCH)
        !           623: /**
        !           624:  * The given lock was busy
        !           625:  * @warning always use this test, as platform-specific variances may meet this
        !           626:  * more than one error code
        !           627:  */
        !           628: #define APR_STATUS_IS_EBUSY(s)          ((s) == APR_EBUSY)
        !           629: 
        !           630: /** @} */
        !           631: 
        !           632: /**
        !           633:  * @addtogroup APR_Error APR Error Values
        !           634:  * @{
        !           635:  */
        !           636: /* APR CANONICAL ERROR VALUES */
        !           637: /** @see APR_STATUS_IS_EACCES */
        !           638: #ifdef EACCES
        !           639: #define APR_EACCES EACCES
        !           640: #else
        !           641: #define APR_EACCES         (APR_OS_START_CANONERR + 1)
        !           642: #endif
        !           643: 
        !           644: /** @see APR_STATUS_IS_EEXIST */
        !           645: #ifdef EEXIST
        !           646: #define APR_EEXIST EEXIST
        !           647: #else
        !           648: #define APR_EEXIST         (APR_OS_START_CANONERR + 2)
        !           649: #endif
        !           650: 
        !           651: /** @see APR_STATUS_IS_ENAMETOOLONG */
        !           652: #ifdef ENAMETOOLONG
        !           653: #define APR_ENAMETOOLONG ENAMETOOLONG
        !           654: #else
        !           655: #define APR_ENAMETOOLONG   (APR_OS_START_CANONERR + 3)
        !           656: #endif
        !           657: 
        !           658: /** @see APR_STATUS_IS_ENOENT */
        !           659: #ifdef ENOENT
        !           660: #define APR_ENOENT ENOENT
        !           661: #else
        !           662: #define APR_ENOENT         (APR_OS_START_CANONERR + 4)
        !           663: #endif
        !           664: 
        !           665: /** @see APR_STATUS_IS_ENOTDIR */
        !           666: #ifdef ENOTDIR
        !           667: #define APR_ENOTDIR ENOTDIR
        !           668: #else
        !           669: #define APR_ENOTDIR        (APR_OS_START_CANONERR + 5)
        !           670: #endif
        !           671: 
        !           672: /** @see APR_STATUS_IS_ENOSPC */
        !           673: #ifdef ENOSPC
        !           674: #define APR_ENOSPC ENOSPC
        !           675: #else
        !           676: #define APR_ENOSPC         (APR_OS_START_CANONERR + 6)
        !           677: #endif
        !           678: 
        !           679: /** @see APR_STATUS_IS_ENOMEM */
        !           680: #ifdef ENOMEM
        !           681: #define APR_ENOMEM ENOMEM
        !           682: #else
        !           683: #define APR_ENOMEM         (APR_OS_START_CANONERR + 7)
        !           684: #endif
        !           685: 
        !           686: /** @see APR_STATUS_IS_EMFILE */
        !           687: #ifdef EMFILE
        !           688: #define APR_EMFILE EMFILE
        !           689: #else
        !           690: #define APR_EMFILE         (APR_OS_START_CANONERR + 8)
        !           691: #endif
        !           692: 
        !           693: /** @see APR_STATUS_IS_ENFILE */
        !           694: #ifdef ENFILE
        !           695: #define APR_ENFILE ENFILE
        !           696: #else
        !           697: #define APR_ENFILE         (APR_OS_START_CANONERR + 9)
        !           698: #endif
        !           699: 
        !           700: /** @see APR_STATUS_IS_EBADF */
        !           701: #ifdef EBADF
        !           702: #define APR_EBADF EBADF
        !           703: #else
        !           704: #define APR_EBADF          (APR_OS_START_CANONERR + 10)
        !           705: #endif
        !           706: 
        !           707: /** @see APR_STATUS_IS_EINVAL */
        !           708: #ifdef EINVAL
        !           709: #define APR_EINVAL EINVAL
        !           710: #else
        !           711: #define APR_EINVAL         (APR_OS_START_CANONERR + 11)
        !           712: #endif
        !           713: 
        !           714: /** @see APR_STATUS_IS_ESPIPE */
        !           715: #ifdef ESPIPE
        !           716: #define APR_ESPIPE ESPIPE
        !           717: #else
        !           718: #define APR_ESPIPE         (APR_OS_START_CANONERR + 12)
        !           719: #endif
        !           720: 
        !           721: /**
        !           722:  * @see APR_STATUS_IS_EAGAIN
        !           723:  * @warning use APR_STATUS_IS_EAGAIN instead of just testing this value
        !           724:  */
        !           725: #ifdef EAGAIN
        !           726: #define APR_EAGAIN EAGAIN
        !           727: #elif defined(EWOULDBLOCK)
        !           728: #define APR_EAGAIN EWOULDBLOCK
        !           729: #else
        !           730: #define APR_EAGAIN         (APR_OS_START_CANONERR + 13)
        !           731: #endif
        !           732: 
        !           733: /** @see APR_STATUS_IS_EINTR */
        !           734: #ifdef EINTR
        !           735: #define APR_EINTR EINTR
        !           736: #else
        !           737: #define APR_EINTR          (APR_OS_START_CANONERR + 14)
        !           738: #endif
        !           739: 
        !           740: /** @see APR_STATUS_IS_ENOTSOCK */
        !           741: #ifdef ENOTSOCK
        !           742: #define APR_ENOTSOCK ENOTSOCK
        !           743: #else
        !           744: #define APR_ENOTSOCK       (APR_OS_START_CANONERR + 15)
        !           745: #endif
        !           746: 
        !           747: /** @see APR_STATUS_IS_ECONNREFUSED */
        !           748: #ifdef ECONNREFUSED
        !           749: #define APR_ECONNREFUSED ECONNREFUSED
        !           750: #else
        !           751: #define APR_ECONNREFUSED   (APR_OS_START_CANONERR + 16)
        !           752: #endif
        !           753: 
        !           754: /** @see APR_STATUS_IS_EINPROGRESS */
        !           755: #ifdef EINPROGRESS
        !           756: #define APR_EINPROGRESS EINPROGRESS
        !           757: #else
        !           758: #define APR_EINPROGRESS    (APR_OS_START_CANONERR + 17)
        !           759: #endif
        !           760: 
        !           761: /**
        !           762:  * @see APR_STATUS_IS_ECONNABORTED
        !           763:  * @warning use APR_STATUS_IS_ECONNABORTED instead of just testing this value
        !           764:  */
        !           765: 
        !           766: #ifdef ECONNABORTED
        !           767: #define APR_ECONNABORTED ECONNABORTED
        !           768: #else
        !           769: #define APR_ECONNABORTED   (APR_OS_START_CANONERR + 18)
        !           770: #endif
        !           771: 
        !           772: /** @see APR_STATUS_IS_ECONNRESET */
        !           773: #ifdef ECONNRESET
        !           774: #define APR_ECONNRESET ECONNRESET
        !           775: #else
        !           776: #define APR_ECONNRESET     (APR_OS_START_CANONERR + 19)
        !           777: #endif
        !           778: 
        !           779: /** @see APR_STATUS_IS_ETIMEDOUT
        !           780:  *  @deprecated */
        !           781: #ifdef ETIMEDOUT
        !           782: #define APR_ETIMEDOUT ETIMEDOUT
        !           783: #else
        !           784: #define APR_ETIMEDOUT      (APR_OS_START_CANONERR + 20)
        !           785: #endif
        !           786: 
        !           787: /** @see APR_STATUS_IS_EHOSTUNREACH */
        !           788: #ifdef EHOSTUNREACH
        !           789: #define APR_EHOSTUNREACH EHOSTUNREACH
        !           790: #else
        !           791: #define APR_EHOSTUNREACH   (APR_OS_START_CANONERR + 21)
        !           792: #endif
        !           793: 
        !           794: /** @see APR_STATUS_IS_ENETUNREACH */
        !           795: #ifdef ENETUNREACH
        !           796: #define APR_ENETUNREACH ENETUNREACH
        !           797: #else
        !           798: #define APR_ENETUNREACH    (APR_OS_START_CANONERR + 22)
        !           799: #endif
        !           800: 
        !           801: /** @see APR_STATUS_IS_EFTYPE */
        !           802: #ifdef EFTYPE
        !           803: #define APR_EFTYPE EFTYPE
        !           804: #else
        !           805: #define APR_EFTYPE        (APR_OS_START_CANONERR + 23)
        !           806: #endif
        !           807: 
        !           808: /** @see APR_STATUS_IS_EPIPE */
        !           809: #ifdef EPIPE
        !           810: #define APR_EPIPE EPIPE
        !           811: #else
        !           812: #define APR_EPIPE         (APR_OS_START_CANONERR + 24)
        !           813: #endif
        !           814: 
        !           815: /** @see APR_STATUS_IS_EXDEV */
        !           816: #ifdef EXDEV
        !           817: #define APR_EXDEV EXDEV
        !           818: #else
        !           819: #define APR_EXDEV         (APR_OS_START_CANONERR + 25)
        !           820: #endif
        !           821: 
        !           822: /** @see APR_STATUS_IS_ENOTEMPTY */
        !           823: #ifdef ENOTEMPTY
        !           824: #define APR_ENOTEMPTY ENOTEMPTY
        !           825: #else
        !           826: #define APR_ENOTEMPTY     (APR_OS_START_CANONERR + 26)
        !           827: #endif
        !           828: 
        !           829: /** @see APR_STATUS_IS_EAFNOSUPPORT */
        !           830: #ifdef EAFNOSUPPORT
        !           831: #define APR_EAFNOSUPPORT EAFNOSUPPORT
        !           832: #else
        !           833: #define APR_EAFNOSUPPORT  (APR_OS_START_CANONERR + 27)
        !           834: #endif
        !           835: 
        !           836: /** @} */
        !           837: 
        !           838: #if defined(OS2) && !defined(DOXYGEN)
        !           839: 
        !           840: #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
        !           841: #define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
        !           842: 
        !           843: #define INCL_DOSERRORS
        !           844: #define INCL_DOS
        !           845: 
        !           846: /* Leave these undefined.
        !           847:  * OS2 doesn't rely on the errno concept.
        !           848:  * The API calls always return a result codes which
        !           849:  * should be filtered through APR_FROM_OS_ERROR().
        !           850:  *
        !           851:  * #define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
        !           852:  * #define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
        !           853:  */
        !           854: 
        !           855: /* A special case, only socket calls require this;
        !           856:  */
        !           857: #define apr_get_netos_error()   (APR_FROM_OS_ERROR(errno))
        !           858: #define apr_set_netos_error(e)  (errno = APR_TO_OS_ERROR(e))
        !           859: 
        !           860: /* And this needs to be greped away for good:
        !           861:  */
        !           862: #define APR_OS2_STATUS(e) (APR_FROM_OS_ERROR(e))
        !           863: 
        !           864: /* These can't sit in a private header, so in spite of the extra size,
        !           865:  * they need to be made available here.
        !           866:  */
        !           867: #define SOCBASEERR              10000
        !           868: #define SOCEPERM                (SOCBASEERR+1)             /* Not owner */
        !           869: #define SOCESRCH                (SOCBASEERR+3)             /* No such process */
        !           870: #define SOCEINTR                (SOCBASEERR+4)             /* Interrupted system call */
        !           871: #define SOCENXIO                (SOCBASEERR+6)             /* No such device or address */
        !           872: #define SOCEBADF                (SOCBASEERR+9)             /* Bad file number */
        !           873: #define SOCEACCES               (SOCBASEERR+13)            /* Permission denied */
        !           874: #define SOCEFAULT               (SOCBASEERR+14)            /* Bad address */
        !           875: #define SOCEINVAL               (SOCBASEERR+22)            /* Invalid argument */
        !           876: #define SOCEMFILE               (SOCBASEERR+24)            /* Too many open files */
        !           877: #define SOCEPIPE                (SOCBASEERR+32)            /* Broken pipe */
        !           878: #define SOCEOS2ERR              (SOCBASEERR+100)           /* OS/2 Error */
        !           879: #define SOCEWOULDBLOCK          (SOCBASEERR+35)            /* Operation would block */
        !           880: #define SOCEINPROGRESS          (SOCBASEERR+36)            /* Operation now in progress */
        !           881: #define SOCEALREADY             (SOCBASEERR+37)            /* Operation already in progress */
        !           882: #define SOCENOTSOCK             (SOCBASEERR+38)            /* Socket operation on non-socket */
        !           883: #define SOCEDESTADDRREQ         (SOCBASEERR+39)            /* Destination address required */
        !           884: #define SOCEMSGSIZE             (SOCBASEERR+40)            /* Message too long */
        !           885: #define SOCEPROTOTYPE           (SOCBASEERR+41)            /* Protocol wrong type for socket */
        !           886: #define SOCENOPROTOOPT          (SOCBASEERR+42)            /* Protocol not available */
        !           887: #define SOCEPROTONOSUPPORT      (SOCBASEERR+43)            /* Protocol not supported */
        !           888: #define SOCESOCKTNOSUPPORT      (SOCBASEERR+44)            /* Socket type not supported */
        !           889: #define SOCEOPNOTSUPP           (SOCBASEERR+45)            /* Operation not supported on socket */
        !           890: #define SOCEPFNOSUPPORT         (SOCBASEERR+46)            /* Protocol family not supported */
        !           891: #define SOCEAFNOSUPPORT         (SOCBASEERR+47)            /* Address family not supported by protocol family */
        !           892: #define SOCEADDRINUSE           (SOCBASEERR+48)            /* Address already in use */
        !           893: #define SOCEADDRNOTAVAIL        (SOCBASEERR+49)            /* Can't assign requested address */
        !           894: #define SOCENETDOWN             (SOCBASEERR+50)            /* Network is down */
        !           895: #define SOCENETUNREACH          (SOCBASEERR+51)            /* Network is unreachable */
        !           896: #define SOCENETRESET            (SOCBASEERR+52)            /* Network dropped connection on reset */
        !           897: #define SOCECONNABORTED         (SOCBASEERR+53)            /* Software caused connection abort */
        !           898: #define SOCECONNRESET           (SOCBASEERR+54)            /* Connection reset by peer */
        !           899: #define SOCENOBUFS              (SOCBASEERR+55)            /* No buffer space available */
        !           900: #define SOCEISCONN              (SOCBASEERR+56)            /* Socket is already connected */
        !           901: #define SOCENOTCONN             (SOCBASEERR+57)            /* Socket is not connected */
        !           902: #define SOCESHUTDOWN            (SOCBASEERR+58)            /* Can't send after socket shutdown */
        !           903: #define SOCETOOMANYREFS         (SOCBASEERR+59)            /* Too many references: can't splice */
        !           904: #define SOCETIMEDOUT            (SOCBASEERR+60)            /* Connection timed out */
        !           905: #define SOCECONNREFUSED         (SOCBASEERR+61)            /* Connection refused */
        !           906: #define SOCELOOP                (SOCBASEERR+62)            /* Too many levels of symbolic links */
        !           907: #define SOCENAMETOOLONG         (SOCBASEERR+63)            /* File name too long */
        !           908: #define SOCEHOSTDOWN            (SOCBASEERR+64)            /* Host is down */
        !           909: #define SOCEHOSTUNREACH         (SOCBASEERR+65)            /* No route to host */
        !           910: #define SOCENOTEMPTY            (SOCBASEERR+66)            /* Directory not empty */
        !           911: 
        !           912: /* APR CANONICAL ERROR TESTS */
        !           913: #define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
        !           914:                 || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
        !           915:                 || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
        !           916: #define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
        !           917:                 || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
        !           918:                 || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
        !           919:                 || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS \
        !           920:                 || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
        !           921: #define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
        !           922:                 || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
        !           923:                 || (s) == APR_OS_START_SYSERR + SOCENAMETOOLONG)
        !           924: #define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
        !           925:                 || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
        !           926:                 || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
        !           927:                 || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES \
        !           928:                 || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED)
        !           929: #define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
        !           930: #define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
        !           931:                 || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
        !           932: #define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
        !           933: #define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
        !           934:                 || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
        !           935: #define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
        !           936: #define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
        !           937:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE)
        !           938: #define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
        !           939:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
        !           940:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION)
        !           941: #define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
        !           942:                 || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
        !           943: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
        !           944:                 || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
        !           945:                 || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \
        !           946:                 || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION)
        !           947: #define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
        !           948:                 || (s) == APR_OS_START_SYSERR + SOCEINTR)
        !           949: #define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
        !           950:                 || (s) == APR_OS_START_SYSERR + SOCENOTSOCK)
        !           951: #define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
        !           952:                 || (s) == APR_OS_START_SYSERR + SOCECONNREFUSED)
        !           953: #define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
        !           954:                 || (s) == APR_OS_START_SYSERR + SOCEINPROGRESS)
        !           955: #define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
        !           956:                 || (s) == APR_OS_START_SYSERR + SOCECONNABORTED)
        !           957: #define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
        !           958:                 || (s) == APR_OS_START_SYSERR + SOCECONNRESET)
        !           959: /* XXX deprecated */
        !           960: #define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
        !           961:                 || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
        !           962: #undef APR_STATUS_IS_TIMEUP
        !           963: #define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
        !           964:                 || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)
        !           965: #define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
        !           966:                 || (s) == APR_OS_START_SYSERR + SOCEHOSTUNREACH)
        !           967: #define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
        !           968:                 || (s) == APR_OS_START_SYSERR + SOCENETUNREACH)
        !           969: #define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
        !           970: #define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
        !           971:                 || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE \
        !           972:                 || (s) == APR_OS_START_SYSERR + SOCEPIPE)
        !           973: #define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
        !           974:                 || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
        !           975: #define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
        !           976:                 || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY \
        !           977:                 || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)
        !           978: #define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_AFNOSUPPORT \
        !           979:                 || (s) == APR_OS_START_SYSERR + SOCEAFNOSUPPORT)
        !           980: 
        !           981: /*
        !           982:     Sorry, too tired to wrap this up for OS2... feel free to
        !           983:     fit the following into their best matches.
        !           984: 
        !           985:     { ERROR_NO_SIGNAL_SENT,     ESRCH           },
        !           986:     { SOCEALREADY,              EALREADY        },
        !           987:     { SOCEDESTADDRREQ,          EDESTADDRREQ    },
        !           988:     { SOCEMSGSIZE,              EMSGSIZE        },
        !           989:     { SOCEPROTOTYPE,            EPROTOTYPE      },
        !           990:     { SOCENOPROTOOPT,           ENOPROTOOPT     },
        !           991:     { SOCEPROTONOSUPPORT,       EPROTONOSUPPORT },
        !           992:     { SOCESOCKTNOSUPPORT,       ESOCKTNOSUPPORT },
        !           993:     { SOCEOPNOTSUPP,            EOPNOTSUPP      },
        !           994:     { SOCEPFNOSUPPORT,          EPFNOSUPPORT    },
        !           995:     { SOCEADDRINUSE,            EADDRINUSE      },
        !           996:     { SOCEADDRNOTAVAIL,         EADDRNOTAVAIL   },
        !           997:     { SOCENETDOWN,              ENETDOWN        },
        !           998:     { SOCENETRESET,             ENETRESET       },
        !           999:     { SOCENOBUFS,               ENOBUFS         },
        !          1000:     { SOCEISCONN,               EISCONN         },
        !          1001:     { SOCENOTCONN,              ENOTCONN        },
        !          1002:     { SOCESHUTDOWN,             ESHUTDOWN       },
        !          1003:     { SOCETOOMANYREFS,          ETOOMANYREFS    },
        !          1004:     { SOCELOOP,                 ELOOP           },
        !          1005:     { SOCEHOSTDOWN,             EHOSTDOWN       },
        !          1006:     { SOCENOTEMPTY,             ENOTEMPTY       },
        !          1007:     { SOCEPIPE,                 EPIPE           }
        !          1008: */
        !          1009: 
        !          1010: #elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */
        !          1011: 
        !          1012: #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
        !          1013: #define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
        !          1014: 
        !          1015: #define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))
        !          1016: #define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))
        !          1017: 
        !          1018: /* A special case, only socket calls require this:
        !          1019:  */
        !          1020: #define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
        !          1021: #define apr_set_netos_error(e)   (WSASetLastError(APR_TO_OS_ERROR(e)))
        !          1022: 
        !          1023: /* APR CANONICAL ERROR TESTS */
        !          1024: #define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \
        !          1025:                 || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \
        !          1026:                 || (s) == APR_OS_START_SYSERR + ERROR_CANNOT_MAKE \
        !          1027:                 || (s) == APR_OS_START_SYSERR + ERROR_CURRENT_DIRECTORY \
        !          1028:                 || (s) == APR_OS_START_SYSERR + ERROR_DRIVE_LOCKED \
        !          1029:                 || (s) == APR_OS_START_SYSERR + ERROR_FAIL_I24 \
        !          1030:                 || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
        !          1031:                 || (s) == APR_OS_START_SYSERR + ERROR_LOCK_FAILED \
        !          1032:                 || (s) == APR_OS_START_SYSERR + ERROR_NOT_LOCKED \
        !          1033:                 || (s) == APR_OS_START_SYSERR + ERROR_NETWORK_ACCESS_DENIED \
        !          1034:                 || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)
        !          1035: #define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \
        !          1036:                 || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \
        !          1037:                 || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS)
        !          1038: #define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \
        !          1039:                 || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \
        !          1040:                 || (s) == APR_OS_START_SYSERR + WSAENAMETOOLONG)
        !          1041: #define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
        !          1042:                 || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \
        !          1043:                 || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
        !          1044:                 || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \
        !          1045:                 || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES)
        !          1046: #define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR \
        !          1047:                 || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \
        !          1048:                 || (s) == APR_OS_START_SYSERR + ERROR_BAD_NETPATH \
        !          1049:                 || (s) == APR_OS_START_SYSERR + ERROR_BAD_NET_NAME \
        !          1050:                 || (s) == APR_OS_START_SYSERR + ERROR_BAD_PATHNAME \
        !          1051:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DRIVE \
        !          1052:                 || (s) == APR_OS_START_SYSERR + ERROR_DIRECTORY)
        !          1053: #define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
        !          1054:                 || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)
        !          1055: #define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM \
        !          1056:                 || (s) == APR_OS_START_SYSERR + ERROR_ARENA_TRASHED \
        !          1057:                 || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_MEMORY \
        !          1058:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_BLOCK \
        !          1059:                 || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_QUOTA \
        !          1060:                 || (s) == APR_OS_START_SYSERR + ERROR_OUTOFMEMORY)
        !          1061: #define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \
        !          1062:                 || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)
        !          1063: #define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
        !          1064: #define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \
        !          1065:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
        !          1066:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_TARGET_HANDLE)
        !          1067: #define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \
        !          1068:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_ACCESS \
        !          1069:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DATA \
        !          1070:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION \
        !          1071:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \
        !          1072:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \
        !          1073:                 || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
        !          1074: #define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \
        !          1075:                 || (s) == APR_OS_START_SYSERR + ERROR_SEEK_ON_DEVICE \
        !          1076:                 || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)
        !          1077: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
        !          1078:                 || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \
        !          1079:                 || (s) == APR_OS_START_SYSERR + ERROR_NO_PROC_SLOTS \
        !          1080:                 || (s) == APR_OS_START_SYSERR + ERROR_NESTING_NOT_ALLOWED \
        !          1081:                 || (s) == APR_OS_START_SYSERR + ERROR_MAX_THRDS_REACHED \
        !          1082:                 || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \
        !          1083:                 || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
        !          1084: #define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
        !          1085:                 || (s) == APR_OS_START_SYSERR + WSAEINTR)
        !          1086: #define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
        !          1087:                 || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
        !          1088: #define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
        !          1089:                 || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
        !          1090: #define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
        !          1091:                 || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
        !          1092: #define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
        !          1093:                 || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
        !          1094: #define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
        !          1095:                 || (s) == APR_OS_START_SYSERR + ERROR_NETNAME_DELETED \
        !          1096:                 || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
        !          1097: /* XXX deprecated */
        !          1098: #define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \
        !          1099:                 || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
        !          1100:                 || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
        !          1101: #undef APR_STATUS_IS_TIMEUP
        !          1102: #define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
        !          1103:                 || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
        !          1104:                 || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
        !          1105: #define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
        !          1106:                 || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
        !          1107: #define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
        !          1108:                 || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
        !          1109: #define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE \
        !          1110:                 || (s) == APR_OS_START_SYSERR + ERROR_EXE_MACHINE_TYPE_MISMATCH \
        !          1111:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DLL \
        !          1112:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_MODULETYPE \
        !          1113:                 || (s) == APR_OS_START_SYSERR + ERROR_BAD_EXE_FORMAT \
        !          1114:                 || (s) == APR_OS_START_SYSERR + ERROR_INVALID_EXE_SIGNATURE \
        !          1115:                 || (s) == APR_OS_START_SYSERR + ERROR_FILE_CORRUPT \
        !          1116:                 || (s) == APR_OS_START_SYSERR + ERROR_BAD_FORMAT)
        !          1117: #define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \
        !          1118:                 || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE)
        !          1119: #define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \
        !          1120:                 || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)
        !          1121: #define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \
        !          1122:                 || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY)
        !          1123: #define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
        !          1124:                 || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
        !          1125: 
        !          1126: #elif defined(NETWARE) && defined(USE_WINSOCK) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */
        !          1127: 
        !          1128: #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)
        !          1129: #define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)
        !          1130: 
        !          1131: #define apr_get_os_error()    (errno)
        !          1132: #define apr_set_os_error(e)   (errno = (e))
        !          1133: 
        !          1134: /* A special case, only socket calls require this: */
        !          1135: #define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))
        !          1136: #define apr_set_netos_error(e)  (WSASetLastError(APR_TO_OS_ERROR(e)))
        !          1137: 
        !          1138: /* APR CANONICAL ERROR TESTS */
        !          1139: #define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
        !          1140: #define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
        !          1141: #define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
        !          1142: #define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
        !          1143: #define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
        !          1144: #define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
        !          1145: #define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
        !          1146: #define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
        !          1147: #define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
        !          1148: #define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
        !          1149: #define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
        !          1150: #define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
        !          1151: 
        !          1152: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
        !          1153:                 || (s) ==                       EWOULDBLOCK \
        !          1154:                 || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)
        !          1155: #define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \
        !          1156:                 || (s) == APR_OS_START_SYSERR + WSAEINTR)
        !          1157: #define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \
        !          1158:                 || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)
        !          1159: #define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \
        !          1160:                 || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)
        !          1161: #define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \
        !          1162:                 || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)
        !          1163: #define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
        !          1164:                 || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)
        !          1165: #define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \
        !          1166:                 || (s) == APR_OS_START_SYSERR + WSAECONNRESET)
        !          1167: /* XXX deprecated */
        !          1168: #define APR_STATUS_IS_ETIMEDOUT(s)       ((s) == APR_ETIMEDOUT \
        !          1169:                 || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
        !          1170:                 || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
        !          1171: #undef APR_STATUS_IS_TIMEUP
        !          1172: #define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \
        !          1173:                 || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \
        !          1174:                 || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)
        !          1175: #define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \
        !          1176:                 || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)
        !          1177: #define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \
        !          1178:                 || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)
        !          1179: #define APR_STATUS_IS_ENETDOWN(s)       ((s) == APR_OS_START_SYSERR + WSAENETDOWN)
        !          1180: #define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)
        !          1181: #define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE)
        !          1182: #define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV)
        !          1183: #define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY)
        !          1184: #define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \
        !          1185:                 || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)
        !          1186: 
        !          1187: #else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
        !          1188: 
        !          1189: /*
        !          1190:  *  os error codes are clib error codes
        !          1191:  */
        !          1192: #define APR_FROM_OS_ERROR(e)  (e)
        !          1193: #define APR_TO_OS_ERROR(e)    (e)
        !          1194: 
        !          1195: #define apr_get_os_error()    (errno)
        !          1196: #define apr_set_os_error(e)   (errno = (e))
        !          1197: 
        !          1198: /* A special case, only socket calls require this:
        !          1199:  */
        !          1200: #define apr_get_netos_error() (errno)
        !          1201: #define apr_set_netos_error(e) (errno = (e))
        !          1202: 
        !          1203: /**
        !          1204:  * @addtogroup APR_STATUS_IS
        !          1205:  * @{
        !          1206:  */
        !          1207: 
        !          1208: /** permission denied */
        !          1209: #define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)
        !          1210: /** file exists */
        !          1211: #define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)
        !          1212: /** path name is too long */
        !          1213: #define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)
        !          1214: /**
        !          1215:  * no such file or directory
        !          1216:  * @remark
        !          1217:  * EMVSCATLG can be returned by the automounter on z/OS for
        !          1218:  * paths which do not exist.
        !          1219:  */
        !          1220: #ifdef EMVSCATLG
        !          1221: #define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \
        !          1222:                                       || (s) == EMVSCATLG)
        !          1223: #else
        !          1224: #define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)
        !          1225: #endif
        !          1226: /** not a directory */
        !          1227: #define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)
        !          1228: /** no space left on device */
        !          1229: #ifdef EDQUOT
        !          1230: #define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \
        !          1231:                                       || (s) == EDQUOT)
        !          1232: #else
        !          1233: #define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)
        !          1234: #endif
        !          1235: /** not enough memory */
        !          1236: #define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)
        !          1237: /** too many open files */
        !          1238: #define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)
        !          1239: /** file table overflow */
        !          1240: #define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)
        !          1241: /** bad file # */
        !          1242: #define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)
        !          1243: /** invalid argument */
        !          1244: #define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)
        !          1245: /** illegal seek */
        !          1246: #define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)
        !          1247: 
        !          1248: /** operation would block */
        !          1249: #if !defined(EWOULDBLOCK) || !defined(EAGAIN)
        !          1250: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
        !          1251: #elif (EWOULDBLOCK == EAGAIN)
        !          1252: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
        !          1253: #else
        !          1254: #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
        !          1255:                                       || (s) == EWOULDBLOCK)
        !          1256: #endif
        !          1257: 
        !          1258: /** interrupted system call */
        !          1259: #define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR)
        !          1260: /** socket operation on a non-socket */
        !          1261: #define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK)
        !          1262: /** Connection Refused */
        !          1263: #define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED)
        !          1264: /** operation now in progress */
        !          1265: #define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS)
        !          1266: 
        !          1267: /**
        !          1268:  * Software caused connection abort
        !          1269:  * @remark
        !          1270:  * EPROTO on certain older kernels really means ECONNABORTED, so we need to
        !          1271:  * ignore it for them.  See discussion in new-httpd archives nh.9701 & nh.9603
        !          1272:  *
        !          1273:  * There is potentially a bug in Solaris 2.x x<6, and other boxes that
        !          1274:  * implement tcp sockets in userland (i.e. on top of STREAMS).  On these
        !          1275:  * systems, EPROTO can actually result in a fatal loop.  See PR#981 for
        !          1276:  * example.  It's hard to handle both uses of EPROTO.
        !          1277:  */
        !          1278: #ifdef EPROTO
        !          1279: #define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED \
        !          1280:                                        || (s) == EPROTO)
        !          1281: #else
        !          1282: #define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED)
        !          1283: #endif
        !          1284: 
        !          1285: /** Connection Reset by peer */
        !          1286: #define APR_STATUS_IS_ECONNRESET(s)      ((s) == APR_ECONNRESET)
        !          1287: /** Operation timed out
        !          1288:  *  @deprecated */
        !          1289: #define APR_STATUS_IS_ETIMEDOUT(s)      ((s) == APR_ETIMEDOUT)
        !          1290: /** no route to host */
        !          1291: #define APR_STATUS_IS_EHOSTUNREACH(s)    ((s) == APR_EHOSTUNREACH)
        !          1292: /** network is unreachable */
        !          1293: #define APR_STATUS_IS_ENETUNREACH(s)     ((s) == APR_ENETUNREACH)
        !          1294: /** inappropiate file type or format */
        !          1295: #define APR_STATUS_IS_EFTYPE(s)          ((s) == APR_EFTYPE)
        !          1296: /** broken pipe */
        !          1297: #define APR_STATUS_IS_EPIPE(s)           ((s) == APR_EPIPE)
        !          1298: /** cross device link */
        !          1299: #define APR_STATUS_IS_EXDEV(s)           ((s) == APR_EXDEV)
        !          1300: /** Directory Not Empty */
        !          1301: #define APR_STATUS_IS_ENOTEMPTY(s)       ((s) == APR_ENOTEMPTY || \
        !          1302:                                           (s) == APR_EEXIST)
        !          1303: /** Address Family not supported */
        !          1304: #define APR_STATUS_IS_EAFNOSUPPORT(s)    ((s) == APR_EAFNOSUPPORT)
        !          1305: /** @} */
        !          1306: 
        !          1307: #endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
        !          1308: 
        !          1309: /** @} */
        !          1310: 
        !          1311: #ifdef __cplusplus
        !          1312: }
        !          1313: #endif
        !          1314: 
        !          1315: #endif  /* ! APR_ERRNO_H */

E-mail: