apr.h revision 251886
1251886Speter/* $FreeBSD: head/usr.bin/svn/lib/libapr/apr.h 251886 2013-06-18 02:53:45Z peter $ */
2251886Speter
3251886Speter/* Licensed to the Apache Software Foundation (ASF) under one or more
4251886Speter * contributor license agreements.  See the NOTICE file distributed with
5251886Speter * this work for additional information regarding copyright ownership.
6251886Speter * The ASF licenses this file to You under the Apache License, Version 2.0
7251886Speter * (the "License"); you may not use this file except in compliance with
8251886Speter * the License.  You may obtain a copy of the License at
9251886Speter *
10251886Speter *     http://www.apache.org/licenses/LICENSE-2.0
11251886Speter *
12251886Speter * Unless required by applicable law or agreed to in writing, software
13251886Speter * distributed under the License is distributed on an "AS IS" BASIS,
14251886Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15251886Speter * See the License for the specific language governing permissions and
16251886Speter * limitations under the License.
17251886Speter */
18251886Speter
19251886Speter
20251886Speter#ifndef APR_H
21251886Speter#define APR_H
22251886Speter
23251886Speter/* GENERATED FILE WARNING!  DO NOT EDIT apr.h
24251886Speter *
25251886Speter * You must modify apr.h.in instead.
26251886Speter *
27251886Speter * And please, make an effort to stub apr.hw and apr.hnw in the process.
28251886Speter */
29251886Speter
30251886Speter/**
31251886Speter * @file apr.h
32251886Speter * @brief APR Platform Definitions
33251886Speter * @remark This is a generated header generated from include/apr.h.in by
34251886Speter * ./configure, or copied from include/apr.hw or include/apr.hnw
35251886Speter * for Win32 or Netware by those build environments, respectively.
36251886Speter */
37251886Speter
38251886Speter/**
39251886Speter * @defgroup APR Apache Portability Runtime library
40251886Speter * @{
41251886Speter */
42251886Speter/**
43251886Speter * @defgroup apr_platform Platform Definitions
44251886Speter * @{
45251886Speter * @warning
46251886Speter * <strong><em>The actual values of macros and typedefs on this page<br>
47251886Speter * are platform specific and should NOT be relied upon!</em></strong>
48251886Speter */
49251886Speter
50251886Speter/* So that we can use inline on some critical functions, and use
51251886Speter * GNUC attributes (such as to get -Wall warnings for printf-like
52251886Speter * functions).  Only do this in gcc 2.7 or later ... it may work
53251886Speter * on earlier stuff, but why chance it.
54251886Speter *
55251886Speter * We've since discovered that the gcc shipped with NeXT systems
56251886Speter * as "cc" is completely broken.  It claims to be __GNUC__ and so
57251886Speter * on, but it doesn't implement half of the things that __GNUC__
58251886Speter * means.  In particular it's missing inline and the __attribute__
59251886Speter * stuff.  So we hack around it.  PR#1613. -djg
60251886Speter */
61251886Speter#if !defined(__GNUC__) || __GNUC__ < 2 || \
62251886Speter    (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\
63251886Speter    defined(NEXT)
64251886Speter#ifndef __attribute__
65251886Speter#define __attribute__(__x)
66251886Speter#endif
67251886Speter#define APR_INLINE
68251886Speter#define APR_HAS_INLINE           0
69251886Speter#else
70251886Speter#define APR_INLINE __inline__
71251886Speter#define APR_HAS_INLINE           1
72251886Speter#endif
73251886Speter
74251886Speter#define APR_HAVE_ARPA_INET_H     1
75251886Speter#define APR_HAVE_CONIO_H         0
76251886Speter#define APR_HAVE_CRYPT_H         0
77251886Speter#define APR_HAVE_CTYPE_H         1
78251886Speter#define APR_HAVE_DIRENT_H        1
79251886Speter#define APR_HAVE_ERRNO_H         1
80251886Speter#define APR_HAVE_FCNTL_H         1
81251886Speter#define APR_HAVE_IO_H            0
82251886Speter#define APR_HAVE_LIMITS_H        1
83251886Speter#define APR_HAVE_NETDB_H         1
84251886Speter#define APR_HAVE_NETINET_IN_H    1
85251886Speter#define APR_HAVE_NETINET_SCTP_H  1
86251886Speter#define APR_HAVE_NETINET_SCTP_UIO_H 1
87251886Speter#define APR_HAVE_NETINET_TCP_H   1
88251886Speter#define APR_HAVE_PROCESS_H       0
89251886Speter#define APR_HAVE_PTHREAD_H       1
90251886Speter#define APR_HAVE_SEMAPHORE_H     1
91251886Speter#define APR_HAVE_SIGNAL_H        1
92251886Speter#define APR_HAVE_STDARG_H        1
93251886Speter#define APR_HAVE_STDINT_H        1
94251886Speter#define APR_HAVE_STDIO_H         1
95251886Speter#define APR_HAVE_STDLIB_H        1
96251886Speter#define APR_HAVE_STRING_H        1
97251886Speter#define APR_HAVE_STRINGS_H       1
98251886Speter#define APR_HAVE_SYS_IOCTL_H     1
99251886Speter#define APR_HAVE_SYS_SENDFILE_H  0
100251886Speter#define APR_HAVE_SYS_SIGNAL_H    1
101251886Speter#define APR_HAVE_SYS_SOCKET_H    1
102251886Speter#define APR_HAVE_SYS_SOCKIO_H    1
103251886Speter#define APR_HAVE_SYS_SYSLIMITS_H 1
104251886Speter#define APR_HAVE_SYS_TIME_H      1
105251886Speter#define APR_HAVE_SYS_TYPES_H     1
106251886Speter#define APR_HAVE_SYS_UIO_H       1
107251886Speter#define APR_HAVE_SYS_UN_H        1
108251886Speter#define APR_HAVE_SYS_WAIT_H      1
109251886Speter#define APR_HAVE_TIME_H          1
110251886Speter#define APR_HAVE_UNISTD_H        1
111251886Speter#define APR_HAVE_WINDOWS_H       0
112251886Speter#define APR_HAVE_WINSOCK2_H      0
113251886Speter
114251886Speter/** @} */
115251886Speter/** @} */
116251886Speter
117251886Speter/* We don't include our conditional headers within the doxyblocks
118251886Speter * or the extern "C" namespace
119251886Speter */
120251886Speter
121251886Speter#if APR_HAVE_WINDOWS_H
122251886Speter/* If windows.h was already included, our preferences don't matter.
123251886Speter * If not, include a restricted set of windows headers to our tastes.
124251886Speter */
125251886Speter#ifndef _WINDOWS_
126251886Speter
127251886Speter#ifndef WIN32_LEAN_AND_MEAN
128251886Speter#define WIN32_LEAN_AND_MEAN
129251886Speter#endif
130251886Speter
131251886Speter#ifndef _WIN32_WINNT
132251886Speter/* Restrict the server to a subset of Windows XP header files by default
133251886Speter */
134251886Speter#define _WIN32_WINNT 0x0501
135251886Speter#endif
136251886Speter
137251886Speter#ifndef NOUSER
138251886Speter#define NOUSER
139251886Speter#endif
140251886Speter#ifndef NOMCX
141251886Speter#define NOMCX
142251886Speter#endif
143251886Speter#ifndef NOIME
144251886Speter#define NOIME
145251886Speter#endif
146251886Speter
147251886Speter#include <windows.h>
148251886Speter/*
149251886Speter * Add a _very_few_ declarations missing from the restricted set of headers
150251886Speter * (If this list becomes extensive, re-enable the required headers above!)
151251886Speter * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
152251886Speter */
153251886Speter#define SW_HIDE             0
154251886Speter#ifndef _WIN32_WCE
155251886Speter#include <winsock2.h>
156251886Speter#include <ws2tcpip.h>
157251886Speter#include <mswsock.h>
158251886Speter#else
159251886Speter#include <winsock.h>
160251886Speter#endif
161251886Speter
162251886Speter#endif /* ndef _WINDOWS_ */
163251886Speter#endif /* APR_HAVE_WINDOWS_H */
164251886Speter
165251886Speter#if APR_HAVE_SYS_TYPES_H
166251886Speter#include <sys/types.h>
167251886Speter#endif
168251886Speter
169251886Speter#if APR_HAVE_SYS_SOCKET_H
170251886Speter#include <sys/socket.h>
171251886Speter#endif
172251886Speter
173251886Speter#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
174251886Speter/* C99 7.18.4 requires that stdint.h only exposes INT64_C
175251886Speter * and UINT64_C for C++ implementations if this is defined: */
176251886Speter#define __STDC_CONSTANT_MACROS
177251886Speter#endif
178251886Speter
179251886Speter#if APR_HAVE_STDINT_H
180251886Speter#include <stdint.h>
181251886Speter#endif
182251886Speter
183251886Speter#if APR_HAVE_SYS_WAIT_H
184251886Speter#include <sys/wait.h>
185251886Speter#endif
186251886Speter
187251886Speter#ifdef OS2
188251886Speter#define INCL_DOS
189251886Speter#define INCL_DOSERRORS
190251886Speter#include <os2.h>
191251886Speter#endif
192251886Speter
193251886Speter/* header files for PATH_MAX, _POSIX_PATH_MAX */
194251886Speter#if APR_HAVE_LIMITS_H
195251886Speter#include <limits.h>
196251886Speter#else
197251886Speter#if APR_HAVE_SYS_SYSLIMITS_H
198251886Speter#include <sys/syslimits.h>
199251886Speter#endif
200251886Speter#endif
201251886Speter
202251886Speter
203251886Speter#ifdef __cplusplus
204251886Speterextern "C" {
205251886Speter#endif
206251886Speter
207251886Speter/**
208251886Speter * @addtogroup apr_platform
209251886Speter * @ingroup APR
210251886Speter * @{
211251886Speter */
212251886Speter
213251886Speter#define APR_HAVE_SHMEM_MMAP_TMP     1
214251886Speter#define APR_HAVE_SHMEM_MMAP_SHM     1
215251886Speter#define APR_HAVE_SHMEM_MMAP_ZERO    1
216251886Speter#define APR_HAVE_SHMEM_SHMGET_ANON  1
217251886Speter#define APR_HAVE_SHMEM_SHMGET       1
218251886Speter#define APR_HAVE_SHMEM_MMAP_ANON    1
219251886Speter#define APR_HAVE_SHMEM_BEOS         0
220251886Speter
221251886Speter#define APR_USE_SHMEM_MMAP_TMP     0
222251886Speter#define APR_USE_SHMEM_MMAP_SHM     0
223251886Speter#define APR_USE_SHMEM_MMAP_ZERO    0
224251886Speter#define APR_USE_SHMEM_SHMGET_ANON  0
225251886Speter#define APR_USE_SHMEM_SHMGET       1
226251886Speter#define APR_USE_SHMEM_MMAP_ANON    1
227251886Speter#define APR_USE_SHMEM_BEOS         0
228251886Speter
229251886Speter#define APR_USE_FLOCK_SERIALIZE           1
230251886Speter#define APR_USE_SYSVSEM_SERIALIZE         0
231251886Speter#define APR_USE_POSIXSEM_SERIALIZE        0
232251886Speter#define APR_USE_FCNTL_SERIALIZE           0
233251886Speter#define APR_USE_PROC_PTHREAD_SERIALIZE    0
234251886Speter#define APR_USE_PTHREAD_SERIALIZE         1
235251886Speter
236251886Speter#define APR_HAS_FLOCK_SERIALIZE           1
237251886Speter#define APR_HAS_SYSVSEM_SERIALIZE         1
238251886Speter#define APR_HAS_POSIXSEM_SERIALIZE        1
239251886Speter#define APR_HAS_FCNTL_SERIALIZE           1
240251886Speter#define APR_HAS_PROC_PTHREAD_SERIALIZE    0
241251886Speter
242251886Speter#define APR_PROCESS_LOCK_IS_GLOBAL        0
243251886Speter
244251886Speter#define APR_HAVE_CORKABLE_TCP   1
245251886Speter#define APR_HAVE_GETRLIMIT      1
246251886Speter#define APR_HAVE_IN_ADDR        1
247251886Speter#define APR_HAVE_INET_ADDR      1
248251886Speter#define APR_HAVE_INET_NETWORK   1
249251886Speter#define APR_HAVE_IPV6           1
250251886Speter#define APR_HAVE_MEMMOVE        1
251251886Speter#define APR_HAVE_SETRLIMIT      1
252251886Speter#define APR_HAVE_SIGACTION      1
253251886Speter#define APR_HAVE_SIGSUSPEND     1
254251886Speter#define APR_HAVE_SIGWAIT        1
255251886Speter#define APR_HAVE_SA_STORAGE     1
256251886Speter#define APR_HAVE_STRCASECMP     1
257251886Speter#define APR_HAVE_STRDUP         1
258251886Speter#define APR_HAVE_STRICMP        0
259251886Speter#define APR_HAVE_STRNCASECMP    1
260251886Speter#define APR_HAVE_STRNICMP       0
261251886Speter#define APR_HAVE_STRSTR         1
262251886Speter#define APR_HAVE_MEMCHR         1
263251886Speter#define APR_HAVE_STRUCT_RLIMIT  1
264251886Speter#define APR_HAVE_UNION_SEMUN    1
265251886Speter#define APR_HAVE_SCTP           1
266251886Speter#define APR_HAVE_IOVEC          1
267251886Speter
268251886Speter/*  APR Feature Macros */
269251886Speter#define APR_HAS_SHARED_MEMORY     1
270251886Speter#define APR_HAS_THREADS           1
271251886Speter#define APR_HAS_SENDFILE          1
272251886Speter#define APR_HAS_MMAP              1
273251886Speter#define APR_HAS_FORK              1
274251886Speter#define APR_HAS_RANDOM            1
275251886Speter#define APR_HAS_OTHER_CHILD       1
276251886Speter#define APR_HAS_DSO               0
277251886Speter#define APR_HAS_SO_ACCEPTFILTER   1
278251886Speter#define APR_HAS_UNICODE_FS        0
279251886Speter#define APR_HAS_PROC_INVOKED      0
280251886Speter#define APR_HAS_USER              1
281251886Speter#define APR_HAS_LARGE_FILES       0
282251886Speter#define APR_HAS_XTHREAD_FILES     0
283251886Speter#define APR_HAS_OS_UUID           1
284251886Speter
285251886Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0
286251886Speter
287251886Speter/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
288251886Speter * to poll on files/pipes.
289251886Speter */
290251886Speter#define APR_FILES_AS_SOCKETS      1
291251886Speter
292251886Speter/* This macro indicates whether or not EBCDIC is the native character set.
293251886Speter */
294251886Speter#define APR_CHARSET_EBCDIC        0
295251886Speter
296251886Speter/* If we have a TCP implementation that can be "corked", what flag
297251886Speter * do we use?
298251886Speter */
299251886Speter#define APR_TCP_NOPUSH_FLAG       TCP_NOPUSH
300251886Speter
301251886Speter/* Is the TCP_NODELAY socket option inherited from listening sockets?
302251886Speter*/
303251886Speter#define APR_TCP_NODELAY_INHERITED 1
304251886Speter
305251886Speter/* Is the O_NONBLOCK flag inherited from listening sockets?
306251886Speter*/
307251886Speter#define APR_O_NONBLOCK_INHERITED 1
308251886Speter
309251886Speter/* Typedefs that APR needs. */
310251886Speter
311251886Spetertypedef  unsigned char           apr_byte_t;
312251886Speter
313251886Spetertypedef  short           apr_int16_t;
314251886Spetertypedef  unsigned short  apr_uint16_t;
315251886Speter
316251886Spetertypedef  int             apr_int32_t;
317251886Spetertypedef  unsigned int    apr_uint32_t;
318251886Speter
319251886Speter#define APR_SIZEOF_VOIDP 8
320251886Speter
321251886Speter/*
322251886Speter * Darwin 10's default compiler (gcc42) builds for both 64 and
323251886Speter * 32 bit architectures unless specifically told not to.
324251886Speter * In those cases, we need to override types depending on how
325251886Speter * we're being built at compile time.
326251886Speter * NOTE: This is an ugly work-around for Darwin's
327251886Speter * concept of universal binaries, a single package
328251886Speter * (executable, lib, etc...) which contains both 32
329251886Speter * and 64 bit versions. The issue is that if APR is
330251886Speter * built universally, if something else is compiled
331251886Speter * against it, some bit sizes will depend on whether
332251886Speter * it is 32 or 64 bit. This is determined by the __LP64__
333251886Speter * flag. Since we need to support both, we have to
334251886Speter * handle OS X unqiuely.
335251886Speter */
336251886Speter#ifdef DARWIN_10
337251886Speter#undef APR_SIZEOF_VOIDP
338251886Speter#undef INT64_C
339251886Speter#undef UINT64_C
340251886Speter#ifdef __LP64__
341251886Speter typedef  long            apr_int64_t;
342251886Speter typedef  unsigned long   apr_uint64_t;
343251886Speter #define APR_SIZEOF_VOIDP     8
344251886Speter #define INT64_C(v)   (v ## L)
345251886Speter #define UINT64_C(v)  (v ## UL)
346251886Speter#else
347251886Speter typedef  long long            apr_int64_t;
348251886Speter typedef  unsigned long long   apr_uint64_t;
349251886Speter #define APR_SIZEOF_VOIDP     4
350251886Speter #define INT64_C(v)   (v ## LL)
351251886Speter #define UINT64_C(v)  (v ## ULL)
352251886Speter#endif
353251886Speter#else
354251886Speter typedef  long            apr_int64_t;
355251886Speter typedef  unsigned long   apr_uint64_t;
356251886Speter#endif
357251886Speter
358251886Spetertypedef  size_t          apr_size_t;
359251886Spetertypedef  ssize_t         apr_ssize_t;
360251886Spetertypedef  off_t           apr_off_t;
361251886Spetertypedef  socklen_t       apr_socklen_t;
362251886Spetertypedef  unsigned int           apr_ino_t;
363251886Speter
364251886Speter#if APR_SIZEOF_VOIDP == 8
365251886Spetertypedef  apr_uint64_t            apr_uintptr_t;
366251886Speter#else
367251886Spetertypedef  apr_uint32_t            apr_uintptr_t;
368251886Speter#endif
369251886Speter
370251886Speter/* Are we big endian? */
371251886Speter#define APR_IS_BIGENDIAN	0
372251886Speter
373251886Speter/* Mechanisms to properly type numeric literals */
374251886Speter#define APR_INT64_C(val) INT64_C(val)
375251886Speter#define APR_UINT64_C(val) UINT64_C(val)
376251886Speter
377251886Speter#ifdef INT16_MIN
378251886Speter#define APR_INT16_MIN   INT16_MIN
379251886Speter#else
380251886Speter#define APR_INT16_MIN   (-0x7fff - 1)
381251886Speter#endif
382251886Speter
383251886Speter#ifdef INT16_MAX
384251886Speter#define APR_INT16_MAX  INT16_MAX
385251886Speter#else
386251886Speter#define APR_INT16_MAX   (0x7fff)
387251886Speter#endif
388251886Speter
389251886Speter#ifdef UINT16_MAX
390251886Speter#define APR_UINT16_MAX  UINT16_MAX
391251886Speter#else
392251886Speter#define APR_UINT16_MAX  (0xffff)
393251886Speter#endif
394251886Speter
395251886Speter#ifdef INT32_MIN
396251886Speter#define APR_INT32_MIN   INT32_MIN
397251886Speter#else
398251886Speter#define APR_INT32_MIN   (-0x7fffffff - 1)
399251886Speter#endif
400251886Speter
401251886Speter#ifdef INT32_MAX
402251886Speter#define APR_INT32_MAX  INT32_MAX
403251886Speter#else
404251886Speter#define APR_INT32_MAX  0x7fffffff
405251886Speter#endif
406251886Speter
407251886Speter#ifdef UINT32_MAX
408251886Speter#define APR_UINT32_MAX  UINT32_MAX
409251886Speter#else
410251886Speter#define APR_UINT32_MAX  (0xffffffffU)
411251886Speter#endif
412251886Speter
413251886Speter#ifdef INT64_MIN
414251886Speter#define APR_INT64_MIN   INT64_MIN
415251886Speter#else
416251886Speter#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
417251886Speter#endif
418251886Speter
419251886Speter#ifdef INT64_MAX
420251886Speter#define APR_INT64_MAX   INT64_MAX
421251886Speter#else
422251886Speter#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
423251886Speter#endif
424251886Speter
425251886Speter#ifdef UINT64_MAX
426251886Speter#define APR_UINT64_MAX  UINT64_MAX
427251886Speter#else
428251886Speter#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
429251886Speter#endif
430251886Speter
431251886Speter#define APR_SIZE_MAX    (~((apr_size_t)0))
432251886Speter
433251886Speter
434251886Speter/* Definitions that APR programs need to work properly. */
435251886Speter
436251886Speter/**
437251886Speter * APR public API wrap for C++ compilers.
438251886Speter */
439251886Speter#ifdef __cplusplus
440251886Speter#define APR_BEGIN_DECLS     extern "C" {
441251886Speter#define APR_END_DECLS       }
442251886Speter#else
443251886Speter#define APR_BEGIN_DECLS
444251886Speter#define APR_END_DECLS
445251886Speter#endif
446251886Speter
447251886Speter/**
448251886Speter * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC,
449251886Speter * so that they follow the platform's calling convention.
450251886Speter * <PRE>
451251886Speter *
452251886Speter * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
453251886Speter *
454251886Speter * </PRE>
455251886Speter */
456251886Speter#define APR_THREAD_FUNC
457251886Speter
458251886Speter/**
459251886Speter * The public APR functions are declared with APR_DECLARE(), so they may
460251886Speter * use the most appropriate calling convention.  Public APR functions with
461251886Speter * variable arguments must use APR_DECLARE_NONSTD().
462251886Speter *
463251886Speter * @remark Both the declaration and implementations must use the same macro.
464251886Speter *
465251886Speter * <PRE>
466251886Speter * APR_DECLARE(rettype) apr_func(args)
467251886Speter * </PRE>
468251886Speter * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
469251886Speter * @remark Note that when APR compiles the library itself, it passes the
470251886Speter * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32)
471251886Speter * to export public symbols from the dynamic library build.\n
472251886Speter * The user must define the APR_DECLARE_STATIC when compiling to target
473251886Speter * the static APR library on some platforms (e.g. Win32.)  The public symbols
474251886Speter * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
475251886Speter * By default, compiling an application and including the APR public
476251886Speter * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
477251886Speter * linked to the dynamic library.
478251886Speter */
479251886Speter#define APR_DECLARE(type)            type
480251886Speter
481251886Speter/**
482251886Speter * The public APR functions using variable arguments are declared with
483251886Speter * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
484251886Speter * @see APR_DECLARE @see APR_DECLARE_DATA
485251886Speter * @remark Both the declaration and implementations must use the same macro.
486251886Speter * <PRE>
487251886Speter *
488251886Speter * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
489251886Speter *
490251886Speter * </PRE>
491251886Speter */
492251886Speter#define APR_DECLARE_NONSTD(type)     type
493251886Speter
494251886Speter/**
495251886Speter * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
496251886Speter * This assures the appropriate indirection is invoked at compile time.
497251886Speter * @see APR_DECLARE @see APR_DECLARE_NONSTD
498251886Speter * @remark Note that the declaration and implementations use different forms,
499251886Speter * but both must include the macro.
500251886Speter *
501251886Speter * <PRE>
502251886Speter *
503251886Speter * extern APR_DECLARE_DATA type apr_variable;\n
504251886Speter * APR_DECLARE_DATA type apr_variable = value;
505251886Speter *
506251886Speter * </PRE>
507251886Speter */
508251886Speter#define APR_DECLARE_DATA
509251886Speter
510251886Speter/* Define APR_SSIZE_T_FMT.
511251886Speter * If ssize_t is an integer we define it to be "d",
512251886Speter * if ssize_t is a long int we define it to be "ld",
513251886Speter * if ssize_t is neither we declare an error here.
514251886Speter * I looked for a better way to define this here, but couldn't find one, so
515251886Speter * to find the logic for this definition search for "ssize_t_fmt" in
516251886Speter * configure.in.
517251886Speter */
518251886Speter
519251886Speter#define APR_SSIZE_T_FMT "ld"
520251886Speter
521251886Speter/* And APR_SIZE_T_FMT */
522251886Speter#define APR_SIZE_T_FMT "lu"
523251886Speter
524251886Speter/* And APR_OFF_T_FMT */
525251886Speter#define APR_OFF_T_FMT "ld"
526251886Speter
527251886Speter/* And APR_PID_T_FMT */
528251886Speter#define APR_PID_T_FMT "d"
529251886Speter
530251886Speter/* And APR_INT64_T_FMT */
531251886Speter#define APR_INT64_T_FMT "ld"
532251886Speter
533251886Speter/* And APR_UINT64_T_FMT */
534251886Speter#define APR_UINT64_T_FMT "lu"
535251886Speter
536251886Speter/* And APR_UINT64_T_HEX_FMT */
537251886Speter#define APR_UINT64_T_HEX_FMT "lx"
538251886Speter
539251886Speter/*
540251886Speter * Ensure we work with universal binaries on Darwin
541251886Speter */
542251886Speter#ifdef DARWIN_10
543251886Speter
544251886Speter#undef APR_HAS_LARGE_FILES
545251886Speter#undef APR_SIZEOF_VOIDP
546251886Speter#undef APR_INT64_T_FMT
547251886Speter#undef APR_UINT64_T_FMT
548251886Speter#undef APR_UINT64_T_HEX_FMT
549251886Speter
550251886Speter#ifdef __LP64__
551251886Speter #define APR_HAS_LARGE_FILES  0
552251886Speter #define APR_SIZEOF_VOIDP     8
553251886Speter #define APR_INT64_T_FMT      "ld"
554251886Speter #define APR_UINT64_T_FMT     "lu"
555251886Speter #define APR_UINT64_T_HEX_FMT "lx"
556251886Speter#else
557251886Speter #define APR_HAS_LARGE_FILES  1
558251886Speter #define APR_SIZEOF_VOIDP     4
559251886Speter #define APR_INT64_T_FMT      "lld"
560251886Speter #define APR_UINT64_T_FMT     "llu"
561251886Speter #define APR_UINT64_T_HEX_FMT "llx"
562251886Speter#endif
563251886Speter
564251886Speter#undef APR_IS_BIGENDIAN
565251886Speter#ifdef __BIG_ENDIAN__
566251886Speter #define APR_IS_BIGENDIAN	1
567251886Speter#else
568251886Speter #define APR_IS_BIGENDIAN	0
569251886Speter#endif
570251886Speter
571251886Speter#undef APR_OFF_T_FMT
572251886Speter#define APR_OFF_T_FMT "lld"
573251886Speter
574251886Speter#endif /* DARWIN_10 */
575251886Speter
576251886Speter/* Does the proc mutex lock threads too */
577251886Speter#define APR_PROC_MUTEX_IS_GLOBAL      0
578251886Speter
579251886Speter/* Local machine definition for console and log output. */
580251886Speter#define APR_EOL_STR              "\n"
581251886Speter
582251886Speter#if APR_HAVE_SYS_WAIT_H
583251886Speter#ifdef WEXITSTATUS
584251886Speter#define apr_wait_t       int
585251886Speter#else
586251886Speter#define apr_wait_t       union wait
587251886Speter#define WEXITSTATUS(status)    (int)((status).w_retcode)
588251886Speter#define WTERMSIG(status)       (int)((status).w_termsig)
589251886Speter#endif /* !WEXITSTATUS */
590251886Speter#elif defined(__MINGW32__)
591251886Spetertypedef int apr_wait_t;
592251886Speter#endif /* HAVE_SYS_WAIT_H */
593251886Speter
594251886Speter#if defined(PATH_MAX)
595251886Speter#define APR_PATH_MAX       PATH_MAX
596251886Speter#elif defined(_POSIX_PATH_MAX)
597251886Speter#define APR_PATH_MAX       _POSIX_PATH_MAX
598251886Speter#else
599251886Speter#error no decision has been made on APR_PATH_MAX for your platform
600251886Speter#endif
601251886Speter
602251886Speter#define APR_DSOPATH "LD_LIBRARY_PATH"
603251886Speter
604251886Speter/** @} */
605251886Speter
606251886Speter/* Definitions that only Win32 programs need to compile properly. */
607251886Speter
608251886Speter/* XXX These simply don't belong here, perhaps in apr_portable.h
609251886Speter * based on some APR_HAVE_PID/GID/UID?
610251886Speter */
611251886Speter#ifdef __MINGW32__
612251886Speter#ifndef __GNUC__
613251886Spetertypedef  int         pid_t;
614251886Speter#endif
615251886Spetertypedef  int         uid_t;
616251886Spetertypedef  int         gid_t;
617251886Speter#endif
618251886Speter
619251886Speter#ifdef __cplusplus
620251886Speter}
621251886Speter#endif
622251886Speter
623251886Speter#endif /* APR_H */
624