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 18#ifndef APR_H 19#define APR_H 20 21/* GENERATED FILE WARNING! DO NOT EDIT apr.h 22 * 23 * You must modify apr.h.in instead. 24 * 25 * And please, make an effort to stub apr.hw and apr.hnw in the process. 26 */ 27 28/** 29 * @file apr.h 30 * @brief APR Platform Definitions 31 * @remark This is a generated header generated from include/apr.h.in by 32 * ./configure, or copied from include/apr.hw or include/apr.hnw 33 * for Win32 or Netware by those build environments, respectively. 34 */ 35 36/** 37 * @defgroup APR Apache Portability Runtime library 38 * @{ 39 */ 40/** 41 * @defgroup apr_platform Platform Definitions 42 * @{ 43 * @warning 44 * <strong><em>The actual values of macros and typedefs on this page<br> 45 * are platform specific and should NOT be relied upon!</em></strong> 46 */ 47 48/* So that we can use inline on some critical functions, and use 49 * GNUC attributes (such as to get -Wall warnings for printf-like 50 * functions). Only do this in gcc 2.7 or later ... it may work 51 * on earlier stuff, but why chance it. 52 * 53 * We've since discovered that the gcc shipped with NeXT systems 54 * as "cc" is completely broken. It claims to be __GNUC__ and so 55 * on, but it doesn't implement half of the things that __GNUC__ 56 * means. In particular it's missing inline and the __attribute__ 57 * stuff. So we hack around it. PR#1613. -djg 58 */ 59#if !defined(__GNUC__) || __GNUC__ < 2 || \ 60 (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\ 61 defined(NEXT) 62#ifndef __attribute__ 63#define __attribute__(__x) 64#endif 65#define APR_INLINE 66#define APR_HAS_INLINE 0 67#else 68#define APR_INLINE __inline__ 69#define APR_HAS_INLINE 1 70#endif 71 72#define APR_HAVE_ARPA_INET_H @arpa_ineth@ 73#define APR_HAVE_CONIO_H @conioh@ 74#define APR_HAVE_CRYPT_H @crypth@ 75#define APR_HAVE_CTYPE_H @ctypeh@ 76#define APR_HAVE_DIRENT_H @direnth@ 77#define APR_HAVE_ERRNO_H @errnoh@ 78#define APR_HAVE_FCNTL_H @fcntlh@ 79#define APR_HAVE_IO_H @ioh@ 80#define APR_HAVE_LIMITS_H @limitsh@ 81#define APR_HAVE_NETDB_H @netdbh@ 82#define APR_HAVE_NETINET_IN_H @netinet_inh@ 83#define APR_HAVE_NETINET_SCTP_H @netinet_sctph@ 84#define APR_HAVE_NETINET_SCTP_UIO_H @netinet_sctp_uioh@ 85#define APR_HAVE_NETINET_TCP_H @netinet_tcph@ 86#define APR_HAVE_PROCESS_H @processh@ 87#define APR_HAVE_PTHREAD_H @pthreadh@ 88#define APR_HAVE_SEMAPHORE_H @semaphoreh@ 89#define APR_HAVE_SIGNAL_H @signalh@ 90#define APR_HAVE_STDARG_H @stdargh@ 91#define APR_HAVE_STDINT_H @stdint@ 92#define APR_HAVE_STDIO_H @stdioh@ 93#define APR_HAVE_STDLIB_H @stdlibh@ 94#define APR_HAVE_STRING_H @stringh@ 95#define APR_HAVE_STRINGS_H @stringsh@ 96#define APR_HAVE_SYS_IOCTL_H @sys_ioctlh@ 97#define APR_HAVE_SYS_SENDFILE_H @sys_sendfileh@ 98#define APR_HAVE_SYS_SIGNAL_H @sys_signalh@ 99#define APR_HAVE_SYS_SOCKET_H @sys_socketh@ 100#define APR_HAVE_SYS_SOCKIO_H @sys_sockioh@ 101#define APR_HAVE_SYS_SYSLIMITS_H @sys_syslimitsh@ 102#define APR_HAVE_SYS_TIME_H @sys_timeh@ 103#define APR_HAVE_SYS_TYPES_H @sys_typesh@ 104#define APR_HAVE_SYS_UIO_H @sys_uioh@ 105#define APR_HAVE_SYS_UN_H @sys_unh@ 106#define APR_HAVE_SYS_WAIT_H @sys_waith@ 107#define APR_HAVE_TIME_H @timeh@ 108#define APR_HAVE_UNISTD_H @unistdh@ 109#define APR_HAVE_WINDOWS_H @windowsh@ 110#define APR_HAVE_WINSOCK2_H @winsock2h@ 111 112/** @} */ 113/** @} */ 114 115/* We don't include our conditional headers within the doxyblocks 116 * or the extern "C" namespace 117 */ 118 119#if APR_HAVE_WINDOWS_H 120/* If windows.h was already included, our preferences don't matter. 121 * If not, include a restricted set of windows headers to our tastes. 122 */ 123#ifndef _WINDOWS_ 124 125#ifndef WIN32_LEAN_AND_MEAN 126#define WIN32_LEAN_AND_MEAN 127#endif 128 129#ifndef _WIN32_WINNT 130/* Restrict the server to a subset of Windows XP header files by default 131 */ 132#define _WIN32_WINNT 0x0501 133#endif 134 135#ifndef NOUSER 136#define NOUSER 137#endif 138#ifndef NOMCX 139#define NOMCX 140#endif 141#ifndef NOIME 142#define NOIME 143#endif 144 145#include <windows.h> 146/* 147 * Add a _very_few_ declarations missing from the restricted set of headers 148 * (If this list becomes extensive, re-enable the required headers above!) 149 * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now 150 */ 151#define SW_HIDE 0 152#ifndef _WIN32_WCE 153#include <winsock2.h> 154#include <ws2tcpip.h> 155#include <mswsock.h> 156#else 157#include <winsock.h> 158#endif 159 160#endif /* ndef _WINDOWS_ */ 161#endif /* APR_HAVE_WINDOWS_H */ 162 163#if APR_HAVE_SYS_TYPES_H 164#include <sys/types.h> 165#endif 166 167#if APR_HAVE_SYS_SOCKET_H 168#include <sys/socket.h> 169#endif 170 171#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) 172/* C99 7.18.4 requires that stdint.h only exposes INT64_C 173 * and UINT64_C for C++ implementations if this is defined: */ 174#define __STDC_CONSTANT_MACROS 175#endif 176 177#if APR_HAVE_STDINT_H 178#include <stdint.h> 179#endif 180 181#if APR_HAVE_SYS_WAIT_H 182#include <sys/wait.h> 183#endif 184 185#ifdef OS2 186#define INCL_DOS 187#define INCL_DOSERRORS 188#include <os2.h> 189#endif 190 191/* header files for PATH_MAX, _POSIX_PATH_MAX */ 192#if APR_HAVE_LIMITS_H 193#include <limits.h> 194#else 195#if APR_HAVE_SYS_SYSLIMITS_H 196#include <sys/syslimits.h> 197#endif 198#endif 199 200 201#ifdef __cplusplus 202extern "C" { 203#endif 204 205/** 206 * @addtogroup apr_platform 207 * @ingroup APR 208 * @{ 209 */ 210 211#define APR_HAVE_SHMEM_MMAP_TMP @havemmaptmp@ 212#define APR_HAVE_SHMEM_MMAP_SHM @havemmapshm@ 213#define APR_HAVE_SHMEM_MMAP_ZERO @havemmapzero@ 214#define APR_HAVE_SHMEM_SHMGET_ANON @haveshmgetanon@ 215#define APR_HAVE_SHMEM_SHMGET @haveshmget@ 216#define APR_HAVE_SHMEM_MMAP_ANON @havemmapanon@ 217#define APR_HAVE_SHMEM_BEOS @havebeosarea@ 218 219#define APR_USE_SHMEM_MMAP_TMP @usemmaptmp@ 220#define APR_USE_SHMEM_MMAP_SHM @usemmapshm@ 221#define APR_USE_SHMEM_MMAP_ZERO @usemmapzero@ 222#define APR_USE_SHMEM_SHMGET_ANON @useshmgetanon@ 223#define APR_USE_SHMEM_SHMGET @useshmget@ 224#define APR_USE_SHMEM_MMAP_ANON @usemmapanon@ 225#define APR_USE_SHMEM_BEOS @usebeosarea@ 226 227#define APR_USE_FLOCK_SERIALIZE @flockser@ 228#define APR_USE_SYSVSEM_SERIALIZE @sysvser@ 229#define APR_USE_POSIXSEM_SERIALIZE @posixser@ 230#define APR_USE_FCNTL_SERIALIZE @fcntlser@ 231#define APR_USE_PROC_PTHREAD_SERIALIZE @procpthreadser@ 232#define APR_USE_PTHREAD_SERIALIZE @pthreadser@ 233 234#define APR_HAS_FLOCK_SERIALIZE @hasflockser@ 235#define APR_HAS_SYSVSEM_SERIALIZE @hassysvser@ 236#define APR_HAS_POSIXSEM_SERIALIZE @hasposixser@ 237#define APR_HAS_FCNTL_SERIALIZE @hasfcntlser@ 238#define APR_HAS_PROC_PTHREAD_SERIALIZE @hasprocpthreadser@ 239 240#define APR_PROCESS_LOCK_IS_GLOBAL @proclockglobal@ 241 242#define APR_HAVE_CORKABLE_TCP @have_corkable_tcp@ 243#define APR_HAVE_GETRLIMIT @have_getrlimit@ 244#define APR_HAVE_IN_ADDR @have_in_addr@ 245#define APR_HAVE_INET_ADDR @have_inet_addr@ 246#define APR_HAVE_INET_NETWORK @have_inet_network@ 247#define APR_HAVE_IPV6 @have_ipv6@ 248#define APR_HAVE_MEMMOVE @have_memmove@ 249#define APR_HAVE_SETRLIMIT @have_setrlimit@ 250#define APR_HAVE_SIGACTION @have_sigaction@ 251#define APR_HAVE_SIGSUSPEND @have_sigsuspend@ 252#define APR_HAVE_SIGWAIT @have_sigwait@ 253#define APR_HAVE_SA_STORAGE @have_sa_storage@ 254#define APR_HAVE_STRCASECMP @have_strcasecmp@ 255#define APR_HAVE_STRDUP @have_strdup@ 256#define APR_HAVE_STRICMP @have_stricmp@ 257#define APR_HAVE_STRNCASECMP @have_strncasecmp@ 258#define APR_HAVE_STRNICMP @have_strnicmp@ 259#define APR_HAVE_STRSTR @have_strstr@ 260#define APR_HAVE_MEMCHR @have_memchr@ 261#define APR_HAVE_STRUCT_RLIMIT @struct_rlimit@ 262#define APR_HAVE_UNION_SEMUN @have_union_semun@ 263#define APR_HAVE_SCTP @have_sctp@ 264#define APR_HAVE_IOVEC @have_iovec@ 265 266/* APR Feature Macros */ 267#define APR_HAS_SHARED_MEMORY @sharedmem@ 268#define APR_HAS_THREADS @threads@ 269#define APR_HAS_SENDFILE @sendfile@ 270#define APR_HAS_MMAP @mmap@ 271#define APR_HAS_FORK @fork@ 272#define APR_HAS_RANDOM @rand@ 273#define APR_HAS_OTHER_CHILD @oc@ 274#define APR_HAS_DSO @aprdso@ 275#define APR_HAS_SO_ACCEPTFILTER @acceptfilter@ 276#define APR_HAS_UNICODE_FS @have_unicode_fs@ 277#define APR_HAS_PROC_INVOKED @have_proc_invoked@ 278#define APR_HAS_USER @apr_has_user@ 279#define APR_HAS_LARGE_FILES @aprlfs@ 280#define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@ 281#define APR_HAS_OS_UUID @osuuid@ 282 283#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD @apr_procattr_user_set_requires_password@ 284 285/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible 286 * to poll on files/pipes. 287 */ 288#define APR_FILES_AS_SOCKETS @file_as_socket@ 289 290/* This macro indicates whether or not EBCDIC is the native character set. 291 */ 292#define APR_CHARSET_EBCDIC @apr_charset_ebcdic@ 293 294/* If we have a TCP implementation that can be "corked", what flag 295 * do we use? 296 */ 297#define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ 298 299/* Is the TCP_NODELAY socket option inherited from listening sockets? 300*/ 301#define APR_TCP_NODELAY_INHERITED @tcp_nodelay_inherited@ 302 303/* Is the O_NONBLOCK flag inherited from listening sockets? 304*/ 305#define APR_O_NONBLOCK_INHERITED @o_nonblock_inherited@ 306 307/* Typedefs that APR needs. */ 308 309typedef unsigned char apr_byte_t; 310 311typedef @short_value@ apr_int16_t; 312typedef unsigned @short_value@ apr_uint16_t; 313 314typedef @int_value@ apr_int32_t; 315typedef unsigned @int_value@ apr_uint32_t; 316 317#define APR_SIZEOF_VOIDP @voidp_size@ 318 319 typedef @long_value@ apr_int64_t; 320 typedef unsigned @long_value@ apr_uint64_t; 321 322typedef @size_t_value@ apr_size_t; 323typedef @ssize_t_value@ apr_ssize_t; 324typedef @off_t_value@ apr_off_t; 325typedef @socklen_t_value@ apr_socklen_t; 326typedef @ino_t_value@ apr_ino_t; 327 328#if APR_SIZEOF_VOIDP == 8 329typedef apr_uint64_t apr_uintptr_t; 330#else 331typedef apr_uint32_t apr_uintptr_t; 332#endif 333 334/* Are we big endian? */ 335#define APR_IS_BIGENDIAN @bigendian@ 336 337/* Mechanisms to properly type numeric literals */ 338@int64_literal@ 339@uint64_literal@ 340 341#ifdef INT16_MIN 342#define APR_INT16_MIN INT16_MIN 343#else 344#define APR_INT16_MIN (-0x7fff - 1) 345#endif 346 347#ifdef INT16_MAX 348#define APR_INT16_MAX INT16_MAX 349#else 350#define APR_INT16_MAX (0x7fff) 351#endif 352 353#ifdef UINT16_MAX 354#define APR_UINT16_MAX UINT16_MAX 355#else 356#define APR_UINT16_MAX (0xffff) 357#endif 358 359#ifdef INT32_MIN 360#define APR_INT32_MIN INT32_MIN 361#else 362#define APR_INT32_MIN (-0x7fffffff - 1) 363#endif 364 365#ifdef INT32_MAX 366#define APR_INT32_MAX INT32_MAX 367#else 368#define APR_INT32_MAX 0x7fffffff 369#endif 370 371#ifdef UINT32_MAX 372#define APR_UINT32_MAX UINT32_MAX 373#else 374#define APR_UINT32_MAX (0xffffffffU) 375#endif 376 377#ifdef INT64_MIN 378#define APR_INT64_MIN INT64_MIN 379#else 380#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 381#endif 382 383#ifdef INT64_MAX 384#define APR_INT64_MAX INT64_MAX 385#else 386#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 387#endif 388 389#ifdef UINT64_MAX 390#define APR_UINT64_MAX UINT64_MAX 391#else 392#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 393#endif 394 395#define APR_SIZE_MAX (~((apr_size_t)0)) 396 397 398/* Definitions that APR programs need to work properly. */ 399 400/** 401 * APR public API wrap for C++ compilers. 402 */ 403#ifdef __cplusplus 404#define APR_BEGIN_DECLS extern "C" { 405#define APR_END_DECLS } 406#else 407#define APR_BEGIN_DECLS 408#define APR_END_DECLS 409#endif 410 411/** 412 * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 413 * so that they follow the platform's calling convention. 414 * <PRE> 415 * 416 * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 417 * 418 * </PRE> 419 */ 420#define APR_THREAD_FUNC @apr_thread_func@ 421 422/** 423 * The public APR functions are declared with APR_DECLARE(), so they may 424 * use the most appropriate calling convention. Public APR functions with 425 * variable arguments must use APR_DECLARE_NONSTD(). 426 * 427 * @remark Both the declaration and implementations must use the same macro. 428 * 429 * <PRE> 430 * APR_DECLARE(rettype) apr_func(args) 431 * </PRE> 432 * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 433 * @remark Note that when APR compiles the library itself, it passes the 434 * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 435 * to export public symbols from the dynamic library build.\n 436 * The user must define the APR_DECLARE_STATIC when compiling to target 437 * the static APR library on some platforms (e.g. Win32.) The public symbols 438 * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 439 * By default, compiling an application and including the APR public 440 * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 441 * linked to the dynamic library. 442 */ 443#define APR_DECLARE(type) type 444 445/** 446 * The public APR functions using variable arguments are declared with 447 * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 448 * @see APR_DECLARE @see APR_DECLARE_DATA 449 * @remark Both the declaration and implementations must use the same macro. 450 * <PRE> 451 * 452 * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 453 * 454 * </PRE> 455 */ 456#define APR_DECLARE_NONSTD(type) type 457 458/** 459 * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 460 * This assures the appropriate indirection is invoked at compile time. 461 * @see APR_DECLARE @see APR_DECLARE_NONSTD 462 * @remark Note that the declaration and implementations use different forms, 463 * but both must include the macro. 464 * 465 * <PRE> 466 * 467 * extern APR_DECLARE_DATA type apr_variable;\n 468 * APR_DECLARE_DATA type apr_variable = value; 469 * 470 * </PRE> 471 */ 472#define APR_DECLARE_DATA 473 474/* Define APR_SSIZE_T_FMT. 475 * If ssize_t is an integer we define it to be "d", 476 * if ssize_t is a long int we define it to be "ld", 477 * if ssize_t is neither we declare an error here. 478 * I looked for a better way to define this here, but couldn't find one, so 479 * to find the logic for this definition search for "ssize_t_fmt" in 480 * configure.in. 481 */ 482 483@ssize_t_fmt@ 484 485/* And APR_SIZE_T_FMT */ 486@size_t_fmt@ 487 488/* And APR_OFF_T_FMT */ 489@off_t_fmt@ 490 491/* And APR_PID_T_FMT */ 492@pid_t_fmt@ 493 494/* And APR_INT64_T_FMT */ 495@int64_t_fmt@ 496 497/* And APR_UINT64_T_FMT */ 498@uint64_t_fmt@ 499 500/* And APR_UINT64_T_HEX_FMT */ 501@uint64_t_hex_fmt@ 502 503/* Does the proc mutex lock threads too */ 504#define APR_PROC_MUTEX_IS_GLOBAL @proc_mutex_is_global@ 505 506/* Local machine definition for console and log output. */ 507#define APR_EOL_STR "@eolstr@" 508 509#if APR_HAVE_SYS_WAIT_H 510#ifdef WEXITSTATUS 511#define apr_wait_t int 512#else 513#define apr_wait_t union wait 514#define WEXITSTATUS(status) (int)((status).w_retcode) 515#define WTERMSIG(status) (int)((status).w_termsig) 516#endif /* !WEXITSTATUS */ 517#elif defined(__MINGW32__) 518typedef int apr_wait_t; 519#endif /* HAVE_SYS_WAIT_H */ 520 521#if defined(PATH_MAX) 522#define APR_PATH_MAX PATH_MAX 523#elif defined(_POSIX_PATH_MAX) 524#define APR_PATH_MAX _POSIX_PATH_MAX 525#else 526#error no decision has been made on APR_PATH_MAX for your platform 527#endif 528 529#define APR_DSOPATH "@shlibpath_var@" 530 531/** @} */ 532 533/* Definitions that only Win32 programs need to compile properly. */ 534 535/* XXX These simply don't belong here, perhaps in apr_portable.h 536 * based on some APR_HAVE_PID/GID/UID? 537 */ 538#ifdef __MINGW32__ 539#ifndef __GNUC__ 540typedef int pid_t; 541#endif 542typedef int uid_t; 543typedef int gid_t; 544#endif 545 546#ifdef __cplusplus 547} 548#endif 549 550#endif /* APR_H */ 551