/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef APR_H #define APR_H /* GENERATED FILE WARNING! DO NOT EDIT apr.h * * You must modify apr.h.in instead. * * And please, make an effort to stub apr.hw and apr.hnw in the process. */ /** * @file apr.h * @brief APR Platform Definitions * @remark This is a generated header generated from include/apr.h.in by * ./configure, or copied from include/apr.hw or include/apr.hnw * for Win32 or Netware by those build environments, respectively. */ /** * @defgroup APR Apache Portability Runtime library * @{ */ /** * @defgroup apr_platform Platform Definitions * @{ * @warning * The actual values of macros and typedefs on this page
* are platform specific and should NOT be relied upon!
*/ /* So that we can use inline on some critical functions, and use * GNUC attributes (such as to get -Wall warnings for printf-like * functions). Both __inline__ and __attribute__ exist for gcc >= 2.7, * other !__GNUC__ compilers may provide __attribute__ still. * * We've since discovered that the gcc shipped with NeXT systems * as "cc" is completely broken. It claims to be __GNUC__ and so * on, but it doesn't implement half of the things that __GNUC__ * means. In particular it's missing inline and the __attribute__ * stuff. So we hack around it. PR#1613. -djg */ #if defined(__GNUC__) \ && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) \ && !defined(NEXT) #define APR_INLINE __inline__ #define APR_HAS_INLINE 1 #else /* !__GNUC__ */ #define APR_INLINE #define APR_HAS_INLINE 0 /* __has_attribute should always be a pre-defined macro, but not * necessarily __attribute__ (e.g. builtin), so check for both to * avoid overriding __attribute__. */ #if !(defined(__attribute__) || defined(__has_attribute)) #define __attribute__(__x) #endif #endif /* !__GNUC__ */ #define APR_HAVE_ARPA_INET_H @arpa_ineth@ #define APR_HAVE_CONIO_H @conioh@ #define APR_HAVE_CRYPT_H @crypth@ #define APR_HAVE_CTYPE_H @ctypeh@ #define APR_HAVE_DIRENT_H @direnth@ #define APR_HAVE_ERRNO_H @errnoh@ #define APR_HAVE_FCNTL_H @fcntlh@ #define APR_HAVE_IO_H @ioh@ #define APR_HAVE_LIMITS_H @limitsh@ #define APR_HAVE_NETDB_H @netdbh@ #define APR_HAVE_NETINET_IN_H @netinet_inh@ #define APR_HAVE_NETINET_SCTP_H @netinet_sctph@ #define APR_HAVE_NETINET_SCTP_UIO_H @netinet_sctp_uioh@ #define APR_HAVE_NETINET_TCP_H @netinet_tcph@ #define APR_HAVE_PROCESS_H @processh@ #define APR_HAVE_PTHREAD_H @pthreadh@ #define APR_HAVE_SEMAPHORE_H @semaphoreh@ #define APR_HAVE_SIGNAL_H @signalh@ #define APR_HAVE_STDARG_H @stdargh@ #define APR_HAVE_STDDEF_H @stddefh@ #define APR_HAVE_STDINT_H @stdint@ #define APR_HAVE_STDIO_H @stdioh@ #define APR_HAVE_STDLIB_H @stdlibh@ #define APR_HAVE_STRING_H @stringh@ #define APR_HAVE_STRINGS_H @stringsh@ #define APR_HAVE_INTTYPES_H @inttypesh@ #define APR_HAVE_SYS_IOCTL_H @sys_ioctlh@ #define APR_HAVE_SYS_SENDFILE_H @sys_sendfileh@ #define APR_HAVE_SYS_SIGNAL_H @sys_signalh@ #define APR_HAVE_SYS_SOCKET_H @sys_socketh@ #define APR_HAVE_SYS_SOCKIO_H @sys_sockioh@ #define APR_HAVE_SYS_SYSLIMITS_H @sys_syslimitsh@ #define APR_HAVE_SYS_TIME_H @sys_timeh@ #define APR_HAVE_SYS_TYPES_H @sys_typesh@ #define APR_HAVE_SYS_UIO_H @sys_uioh@ #define APR_HAVE_SYS_UN_H @sys_unh@ #define APR_HAVE_SYS_WAIT_H @sys_waith@ #define APR_HAVE_TIME_H @timeh@ #define APR_HAVE_UNISTD_H @unistdh@ #define APR_HAVE_WINDOWS_H @windowsh@ #define APR_HAVE_WINSOCK2_H @winsock2h@ /** @} */ /** @} */ /* We don't include our conditional headers within the doxyblocks * or the extern "C" namespace */ #if APR_HAVE_WINDOWS_H && defined(WIN32) /* If windows.h was already included, our preferences don't matter. * If not, include a restricted set of windows headers to our tastes. */ #ifndef _WINDOWS_ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #ifndef _WIN32_WINNT /* Restrict the server to a subset of Windows XP header files by default */ #define _WIN32_WINNT 0x0501 #endif #ifndef NOUSER #define NOUSER #endif #ifndef NOMCX #define NOMCX #endif #ifndef NOIME #define NOIME #endif #include /* * Add a _very_few_ declarations missing from the restricted set of headers * (If this list becomes extensive, re-enable the required headers above!) * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now */ #define SW_HIDE 0 #ifndef _WIN32_WCE #include #include #include #else #include #endif #endif /* ndef _WINDOWS_ */ #endif /* APR_HAVE_WINDOWS_H */ #if APR_HAVE_SYS_TYPES_H #include #endif #if APR_HAVE_STDDEF_H #include #endif #if APR_HAVE_SYS_SOCKET_H #include #endif #if APR_HAVE_STDINT_H #ifdef __cplusplus /* C99 7.18.4 requires that stdint.h only exposes INT64_C * and UINT64_C for C++ implementations if this is defined: */ #ifndef __STDC_CONSTANT_MACROS #define __STDC_CONSTANT_MACROS #endif /* C++ needs this too for PRI*NN formats: */ #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS #endif #endif /* __cplusplus */ #include #endif #if APR_HAVE_INTTYPES_H #include #endif #if APR_HAVE_SYS_WAIT_H #include #endif #ifdef OS2 #define INCL_DOS #define INCL_DOSERRORS #include #endif /* header files for PATH_MAX, _POSIX_PATH_MAX */ #if APR_HAVE_LIMITS_H #include #else #if APR_HAVE_SYS_SYSLIMITS_H #include #endif #endif /* __APPLE__ is now the official pre-defined macro for macOS */ #ifdef __APPLE__ #undef DARWIN #undef DARWIN_10 #define DARWIN #define DARWIN_10 #endif /* __APPLE__ */ #ifdef __cplusplus extern "C" { #endif /** * @addtogroup apr_platform * @ingroup APR * @{ */ #define APR_HAVE_SHMEM_MMAP_TMP @havemmaptmp@ #define APR_HAVE_SHMEM_MMAP_SHM @havemmapshm@ #define APR_HAVE_SHMEM_MMAP_ZERO @havemmapzero@ #define APR_HAVE_SHMEM_SHMGET_ANON @haveshmgetanon@ #define APR_HAVE_SHMEM_SHMGET @haveshmget@ #define APR_HAVE_SHMEM_MMAP_ANON @havemmapanon@ #define APR_HAVE_SHMEM_BEOS @havebeosarea@ #define APR_USE_SHMEM_MMAP_TMP @usemmaptmp@ #define APR_USE_SHMEM_MMAP_SHM @usemmapshm@ #define APR_USE_SHMEM_MMAP_ZERO @usemmapzero@ #define APR_USE_SHMEM_SHMGET_ANON @useshmgetanon@ #define APR_USE_SHMEM_SHMGET @useshmget@ #define APR_USE_SHMEM_MMAP_ANON @usemmapanon@ #define APR_USE_SHMEM_BEOS @usebeosarea@ #define APR_USE_FLOCK_SERIALIZE @flockser@ #define APR_USE_SYSVSEM_SERIALIZE @sysvser@ #define APR_USE_POSIXSEM_SERIALIZE @posixser@ #define APR_USE_FCNTL_SERIALIZE @fcntlser@ #define APR_USE_PROC_PTHREAD_SERIALIZE @procpthreadser@ #define APR_USE_PTHREAD_SERIALIZE @pthreadser@ #define APR_HAS_FLOCK_SERIALIZE @hasflockser@ #define APR_HAS_SYSVSEM_SERIALIZE @hassysvser@ #define APR_HAS_POSIXSEM_SERIALIZE @hasposixser@ #define APR_HAS_FCNTL_SERIALIZE @hasfcntlser@ #define APR_HAS_PROC_PTHREAD_SERIALIZE @hasprocpthreadser@ #define APR_PROCESS_LOCK_IS_GLOBAL @proclockglobal@ #define APR_HAVE_CORKABLE_TCP @have_corkable_tcp@ #define APR_HAVE_GETRLIMIT @have_getrlimit@ #define APR_HAVE_IN_ADDR @have_in_addr@ #define APR_HAVE_INET_ADDR @have_inet_addr@ #define APR_HAVE_INET_NETWORK @have_inet_network@ #define APR_HAVE_IPV6 @have_ipv6@ #define APR_HAVE_SOCKADDR_UN @have_sockaddr_un@ #define APR_HAVE_MEMMOVE @have_memmove@ #define APR_HAVE_SETRLIMIT @have_setrlimit@ #define APR_HAVE_SIGACTION @have_sigaction@ #define APR_HAVE_SIGSUSPEND @have_sigsuspend@ #define APR_HAVE_SIGWAIT @have_sigwait@ #define APR_HAVE_SA_STORAGE @have_sa_storage@ #define APR_HAVE_STRCASECMP @have_strcasecmp@ #define APR_HAVE_STRDUP @have_strdup@ #define APR_HAVE_STRICMP @have_stricmp@ #define APR_HAVE_STRNCASECMP @have_strncasecmp@ #define APR_HAVE_STRNICMP @have_strnicmp@ #define APR_HAVE_STRSTR @have_strstr@ #define APR_HAVE_MEMCHR @have_memchr@ #define APR_HAVE_STRUCT_RLIMIT @struct_rlimit@ #define APR_HAVE_UNION_SEMUN @have_union_semun@ #define APR_HAVE_SCTP @have_sctp@ #define APR_HAVE_IOVEC @have_iovec@ /* APR Feature Macros */ #define APR_HAS_SHARED_MEMORY @sharedmem@ #define APR_HAS_THREADS @threads@ #define APR_HAS_SENDFILE @sendfile@ #define APR_HAS_MMAP @mmap@ #define APR_HAS_FORK @fork@ #define APR_HAS_RANDOM @rand@ #define APR_HAS_OTHER_CHILD @oc@ #define APR_HAS_DSO @aprdso@ #define APR_HAS_SO_ACCEPTFILTER @acceptfilter@ #define APR_HAS_UNICODE_FS @have_unicode_fs@ #define APR_HAS_PROC_INVOKED @have_proc_invoked@ #define APR_HAS_USER @apr_has_user@ #define APR_HAS_LARGE_FILES @aprlfs@ #define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@ #define APR_HAS_OS_UUID @osuuid@ #define APR_HAS_TIMEDLOCKS @apr_has_timedlocks@ #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD @apr_procattr_user_set_requires_password@ /* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible * to poll on files/pipes. */ #define APR_FILES_AS_SOCKETS @file_as_socket@ /* This macro indicates whether or not EBCDIC is the native character set. */ #define APR_CHARSET_EBCDIC @apr_charset_ebcdic@ /* If we have a TCP implementation that can be "corked", what flag * do we use? */ #define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ /* Is the TCP_NODELAY socket option inherited from listening sockets? */ #define APR_TCP_NODELAY_INHERITED @tcp_nodelay_inherited@ /* Is the O_NONBLOCK flag inherited from listening sockets? */ #define APR_O_NONBLOCK_INHERITED @o_nonblock_inherited@ /* Typedefs that APR needs. */ typedef unsigned char apr_byte_t; typedef @short_value@ apr_int16_t; typedef unsigned @short_value@ apr_uint16_t; typedef @int_value@ apr_int32_t; typedef unsigned @int_value@ apr_uint32_t; #define APR_SIZEOF_VOIDP @voidp_size@ /* * Darwin 10's default compiler (gcc42) builds for both 64 and * 32 bit architectures unless specifically told not to. * In those cases, we need to override types depending on how * we're being built at compile time. * NOTE: This is an ugly work-around for Darwin's * concept of universal binaries, a single package * (executable, lib, etc...) which contains both 32 * and 64 bit versions. The issue is that if APR is * built universally, if something else is compiled * against it, some bit sizes will depend on whether * it is 32 or 64 bit. This is determined by the __LP64__ * flag. Since we need to support both, we have to * handle OS X unqiuely. */ #ifdef DARWIN_10 #undef APR_SIZEOF_VOIDP #undef APR_INT64_C #undef APR_UINT64_C #ifdef __LP64__ typedef long apr_int64_t; typedef unsigned long apr_uint64_t; #define APR_SIZEOF_VOIDP 8 #define APR_INT64_C(v) (v ## L) #define APR_UINT64_C(v) (v ## UL) #else typedef long long apr_int64_t; typedef unsigned long long apr_uint64_t; #define APR_SIZEOF_VOIDP 4 #define APR_INT64_C(v) (v ## LL) #define APR_UINT64_C(v) (v ## ULL) #endif #else typedef @int64_value@ apr_int64_t; typedef @uint64_value@ apr_uint64_t; /* Mechanisms to properly type numeric literals */ @int64_literal@ @uint64_literal@ #endif typedef @size_t_value@ apr_size_t; typedef @ssize_t_value@ apr_ssize_t; typedef @off_t_value@ apr_off_t; typedef @socklen_t_value@ apr_socklen_t; typedef @ino_t_value@ apr_ino_t; #if APR_SIZEOF_VOIDP == 8 typedef apr_uint64_t apr_uintptr_t; #else typedef apr_uint32_t apr_uintptr_t; #endif /* Are we big endian? */ #define APR_IS_BIGENDIAN @bigendian@ #ifdef INT16_MIN #define APR_INT16_MIN INT16_MIN #else #define APR_INT16_MIN (-0x7fff - 1) #endif #ifdef INT16_MAX #define APR_INT16_MAX INT16_MAX #else #define APR_INT16_MAX (0x7fff) #endif #ifdef UINT16_MAX #define APR_UINT16_MAX UINT16_MAX #else #define APR_UINT16_MAX (0xffff) #endif #ifdef INT32_MIN #define APR_INT32_MIN INT32_MIN #else #define APR_INT32_MIN (-0x7fffffff - 1) #endif #ifdef INT32_MAX #define APR_INT32_MAX INT32_MAX #else #define APR_INT32_MAX 0x7fffffff #endif #ifdef UINT32_MAX #define APR_UINT32_MAX UINT32_MAX #else #define APR_UINT32_MAX (0xffffffffU) #endif #ifdef INT64_MIN #define APR_INT64_MIN INT64_MIN #else #define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) #endif #ifdef INT64_MAX #define APR_INT64_MAX INT64_MAX #else #define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) #endif #ifdef UINT64_MAX #define APR_UINT64_MAX UINT64_MAX #else #define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) #endif #define APR_SIZE_MAX (~((apr_size_t)0)) /* Definitions that APR programs need to work properly. */ /** * APR public API wrap for C++ compilers. */ #ifdef __cplusplus #define APR_BEGIN_DECLS extern "C" { #define APR_END_DECLS } #else #define APR_BEGIN_DECLS #define APR_END_DECLS #endif /** * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, * so that they follow the platform's calling convention. *
 *
 * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
 *
 * 
*/ #define APR_THREAD_FUNC @apr_thread_func@ #if defined(DOXYGEN) || !defined(WIN32) /** * The public APR functions are declared with APR_DECLARE(), so they may * use the most appropriate calling convention. Public APR functions with * variable arguments must use APR_DECLARE_NONSTD(). * * @remark Both the declaration and implementations must use the same macro. * *
 * APR_DECLARE(rettype) apr_func(args)
 * 
* @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA * @remark Note that when APR compiles the library itself, it passes the * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) * to export public symbols from the dynamic library build.\n * The user must define the APR_DECLARE_STATIC when compiling to target * the static APR library on some platforms (e.g. Win32.) The public symbols * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n * By default, compiling an application and including the APR public * headers, without defining APR_DECLARE_STATIC, will prepare the code to be * linked to the dynamic library. */ #define APR_DECLARE(type) type /** * The public APR functions using variable arguments are declared with * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. * @see APR_DECLARE @see APR_DECLARE_DATA * @remark Both the declaration and implementations must use the same macro. *
 *
 * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
 *
 * 
*/ #define APR_DECLARE_NONSTD(type) type /** * The public APR variables are declared with AP_MODULE_DECLARE_DATA. * This assures the appropriate indirection is invoked at compile time. * @see APR_DECLARE @see APR_DECLARE_NONSTD * @remark Note that the declaration and implementations use different forms, * but both must include the macro. * *
 *
 * extern APR_DECLARE_DATA type apr_variable;\n
 * APR_DECLARE_DATA type apr_variable = value;
 *
 * 
*/ #define APR_DECLARE_DATA #elif defined(APR_DECLARE_STATIC) #define APR_DECLARE(type) type __stdcall #define APR_DECLARE_NONSTD(type) type __cdecl #define APR_DECLARE_DATA #elif defined(APR_DECLARE_EXPORT) #define APR_DECLARE(type) __declspec(dllexport) type __stdcall #define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl #define APR_DECLARE_DATA __declspec(dllexport) #else #define APR_DECLARE(type) __declspec(dllimport) type __stdcall #define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl #define APR_DECLARE_DATA __declspec(dllimport) #endif /* Define APR_SSIZE_T_FMT. * If ssize_t is an integer we define it to be "d", * if ssize_t is a long int we define it to be "ld", * if ssize_t is neither we declare an error here. * I looked for a better way to define this here, but couldn't find one, so * to find the logic for this definition search for "ssize_t_fmt" in * configure.in. */ @ssize_t_fmt@ /* And APR_SIZE_T_FMT */ @size_t_fmt@ /* And APR_OFF_T_FMT */ @off_t_fmt@ /* And APR_PID_T_FMT */ @pid_t_fmt@ /* And APR_INT64_T_FMT */ @int64_t_fmt@ /* And APR_UINT64_T_FMT */ @uint64_t_fmt@ /* And APR_UINT64_T_HEX_FMT */ @uint64_t_hex_fmt@ /* * Ensure we work with universal binaries on Darwin */ #ifdef DARWIN_10 #undef APR_HAS_LARGE_FILES #undef APR_SIZEOF_VOIDP #undef APR_INT64_T_FMT #undef APR_UINT64_T_FMT #undef APR_UINT64_T_HEX_FMT #ifdef __LP64__ #define APR_HAS_LARGE_FILES 0 #define APR_SIZEOF_VOIDP 8 #define APR_INT64_T_FMT "ld" #define APR_UINT64_T_FMT "lu" #define APR_UINT64_T_HEX_FMT "lx" #else #define APR_HAS_LARGE_FILES 1 #define APR_SIZEOF_VOIDP 4 #define APR_INT64_T_FMT "lld" #define APR_UINT64_T_FMT "llu" #define APR_UINT64_T_HEX_FMT "llx" #endif #undef APR_IS_BIGENDIAN #ifdef __BIG_ENDIAN__ #define APR_IS_BIGENDIAN 1 #else #define APR_IS_BIGENDIAN 0 #endif #undef APR_OFF_T_FMT #define APR_OFF_T_FMT "lld" #endif /* DARWIN_10 */ /* Does the proc mutex lock threads too */ #define APR_PROC_MUTEX_IS_GLOBAL @proc_mutex_is_global@ /* Local machine definition for console and log output. */ #define APR_EOL_STR "@eolstr@" #if APR_HAVE_SYS_WAIT_H #ifdef WEXITSTATUS #define apr_wait_t int #else #define apr_wait_t union wait #define WEXITSTATUS(status) (int)((status).w_retcode) #define WTERMSIG(status) (int)((status).w_termsig) #endif /* !WEXITSTATUS */ #elif defined(__MINGW32__) typedef int apr_wait_t; #endif /* HAVE_SYS_WAIT_H */ #if defined(PATH_MAX) #define APR_PATH_MAX PATH_MAX #elif defined(_POSIX_PATH_MAX) #define APR_PATH_MAX _POSIX_PATH_MAX #else #error no decision has been made on APR_PATH_MAX for your platform #endif #define APR_DSOPATH "@shlibpath_var@" /** @} */ /* Definitions that only Win32 programs need to compile properly. */ /* XXX These simply don't belong here, perhaps in apr_portable.h * based on some APR_HAVE_PID/GID/UID? */ #ifdef __MINGW32__ #ifndef __GNUC__ typedef int pid_t; #endif typedef int uid_t; typedef int gid_t; #endif #ifdef __cplusplus } #endif #endif /* APR_H */