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 && defined(WIN32) 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/* 320 * Darwin 10's default compiler (gcc42) builds for both 64 and 321 * 32 bit architectures unless specifically told not to. 322 * In those cases, we need to override types depending on how 323 * we're being built at compile time. 324 * NOTE: This is an ugly work-around for Darwin's 325 * concept of universal binaries, a single package 326 * (executable, lib, etc...) which contains both 32 327 * and 64 bit versions. The issue is that if APR is 328 * built universally, if something else is compiled 329 * against it, some bit sizes will depend on whether 330 * it is 32 or 64 bit. This is determined by the __LP64__ 331 * flag. Since we need to support both, we have to 332 * handle OS X unqiuely. 333 */ 334#ifdef DARWIN_10 335#undef APR_SIZEOF_VOIDP 336#undef INT64_C 337#undef UINT64_C 338#ifdef __LP64__ 339 typedef long apr_int64_t; 340 typedef unsigned long apr_uint64_t; 341 #define APR_SIZEOF_VOIDP 8 342 #define INT64_C(v) (v ## L) 343 #define UINT64_C(v) (v ## UL) 344#else 345 typedef long long apr_int64_t; 346 typedef unsigned long long apr_uint64_t; 347 #define APR_SIZEOF_VOIDP 4 348 #define INT64_C(v) (v ## LL) 349 #define UINT64_C(v) (v ## ULL) 350#endif 351#else 352 typedef @long_value@ apr_int64_t; 353 typedef unsigned @long_value@ apr_uint64_t; 354#endif 355 356typedef @size_t_value@ apr_size_t; 357typedef @ssize_t_value@ apr_ssize_t; 358typedef @off_t_value@ apr_off_t; 359typedef @socklen_t_value@ apr_socklen_t; 360typedef @ino_t_value@ apr_ino_t; 361 362#if APR_SIZEOF_VOIDP == 8 363typedef apr_uint64_t apr_uintptr_t; 364#else 365typedef apr_uint32_t apr_uintptr_t; 366#endif 367 368/* Are we big endian? */ 369#define APR_IS_BIGENDIAN @bigendian@ 370 371/* Mechanisms to properly type numeric literals */ 372@int64_literal@ 373@uint64_literal@ 374 375#ifdef INT16_MIN 376#define APR_INT16_MIN INT16_MIN 377#else 378#define APR_INT16_MIN (-0x7fff - 1) 379#endif 380 381#ifdef INT16_MAX 382#define APR_INT16_MAX INT16_MAX 383#else 384#define APR_INT16_MAX (0x7fff) 385#endif 386 387#ifdef UINT16_MAX 388#define APR_UINT16_MAX UINT16_MAX 389#else 390#define APR_UINT16_MAX (0xffff) 391#endif 392 393#ifdef INT32_MIN 394#define APR_INT32_MIN INT32_MIN 395#else 396#define APR_INT32_MIN (-0x7fffffff - 1) 397#endif 398 399#ifdef INT32_MAX 400#define APR_INT32_MAX INT32_MAX 401#else 402#define APR_INT32_MAX 0x7fffffff 403#endif 404 405#ifdef UINT32_MAX 406#define APR_UINT32_MAX UINT32_MAX 407#else 408#define APR_UINT32_MAX (0xffffffffU) 409#endif 410 411#ifdef INT64_MIN 412#define APR_INT64_MIN INT64_MIN 413#else 414#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 415#endif 416 417#ifdef INT64_MAX 418#define APR_INT64_MAX INT64_MAX 419#else 420#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 421#endif 422 423#ifdef UINT64_MAX 424#define APR_UINT64_MAX UINT64_MAX 425#else 426#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 427#endif 428 429#define APR_SIZE_MAX (~((apr_size_t)0)) 430 431 432/* Definitions that APR programs need to work properly. */ 433 434/** 435 * APR public API wrap for C++ compilers. 436 */ 437#ifdef __cplusplus 438#define APR_BEGIN_DECLS extern "C" { 439#define APR_END_DECLS } 440#else 441#define APR_BEGIN_DECLS 442#define APR_END_DECLS 443#endif 444 445/** 446 * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 447 * so that they follow the platform's calling convention. 448 * <PRE> 449 * 450 * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 451 * 452 * </PRE> 453 */ 454#define APR_THREAD_FUNC @apr_thread_func@ 455 456#if defined(DOXYGEN) || !defined(WIN32) 457 458/** 459 * The public APR functions are declared with APR_DECLARE(), so they may 460 * use the most appropriate calling convention. Public APR functions with 461 * variable arguments must use APR_DECLARE_NONSTD(). 462 * 463 * @remark Both the declaration and implementations must use the same macro. 464 * 465 * <PRE> 466 * APR_DECLARE(rettype) apr_func(args) 467 * </PRE> 468 * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 469 * @remark Note that when APR compiles the library itself, it passes the 470 * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 471 * to export public symbols from the dynamic library build.\n 472 * The user must define the APR_DECLARE_STATIC when compiling to target 473 * the static APR library on some platforms (e.g. Win32.) The public symbols 474 * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 475 * By default, compiling an application and including the APR public 476 * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 477 * linked to the dynamic library. 478 */ 479#define APR_DECLARE(type) type 480 481/** 482 * The public APR functions using variable arguments are declared with 483 * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 484 * @see APR_DECLARE @see APR_DECLARE_DATA 485 * @remark Both the declaration and implementations must use the same macro. 486 * <PRE> 487 * 488 * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 489 * 490 * </PRE> 491 */ 492#define APR_DECLARE_NONSTD(type) type 493 494/** 495 * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 496 * This assures the appropriate indirection is invoked at compile time. 497 * @see APR_DECLARE @see APR_DECLARE_NONSTD 498 * @remark Note that the declaration and implementations use different forms, 499 * but both must include the macro. 500 * 501 * <PRE> 502 * 503 * extern APR_DECLARE_DATA type apr_variable;\n 504 * APR_DECLARE_DATA type apr_variable = value; 505 * 506 * </PRE> 507 */ 508#define APR_DECLARE_DATA 509 510#elif defined(APR_DECLARE_STATIC) 511#define APR_DECLARE(type) type __stdcall 512#define APR_DECLARE_NONSTD(type) type __cdecl 513#define APR_DECLARE_DATA 514#elif defined(APR_DECLARE_EXPORT) 515#define APR_DECLARE(type) __declspec(dllexport) type __stdcall 516#define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl 517#define APR_DECLARE_DATA __declspec(dllexport) 518#else 519#define APR_DECLARE(type) __declspec(dllimport) type __stdcall 520#define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl 521#define APR_DECLARE_DATA __declspec(dllimport) 522#endif 523 524/* Define APR_SSIZE_T_FMT. 525 * If ssize_t is an integer we define it to be "d", 526 * if ssize_t is a long int we define it to be "ld", 527 * if ssize_t is neither we declare an error here. 528 * I looked for a better way to define this here, but couldn't find one, so 529 * to find the logic for this definition search for "ssize_t_fmt" in 530 * configure.in. 531 */ 532 533@ssize_t_fmt@ 534 535/* And APR_SIZE_T_FMT */ 536@size_t_fmt@ 537 538/* And APR_OFF_T_FMT */ 539@off_t_fmt@ 540 541/* And APR_PID_T_FMT */ 542@pid_t_fmt@ 543 544/* And APR_INT64_T_FMT */ 545@int64_t_fmt@ 546 547/* And APR_UINT64_T_FMT */ 548@uint64_t_fmt@ 549 550/* And APR_UINT64_T_HEX_FMT */ 551@uint64_t_hex_fmt@ 552 553/* 554 * Ensure we work with universal binaries on Darwin 555 */ 556#ifdef DARWIN_10 557 558#undef APR_HAS_LARGE_FILES 559#undef APR_SIZEOF_VOIDP 560#undef APR_INT64_T_FMT 561#undef APR_UINT64_T_FMT 562#undef APR_UINT64_T_HEX_FMT 563 564#ifdef __LP64__ 565 #define APR_HAS_LARGE_FILES 0 566 #define APR_SIZEOF_VOIDP 8 567 #define APR_INT64_T_FMT "ld" 568 #define APR_UINT64_T_FMT "lu" 569 #define APR_UINT64_T_HEX_FMT "lx" 570#else 571 #define APR_HAS_LARGE_FILES 1 572 #define APR_SIZEOF_VOIDP 4 573 #define APR_INT64_T_FMT "lld" 574 #define APR_UINT64_T_FMT "llu" 575 #define APR_UINT64_T_HEX_FMT "llx" 576#endif 577 578#undef APR_IS_BIGENDIAN 579#ifdef __BIG_ENDIAN__ 580 #define APR_IS_BIGENDIAN 1 581#else 582 #define APR_IS_BIGENDIAN 0 583#endif 584 585#undef APR_OFF_T_FMT 586#define APR_OFF_T_FMT "lld" 587 588#endif /* DARWIN_10 */ 589 590/* Does the proc mutex lock threads too */ 591#define APR_PROC_MUTEX_IS_GLOBAL @proc_mutex_is_global@ 592 593/* Local machine definition for console and log output. */ 594#define APR_EOL_STR "@eolstr@" 595 596#if APR_HAVE_SYS_WAIT_H 597#ifdef WEXITSTATUS 598#define apr_wait_t int 599#else 600#define apr_wait_t union wait 601#define WEXITSTATUS(status) (int)((status).w_retcode) 602#define WTERMSIG(status) (int)((status).w_termsig) 603#endif /* !WEXITSTATUS */ 604#elif defined(__MINGW32__) 605typedef int apr_wait_t; 606#endif /* HAVE_SYS_WAIT_H */ 607 608#if defined(PATH_MAX) 609#define APR_PATH_MAX PATH_MAX 610#elif defined(_POSIX_PATH_MAX) 611#define APR_PATH_MAX _POSIX_PATH_MAX 612#else 613#error no decision has been made on APR_PATH_MAX for your platform 614#endif 615 616#define APR_DSOPATH "@shlibpath_var@" 617 618/** @} */ 619 620/* Definitions that only Win32 programs need to compile properly. */ 621 622/* XXX These simply don't belong here, perhaps in apr_portable.h 623 * based on some APR_HAVE_PID/GID/UID? 624 */ 625#ifdef __MINGW32__ 626#ifndef __GNUC__ 627typedef int pid_t; 628#endif 629typedef int uid_t; 630typedef int gid_t; 631#endif 632 633#ifdef __cplusplus 634} 635#endif 636 637#endif /* APR_H */ 638