1251875Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2251875Speter * contributor license agreements. See the NOTICE file distributed with 3251875Speter * this work for additional information regarding copyright ownership. 4251875Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5251875Speter * (the "License"); you may not use this file except in compliance with 6251875Speter * the License. You may obtain a copy of the License at 7251875Speter * 8251875Speter * http://www.apache.org/licenses/LICENSE-2.0 9251875Speter * 10251875Speter * Unless required by applicable law or agreed to in writing, software 11251875Speter * distributed under the License is distributed on an "AS IS" BASIS, 12251875Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13251875Speter * See the License for the specific language governing permissions and 14251875Speter * limitations under the License. 15251875Speter */ 16251875Speter 17251875Speter 18251875Speter#ifndef APR_H 19251875Speter#define APR_H 20251875Speter 21251875Speter/* GENERATED FILE WARNING! DO NOT EDIT apr.h 22251875Speter * 23251875Speter * You must modify apr.hw instead. 24251875Speter * 25251875Speter * And please, make an effort to stub apr.hnw and apr.h.in in the process. 26251875Speter * 27251875Speter * This is the Win32 specific version of apr.h. It is copied from 28362181Sdim * apr.hw by the apr.dsp and libapr.dsp projects. 29251875Speter */ 30251875Speter 31251875Speter/** 32251875Speter * @file apr.h 33251875Speter * @brief APR Platform Definitions 34251875Speter * @remark This is a generated header generated from include/apr.h.in by 35251875Speter * ./configure, or copied from include/apr.hw or include/apr.hnw 36251875Speter * for Win32 or Netware by those build environments, respectively. 37251875Speter */ 38251875Speter 39253734Speter/* Make sure we have our platform identifier macro defined we ask for later. 40253734Speter */ 41253734Speter#if defined(_WIN32) && !defined(WIN32) 42253734Speter#define WIN32 1 43253734Speter#endif 44253734Speter 45251875Speter#if defined(WIN32) || defined(DOXYGEN) 46251875Speter 47251875Speter/* Ignore most warnings (back down to /W3) for poorly constructed headers 48251875Speter */ 49251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 50251875Speter#pragma warning(push, 3) 51251875Speter#endif 52251875Speter 53251875Speter/* disable or reduce the frequency of... 54251875Speter * C4057: indirection to slightly different base types 55251875Speter * C4075: slight indirection changes (unsigned short* vs short[]) 56251875Speter * C4100: unreferenced formal parameter 57251875Speter * C4127: conditional expression is constant 58251875Speter * C4163: '_rotl64' : not available as an intrinsic function 59251875Speter * C4201: nonstandard extension nameless struct/unions 60251875Speter * C4244: int to char/short - precision loss 61251875Speter * C4514: unreferenced inline function removed 62251875Speter */ 63362181Sdim#if defined(_MSC_VER) 64251875Speter#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244) 65362181Sdim#endif 66251875Speter 67251875Speter/* Ignore Microsoft's interpretation of secure development 68251875Speter * and the POSIX string handling API 69251875Speter */ 70251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1400 71251875Speter#ifndef _CRT_SECURE_NO_DEPRECATE 72251875Speter#define _CRT_SECURE_NO_DEPRECATE 73251875Speter#endif 74251875Speter#pragma warning(disable: 4996) 75251875Speter#endif 76251875Speter 77251875Speter/* Has windows.h already been included? If so, our preferences don't matter, 78251875Speter * but we will still need the winsock things no matter what was included. 79251875Speter * If not, include a restricted set of windows headers to our tastes. 80251875Speter */ 81251875Speter#ifndef _WINDOWS_ 82251875Speter#ifndef WIN32_LEAN_AND_MEAN 83251875Speter#define WIN32_LEAN_AND_MEAN 84251875Speter#endif 85251875Speter#ifndef _WIN32_WINNT 86251875Speter 87251875Speter/* Restrict the server to a subset of Windows XP header files by default 88251875Speter */ 89251875Speter#define _WIN32_WINNT 0x0501 90251875Speter#endif 91251875Speter#ifndef NOUSER 92251875Speter#define NOUSER 93251875Speter#endif 94251875Speter#ifndef NOMCX 95251875Speter#define NOMCX 96251875Speter#endif 97251875Speter#ifndef NOIME 98251875Speter#define NOIME 99251875Speter#endif 100251875Speter#include <windows.h> 101251875Speter/* 102251875Speter * Add a _very_few_ declarations missing from the restricted set of headers 103251875Speter * (If this list becomes extensive, re-enable the required headers above!) 104251875Speter * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now 105251875Speter */ 106251875Speter#define SW_HIDE 0 107251875Speter#ifndef _WIN32_WCE 108251875Speter#include <winsock2.h> 109251875Speter#include <ws2tcpip.h> 110251875Speter#include <mswsock.h> 111251875Speter#else 112251875Speter#include <winsock.h> 113251875Speter#endif 114251875Speter#endif /* !_WINDOWS_ */ 115251875Speter 116251875Speter/** 117251875Speter * @defgroup APR Apache Portability Runtime library 118251875Speter * @{ 119251875Speter */ 120251875Speter/** 121251875Speter * @defgroup apr_platform Platform Definitions 122251875Speter * @{ 123251875Speter * @warning 124251875Speter * <strong><em>The actual values of macros and typedefs on this page<br> 125251875Speter * are platform specific and should NOT be relied upon!</em></strong> 126251875Speter */ 127251875Speter 128251875Speter#define APR_INLINE __inline 129251875Speter#define APR_HAS_INLINE 1 130251875Speter#if !defined(__GNUC__) && !defined(__attribute__) 131251875Speter#define __attribute__(__x) 132251875Speter#endif 133251875Speter 134251875Speter#ifndef _WIN32_WCE 135251875Speter#define APR_HAVE_ARPA_INET_H 0 136251875Speter#define APR_HAVE_CONIO_H 1 137251875Speter#define APR_HAVE_CRYPT_H 0 138251875Speter#define APR_HAVE_CTYPE_H 1 139251875Speter#define APR_HAVE_DIRENT_H 0 140251875Speter#define APR_HAVE_ERRNO_H 1 141251875Speter#define APR_HAVE_FCNTL_H 1 142251875Speter#define APR_HAVE_IO_H 1 143251875Speter#define APR_HAVE_LIMITS_H 1 144251875Speter#define APR_HAVE_NETDB_H 0 145251875Speter#define APR_HAVE_NETINET_IN_H 0 146251875Speter#define APR_HAVE_NETINET_SCTP_H 0 147251875Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 148251875Speter#define APR_HAVE_NETINET_TCP_H 0 149251875Speter#define APR_HAVE_PTHREAD_H 0 150251875Speter#define APR_HAVE_SEMAPHORE_H 0 151251875Speter#define APR_HAVE_SIGNAL_H 1 152251875Speter#define APR_HAVE_STDARG_H 1 153251875Speter#define APR_HAVE_STDINT_H 0 154251875Speter#define APR_HAVE_STDIO_H 1 155251875Speter#define APR_HAVE_STDLIB_H 1 156251875Speter#define APR_HAVE_STRING_H 1 157251875Speter#define APR_HAVE_STRINGS_H 0 158251875Speter#define APR_HAVE_SYS_IOCTL_H 0 159251875Speter#define APR_HAVE_SYS_SENDFILE_H 0 160251875Speter#define APR_HAVE_SYS_SIGNAL_H 0 161251875Speter#define APR_HAVE_SYS_SOCKET_H 0 162251875Speter#define APR_HAVE_SYS_SOCKIO_H 0 163251875Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 164251875Speter#define APR_HAVE_SYS_TIME_H 0 165251875Speter#define APR_HAVE_SYS_TYPES_H 1 166251875Speter#define APR_HAVE_SYS_UIO_H 0 167251875Speter#define APR_HAVE_SYS_UN_H 0 168251875Speter#define APR_HAVE_SYS_WAIT_H 0 169251875Speter#define APR_HAVE_TIME_H 1 170251875Speter#define APR_HAVE_UNISTD_H 0 171251875Speter#define APR_HAVE_STDDEF_H 1 172251875Speter#define APR_HAVE_PROCESS_H 1 173251875Speter#else 174251875Speter#define APR_HAVE_ARPA_INET_H 0 175251875Speter#define APR_HAVE_CONIO_H 0 176251875Speter#define APR_HAVE_CRYPT_H 0 177251875Speter#define APR_HAVE_CTYPE_H 0 178251875Speter#define APR_HAVE_DIRENT_H 0 179251875Speter#define APR_HAVE_ERRNO_H 0 180251875Speter#define APR_HAVE_FCNTL_H 0 181251875Speter#define APR_HAVE_IO_H 0 182251875Speter#define APR_HAVE_LIMITS_H 0 183251875Speter#define APR_HAVE_NETDB_H 0 184251875Speter#define APR_HAVE_NETINET_IN_H 0 185251875Speter#define APR_HAVE_NETINET_SCTP_H 0 186251875Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 187251875Speter#define APR_HAVE_NETINET_TCP_H 0 188251875Speter#define APR_HAVE_PTHREAD_H 0 189251875Speter#define APR_HAVE_SEMAPHORE_H 0 190251875Speter#define APR_HAVE_SIGNAL_H 0 191251875Speter#define APR_HAVE_STDARG_H 0 192251875Speter#define APR_HAVE_STDINT_H 0 193251875Speter#define APR_HAVE_STDIO_H 1 194251875Speter#define APR_HAVE_STDLIB_H 1 195251875Speter#define APR_HAVE_STRING_H 1 196251875Speter#define APR_HAVE_STRINGS_H 0 197251875Speter#define APR_HAVE_SYS_IOCTL_H 0 198251875Speter#define APR_HAVE_SYS_SENDFILE_H 0 199251875Speter#define APR_HAVE_SYS_SIGNAL_H 0 200251875Speter#define APR_HAVE_SYS_SOCKET_H 0 201251875Speter#define APR_HAVE_SYS_SOCKIO_H 0 202251875Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 203251875Speter#define APR_HAVE_SYS_TIME_H 0 204251875Speter#define APR_HAVE_SYS_TYPES_H 0 205251875Speter#define APR_HAVE_SYS_UIO_H 0 206251875Speter#define APR_HAVE_SYS_UN_H 0 207251875Speter#define APR_HAVE_SYS_WAIT_H 0 208251875Speter#define APR_HAVE_TIME_H 0 209251875Speter#define APR_HAVE_UNISTD_H 0 210251875Speter#define APR_HAVE_STDDEF_H 0 211251875Speter#define APR_HAVE_PROCESS_H 0 212251875Speter#endif 213251875Speter 214251875Speter/** @} */ 215251875Speter/** @} */ 216251875Speter 217362181Sdim/* We don't include our conditional headers within the doxyblocks 218362181Sdim * or the extern "C" namespace 219251875Speter */ 220251875Speter 221251875Speter#if APR_HAVE_STDLIB_H 222251875Speter#include <stdlib.h> 223251875Speter#endif 224362181Sdim 225251875Speter#if APR_HAVE_STDIO_H 226251875Speter#include <stdio.h> 227251875Speter#endif 228362181Sdim 229251875Speter#if APR_HAVE_SYS_TYPES_H 230251875Speter#include <sys/types.h> 231251875Speter#endif 232362181Sdim 233251875Speter#if APR_HAVE_STDDEF_H 234251875Speter#include <stddef.h> 235251875Speter#endif 236362181Sdim 237362181Sdim#if APR_HAVE_SYS_SOCKET_H 238362181Sdim#include <sys/socket.h> 239362181Sdim#endif 240362181Sdim 241362181Sdim#if APR_HAVE_STDINT_H 242362181Sdim#include <stdint.h> 243362181Sdim#endif 244362181Sdim 245362181Sdim#if APR_HAVE_SYS_WAIT_H 246362181Sdim#include <sys/wait.h> 247362181Sdim#endif 248362181Sdim 249251875Speter#if APR_HAVE_TIME_H 250251875Speter#include <time.h> 251251875Speter#endif 252362181Sdim 253251875Speter#if APR_HAVE_PROCESS_H 254251875Speter#include <process.h> 255251875Speter#endif 256251875Speter 257251875Speter#ifdef __cplusplus 258251875Speterextern "C" { 259251875Speter#endif 260251875Speter 261251875Speter/** 262251875Speter * @addtogroup apr_platform 263251875Speter * @ingroup APR 264251875Speter * @{ 265251875Speter */ 266251875Speter 267251875Speter#define APR_HAVE_SHMEM_MMAP_TMP 0 268251875Speter#define APR_HAVE_SHMEM_MMAP_SHM 0 269251875Speter#define APR_HAVE_SHMEM_MMAP_ZERO 0 270251875Speter#define APR_HAVE_SHMEM_SHMGET_ANON 0 271251875Speter#define APR_HAVE_SHMEM_SHMGET 0 272251875Speter#define APR_HAVE_SHMEM_MMAP_ANON 0 273251875Speter#define APR_HAVE_SHMEM_BEOS 0 274251875Speter 275251875Speter#define APR_USE_SHMEM_MMAP_TMP 0 276251875Speter#define APR_USE_SHMEM_MMAP_SHM 0 277251875Speter#define APR_USE_SHMEM_MMAP_ZERO 0 278251875Speter#define APR_USE_SHMEM_SHMGET_ANON 0 279251875Speter#define APR_USE_SHMEM_SHMGET 0 280251875Speter#define APR_USE_SHMEM_MMAP_ANON 0 281251875Speter#define APR_USE_SHMEM_BEOS 0 282251875Speter 283362181Sdim#define APR_USE_FLOCK_SERIALIZE 0 284251875Speter#define APR_USE_POSIXSEM_SERIALIZE 0 285251875Speter#define APR_USE_SYSVSEM_SERIALIZE 0 286251875Speter#define APR_USE_FCNTL_SERIALIZE 0 287362181Sdim#define APR_USE_PROC_PTHREAD_SERIALIZE 0 288362181Sdim#define APR_USE_PTHREAD_SERIALIZE 0 289251875Speter 290251875Speter#define APR_HAS_FLOCK_SERIALIZE 0 291251875Speter#define APR_HAS_SYSVSEM_SERIALIZE 0 292251875Speter#define APR_HAS_POSIXSEM_SERIALIZE 0 293251875Speter#define APR_HAS_FCNTL_SERIALIZE 0 294251875Speter#define APR_HAS_PROC_PTHREAD_SERIALIZE 0 295251875Speter 296251875Speter#define APR_PROCESS_LOCK_IS_GLOBAL 0 297251875Speter 298251875Speter#define APR_HAVE_CORKABLE_TCP 0 299251875Speter#define APR_HAVE_GETRLIMIT 0 300251875Speter#define APR_HAVE_ICONV 0 301251875Speter#define APR_HAVE_IN_ADDR 1 302251875Speter#define APR_HAVE_INET_ADDR 1 303251875Speter#define APR_HAVE_INET_NETWORK 0 304362181Sdim#define APR_HAVE_IPV6 1 305362181Sdim#define APR_HAVE_SOCKADDR_UN 0 306251875Speter#define APR_HAVE_MEMMOVE 1 307251875Speter#define APR_HAVE_SETRLIMIT 0 308251875Speter#define APR_HAVE_SIGACTION 0 309251875Speter#define APR_HAVE_SIGSUSPEND 0 310251875Speter#define APR_HAVE_SIGWAIT 0 311251875Speter#define APR_HAVE_SA_STORAGE 0 312251875Speter#define APR_HAVE_STRCASECMP 0 313251875Speter#define APR_HAVE_STRDUP 1 314251875Speter#define APR_HAVE_STRNCASECMP 0 315251875Speter#define APR_HAVE_STRSTR 1 316251875Speter#define APR_HAVE_MEMCHR 1 317251875Speter#define APR_HAVE_STRUCT_RLIMIT 0 318251875Speter#define APR_HAVE_UNION_SEMUN 0 319251875Speter#define APR_HAVE_SCTP 0 320251875Speter#define APR_HAVE_IOVEC 0 321251875Speter 322251875Speter#ifndef _WIN32_WCE 323251875Speter#define APR_HAVE_STRICMP 1 324251875Speter#define APR_HAVE_STRNICMP 1 325251875Speter#else 326251875Speter#define APR_HAVE_STRICMP 0 327251875Speter#define APR_HAVE_STRNICMP 0 328251875Speter#endif 329251875Speter 330251875Speter/* APR Feature Macros */ 331251875Speter#define APR_HAS_SHARED_MEMORY 1 332251875Speter#define APR_HAS_THREADS 1 333251875Speter#define APR_HAS_MMAP 1 334251875Speter#define APR_HAS_FORK 0 335251875Speter#define APR_HAS_RANDOM 1 336251875Speter#define APR_HAS_OTHER_CHILD 1 337251875Speter#define APR_HAS_DSO 1 338251875Speter#define APR_HAS_SO_ACCEPTFILTER 0 339251875Speter#define APR_HAS_UNICODE_FS 1 340251875Speter#define APR_HAS_PROC_INVOKED 1 341251875Speter#define APR_HAS_OS_UUID 1 342362181Sdim#define APR_HAS_TIMEDLOCKS 1 343251875Speter 344251875Speter#ifndef _WIN32_WCE 345251875Speter#define APR_HAS_SENDFILE 1 346251875Speter#define APR_HAS_USER 1 347251875Speter#define APR_HAS_LARGE_FILES 1 348251875Speter#define APR_HAS_XTHREAD_FILES 1 349251875Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1 350251875Speter#else 351251875Speter#define APR_HAS_SENDFILE 0 352251875Speter#define APR_HAS_USER 0 353251875Speter#define APR_HAS_LARGE_FILES 0 354251875Speter#define APR_HAS_XTHREAD_FILES 0 355251875Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0 356251875Speter#endif 357251875Speter 358251875Speter/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible 359251875Speter * to poll on files/pipes. 360251875Speter */ 361251875Speter#define APR_FILES_AS_SOCKETS 0 362251875Speter 363251875Speter/* This macro indicates whether or not EBCDIC is the native character set. 364251875Speter */ 365251875Speter#define APR_CHARSET_EBCDIC 0 366251875Speter 367251875Speter/* If we have a TCP implementation that can be "corked", what flag 368251875Speter * do we use? 369251875Speter */ 370251875Speter#define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ 371251875Speter 372251875Speter/* Is the TCP_NODELAY socket option inherited from listening sockets? 373251875Speter */ 374251875Speter#define APR_TCP_NODELAY_INHERITED 1 375251875Speter 376251875Speter/* Is the O_NONBLOCK flag inherited from listening sockets? 377251875Speter */ 378362181Sdim#define APR_O_NONBLOCK_INHERITED 1 379251875Speter 380251875Speter/* Typedefs that APR needs. */ 381251875Speter 382251875Spetertypedef unsigned char apr_byte_t; 383251875Speter 384251875Spetertypedef short apr_int16_t; 385251875Spetertypedef unsigned short apr_uint16_t; 386251875Speter 387251875Spetertypedef int apr_int32_t; 388251875Spetertypedef unsigned int apr_uint32_t; 389251875Speter 390251875Spetertypedef __int64 apr_int64_t; 391251875Spetertypedef unsigned __int64 apr_uint64_t; 392251875Speter 393251875Spetertypedef size_t apr_size_t; 394251875Speter#if APR_HAVE_STDDEF_H 395251875Spetertypedef ptrdiff_t apr_ssize_t; 396251875Speter#else 397251875Spetertypedef int apr_ssize_t; 398251875Speter#endif 399251875Speter#if APR_HAS_LARGE_FILES 400251875Spetertypedef __int64 apr_off_t; 401251875Speter#else 402251875Spetertypedef int apr_off_t; 403251875Speter#endif 404251875Spetertypedef int apr_socklen_t; 405251875Spetertypedef apr_uint64_t apr_ino_t; 406251875Speter 407253734Speter#ifdef _WIN64 408251875Speter#define APR_SIZEOF_VOIDP 8 409251875Speter#else 410251875Speter#define APR_SIZEOF_VOIDP 4 411251875Speter#endif 412251875Speter 413251875Speter#if APR_SIZEOF_VOIDP == 8 414251875Spetertypedef apr_uint64_t apr_uintptr_t; 415251875Speter#else 416251875Spetertypedef apr_uint32_t apr_uintptr_t; 417251875Speter#endif 418251875Speter 419251875Speter/* Are we big endian? */ 420251875Speter/* XXX: Fatal assumption on Alpha platforms */ 421251875Speter#define APR_IS_BIGENDIAN 0 422251875Speter 423251875Speter/* Mechanisms to properly type numeric literals */ 424251875Speter 425251875Speter#ifndef __GNUC__ 426251875Speter#define APR_INT64_C(val) (val##i64) 427251875Speter#define APR_UINT64_C(val) (val##Ui64) 428251875Speter#else 429251875Speter#define APR_INT64_C(val) (val##LL) 430251875Speter#define APR_UINT64_C(val) (val##ULL) 431251875Speter#endif 432251875Speter 433251875Speter#ifdef INT16_MIN 434251875Speter#define APR_INT16_MIN INT16_MIN 435251875Speter#else 436251875Speter#define APR_INT16_MIN (-0x7fff - 1) 437251875Speter#endif 438251875Speter 439251875Speter#ifdef INT16_MAX 440251875Speter#define APR_INT16_MAX INT16_MAX 441251875Speter#else 442251875Speter#define APR_INT16_MAX (0x7fff) 443251875Speter#endif 444251875Speter 445251875Speter#ifdef UINT16_MAX 446251875Speter#define APR_UINT16_MAX UINT16_MAX 447251875Speter#else 448251875Speter#define APR_UINT16_MAX (0xffff) 449251875Speter#endif 450251875Speter 451251875Speter#ifdef INT32_MIN 452251875Speter#define APR_INT32_MIN INT32_MIN 453251875Speter#else 454251875Speter#define APR_INT32_MIN (-0x7fffffff - 1) 455251875Speter#endif 456251875Speter 457251875Speter#ifdef INT32_MAX 458251875Speter#define APR_INT32_MAX INT32_MAX 459251875Speter#else 460251875Speter#define APR_INT32_MAX 0x7fffffff 461251875Speter#endif 462251875Speter 463251875Speter#ifdef UINT32_MAX 464251875Speter#define APR_UINT32_MAX UINT32_MAX 465251875Speter#else 466251875Speter#define APR_UINT32_MAX (0xffffffffU) 467251875Speter#endif 468251875Speter 469251875Speter#ifdef INT64_MIN 470251875Speter#define APR_INT64_MIN INT64_MIN 471251875Speter#else 472251875Speter#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 473251875Speter#endif 474251875Speter 475251875Speter#ifdef INT64_MAX 476251875Speter#define APR_INT64_MAX INT64_MAX 477251875Speter#else 478251875Speter#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 479251875Speter#endif 480251875Speter 481251875Speter#ifdef UINT64_MAX 482251875Speter#define APR_UINT64_MAX UINT64_MAX 483251875Speter#else 484251875Speter#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 485251875Speter#endif 486251875Speter 487251875Speter#define APR_SIZE_MAX (~((apr_size_t)0)) 488251875Speter 489251875Speter/* Definitions that APR programs need to work properly. */ 490251875Speter 491251875Speter/** 492251875Speter * APR public API wrap for C++ compilers. 493251875Speter */ 494251875Speter#ifdef __cplusplus 495251875Speter#define APR_BEGIN_DECLS extern "C" { 496251875Speter#define APR_END_DECLS } 497251875Speter#else 498251875Speter#define APR_BEGIN_DECLS 499251875Speter#define APR_END_DECLS 500251875Speter#endif 501251875Speter 502251875Speter/** 503251875Speter * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 504251875Speter * so that they follow the platform's calling convention. 505251875Speter * <PRE> 506251875Speter * 507251875Speter * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 508251875Speter * 509251875Speter * </PRE> 510251875Speter */ 511251875Speter#define APR_THREAD_FUNC __stdcall 512251875Speter 513251875Speter 514251875Speter#if defined(DOXYGEN) || !defined(WIN32) 515251875Speter 516251875Speter/** 517251875Speter * The public APR functions are declared with APR_DECLARE(), so they may 518251875Speter * use the most appropriate calling convention. Public APR functions with 519251875Speter * variable arguments must use APR_DECLARE_NONSTD(). 520251875Speter * 521251875Speter * @remark Both the declaration and implementations must use the same macro. 522251875Speter * 523251875Speter * <PRE> 524251875Speter * APR_DECLARE(rettype) apr_func(args) 525251875Speter * </PRE> 526251875Speter * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 527251875Speter * @remark Note that when APR compiles the library itself, it passes the 528251875Speter * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 529251875Speter * to export public symbols from the dynamic library build.\n 530251875Speter * The user must define the APR_DECLARE_STATIC when compiling to target 531251875Speter * the static APR library on some platforms (e.g. Win32.) The public symbols 532251875Speter * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 533251875Speter * By default, compiling an application and including the APR public 534251875Speter * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 535251875Speter * linked to the dynamic library. 536251875Speter */ 537251875Speter#define APR_DECLARE(type) type 538251875Speter 539251875Speter/** 540251875Speter * The public APR functions using variable arguments are declared with 541251875Speter * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 542251875Speter * @see APR_DECLARE @see APR_DECLARE_DATA 543251875Speter * @remark Both the declaration and implementations must use the same macro. 544251875Speter * <PRE> 545251875Speter * 546251875Speter * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 547251875Speter * 548251875Speter * </PRE> 549251875Speter */ 550251875Speter#define APR_DECLARE_NONSTD(type) type 551251875Speter 552251875Speter/** 553251875Speter * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 554251875Speter * This assures the appropriate indirection is invoked at compile time. 555251875Speter * @see APR_DECLARE @see APR_DECLARE_NONSTD 556251875Speter * @remark Note that the declaration and implementations use different forms, 557251875Speter * but both must include the macro. 558251875Speter * 559251875Speter * <PRE> 560251875Speter * 561251875Speter * extern APR_DECLARE_DATA type apr_variable;\n 562251875Speter * APR_DECLARE_DATA type apr_variable = value; 563251875Speter * 564251875Speter * </PRE> 565251875Speter */ 566251875Speter#define APR_DECLARE_DATA 567251875Speter 568251875Speter#elif defined(APR_DECLARE_STATIC) 569251875Speter#define APR_DECLARE(type) type __stdcall 570251875Speter#define APR_DECLARE_NONSTD(type) type __cdecl 571251875Speter#define APR_DECLARE_DATA 572251875Speter#elif defined(APR_DECLARE_EXPORT) 573251875Speter#define APR_DECLARE(type) __declspec(dllexport) type __stdcall 574251875Speter#define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl 575251875Speter#define APR_DECLARE_DATA __declspec(dllexport) 576251875Speter#else 577251875Speter#define APR_DECLARE(type) __declspec(dllimport) type __stdcall 578251875Speter#define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl 579251875Speter#define APR_DECLARE_DATA __declspec(dllimport) 580251875Speter#endif 581251875Speter 582253734Speter#ifdef _WIN64 583251875Speter#define APR_SSIZE_T_FMT "I64d" 584251875Speter#define APR_SIZE_T_FMT "I64u" 585251875Speter#else 586251875Speter#define APR_SSIZE_T_FMT "d" 587251875Speter#define APR_SIZE_T_FMT "u" 588251875Speter#endif 589251875Speter 590251875Speter#if APR_HAS_LARGE_FILES 591251875Speter#define APR_OFF_T_FMT "I64d" 592251875Speter#else 593251875Speter#define APR_OFF_T_FMT "d" 594251875Speter#endif 595251875Speter 596251875Speter#define APR_PID_T_FMT "d" 597251875Speter 598251875Speter#define APR_INT64_T_FMT "I64d" 599251875Speter#define APR_UINT64_T_FMT "I64u" 600251875Speter#define APR_UINT64_T_HEX_FMT "I64x" 601251875Speter 602251875Speter/* No difference between PROC and GLOBAL mutex */ 603251875Speter#define APR_PROC_MUTEX_IS_GLOBAL 1 604251875Speter 605251875Speter/* Local machine definition for console and log output. */ 606251875Speter#define APR_EOL_STR "\r\n" 607251875Speter 608251875Spetertypedef int apr_wait_t; 609251875Speter 610251875Speter#if APR_HAS_UNICODE_FS 611251875Speter/* An arbitrary size that is digestable. True max is a bit less than 32000 */ 612251875Speter#define APR_PATH_MAX 8192 613251875Speter#else /* !APR_HAS_UNICODE_FS */ 614251875Speter#define APR_PATH_MAX MAX_PATH 615251875Speter#endif 616251875Speter 617251875Speter#define APR_DSOPATH "PATH" 618251875Speter 619251875Speter/** @} */ 620251875Speter 621251875Speter/* Definitions that only Win32 programs need to compile properly. */ 622251875Speter 623251875Speter/* XXX These simply don't belong here, perhaps in apr_portable.h 624251875Speter * based on some APR_HAVE_PID/GID/UID? 625251875Speter */ 626251875Speter#ifndef __GNUC__ 627251875Spetertypedef int pid_t; 628251875Speter#endif 629251875Spetertypedef int uid_t; 630251875Spetertypedef int gid_t; 631251875Speter 632251875Speter/* Win32 .h ommissions we really need */ 633251875Speter#define STDIN_FILENO 0 634251875Speter#define STDOUT_FILENO 1 635251875Speter#define STDERR_FILENO 2 636251875Speter 637251875Speter#if APR_HAVE_IPV6 638251875Speter 639251875Speter/* Appears in later flavors, not the originals. */ 640251875Speter#ifndef in_addr6 641251875Speter#define in6_addr in_addr6 642251875Speter#endif 643251875Speter 644251875Speter#ifndef WS2TCPIP_INLINE 645251875Speter#define IN6_IS_ADDR_V4MAPPED(a) \ 646251875Speter ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ 647251875Speter && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) 648251875Speter#endif 649251875Speter 650362181Sdim#endif /* APR_HAVE_IPV6 */ 651251875Speter 652251875Speter#ifdef __cplusplus 653251875Speter} 654251875Speter#endif 655251875Speter 656362181Sdim/* Done with badly written headers, leave 'deprecated CRT' undeprecated 657251875Speter */ 658251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 659251875Speter#pragma warning(pop) 660362181Sdim#if _MSC_VER >= 1400 661251875Speter#pragma warning(disable: 4996) 662251875Speter#endif 663362181Sdim#endif 664251875Speter 665251875Speter#endif /* WIN32 */ 666251875Speter 667251875Speter#endif /* APR_H */ 668