Apache Portable Runtime
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
include
apr.h
Go to the documentation of this file.
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 1
73
#define APR_HAVE_CONIO_H 0
74
#define APR_HAVE_CRYPT_H 1
75
#define APR_HAVE_CTYPE_H 1
76
#define APR_HAVE_DIRENT_H 1
77
#define APR_HAVE_ERRNO_H 1
78
#define APR_HAVE_FCNTL_H 1
79
#define APR_HAVE_IO_H 0
80
#define APR_HAVE_LIMITS_H 1
81
#define APR_HAVE_NETDB_H 1
82
#define APR_HAVE_NETINET_IN_H 1
83
#define APR_HAVE_NETINET_SCTP_H 1
84
#define APR_HAVE_NETINET_SCTP_UIO_H 0
85
#define APR_HAVE_NETINET_TCP_H 1
86
#define APR_HAVE_PROCESS_H 0
87
#define APR_HAVE_PTHREAD_H 1
88
#define APR_HAVE_SEMAPHORE_H 1
89
#define APR_HAVE_SIGNAL_H 1
90
#define APR_HAVE_STDARG_H 1
91
#define APR_HAVE_STDINT_H 1
92
#define APR_HAVE_STDIO_H 1
93
#define APR_HAVE_STDLIB_H 1
94
#define APR_HAVE_STRING_H 1
95
#define APR_HAVE_STRINGS_H 1
96
#define APR_HAVE_SYS_IOCTL_H 1
97
#define APR_HAVE_SYS_SENDFILE_H 1
98
#define APR_HAVE_SYS_SIGNAL_H 1
99
#define APR_HAVE_SYS_SOCKET_H 1
100
#define APR_HAVE_SYS_SOCKIO_H 0
101
#define APR_HAVE_SYS_SYSLIMITS_H 0
102
#define APR_HAVE_SYS_TIME_H 1
103
#define APR_HAVE_SYS_TYPES_H 1
104
#define APR_HAVE_SYS_UIO_H 1
105
#define APR_HAVE_SYS_UN_H 1
106
#define APR_HAVE_SYS_WAIT_H 1
107
#define APR_HAVE_TIME_H 1
108
#define APR_HAVE_UNISTD_H 1
109
#define APR_HAVE_WINDOWS_H 0
110
#define APR_HAVE_WINSOCK2_H 0
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
202
extern
"C"
{
203
#endif
204
205
/**
206
* @addtogroup apr_platform
207
* @ingroup APR
208
* @{
209
*/
210
211
#define APR_HAVE_SHMEM_MMAP_TMP 1
212
#define APR_HAVE_SHMEM_MMAP_SHM 1
213
#define APR_HAVE_SHMEM_MMAP_ZERO 1
214
#define APR_HAVE_SHMEM_SHMGET_ANON 1
215
#define APR_HAVE_SHMEM_SHMGET 1
216
#define APR_HAVE_SHMEM_MMAP_ANON 1
217
#define APR_HAVE_SHMEM_BEOS 0
218
219
#define APR_USE_SHMEM_MMAP_TMP 0
220
#define APR_USE_SHMEM_MMAP_SHM 0
221
#define APR_USE_SHMEM_MMAP_ZERO 0
222
#define APR_USE_SHMEM_SHMGET_ANON 0
223
#define APR_USE_SHMEM_SHMGET 1
224
#define APR_USE_SHMEM_MMAP_ANON 1
225
#define APR_USE_SHMEM_BEOS 0
226
227
#define APR_USE_FLOCK_SERIALIZE 0
228
#define APR_USE_SYSVSEM_SERIALIZE 1
229
#define APR_USE_POSIXSEM_SERIALIZE 0
230
#define APR_USE_FCNTL_SERIALIZE 0
231
#define APR_USE_PROC_PTHREAD_SERIALIZE 0
232
#define APR_USE_PTHREAD_SERIALIZE 1
233
234
#define APR_HAS_FLOCK_SERIALIZE 1
235
#define APR_HAS_SYSVSEM_SERIALIZE 1
236
#define APR_HAS_POSIXSEM_SERIALIZE 1
237
#define APR_HAS_FCNTL_SERIALIZE 1
238
#define APR_HAS_PROC_PTHREAD_SERIALIZE 1
239
240
#define APR_PROCESS_LOCK_IS_GLOBAL 0
241
242
#define APR_HAVE_CORKABLE_TCP 1
243
#define APR_HAVE_GETRLIMIT 1
244
#define APR_HAVE_IN_ADDR 1
245
#define APR_HAVE_INET_ADDR 1
246
#define APR_HAVE_INET_NETWORK 1
247
#define APR_HAVE_IPV6 1
248
#define APR_HAVE_MEMMOVE 1
249
#define APR_HAVE_SETRLIMIT 1
250
#define APR_HAVE_SIGACTION 1
251
#define APR_HAVE_SIGSUSPEND 1
252
#define APR_HAVE_SIGWAIT 1
253
#define APR_HAVE_SA_STORAGE 1
254
#define APR_HAVE_STRCASECMP 1
255
#define APR_HAVE_STRDUP 1
256
#define APR_HAVE_STRICMP 0
257
#define APR_HAVE_STRNCASECMP 1
258
#define APR_HAVE_STRNICMP 0
259
#define APR_HAVE_STRSTR 1
260
#define APR_HAVE_MEMCHR 1
261
#define APR_HAVE_STRUCT_RLIMIT 1
262
#define APR_HAVE_UNION_SEMUN 0
263
#define APR_HAVE_SCTP 1
264
#define APR_HAVE_IOVEC 1
265
266
/* APR Feature Macros */
267
#define APR_HAS_SHARED_MEMORY 1
268
#define APR_HAS_THREADS 1
269
#define APR_HAS_SENDFILE 1
270
#define APR_HAS_MMAP 1
271
#define APR_HAS_FORK 1
272
#define APR_HAS_RANDOM 1
273
#define APR_HAS_OTHER_CHILD 1
274
#define APR_HAS_DSO 1
275
#define APR_HAS_SO_ACCEPTFILTER 0
276
#define APR_HAS_UNICODE_FS 0
277
#define APR_HAS_PROC_INVOKED 0
278
#define APR_HAS_USER 1
279
#define APR_HAS_LARGE_FILES 0
280
#define APR_HAS_XTHREAD_FILES 0
281
#define APR_HAS_OS_UUID 1
282
283
#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0
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 1
289
290
/* This macro indicates whether or not EBCDIC is the native character set.
291
*/
292
#define APR_CHARSET_EBCDIC 0
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 TCP_CORK
298
299
/* Is the TCP_NODELAY socket option inherited from listening sockets?
300
*/
301
#define APR_TCP_NODELAY_INHERITED 1
302
303
/* Is the O_NONBLOCK flag inherited from listening sockets?
304
*/
305
#define APR_O_NONBLOCK_INHERITED 0
306
307
/* Typedefs that APR needs. */
308
309
typedef
unsigned
char
apr_byte_t;
310
311
typedef
short
apr_int16_t;
312
typedef
unsigned
short
apr_uint16_t;
313
314
typedef
int
apr_int32_t;
315
typedef
unsigned
int
apr_uint32_t;
316
317
#define APR_SIZEOF_VOIDP 8
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
apr_int64_t;
353
typedef
unsigned
long
apr_uint64_t;
354
#endif
355
356
typedef
size_t
apr_size_t;
357
typedef
ssize_t apr_ssize_t;
358
typedef
off_t apr_off_t;
359
typedef
socklen_t apr_socklen_t;
360
typedef
ino_t apr_ino_t;
361
362
#if APR_SIZEOF_VOIDP == 8
363
typedef
apr_uint64_t apr_uintptr_t;
364
#else
365
typedef
apr_uint32_t apr_uintptr_t;
366
#endif
367
368
/* Are we big endian? */
369
#define APR_IS_BIGENDIAN 0
370
371
/* Mechanisms to properly type numeric literals */
372
#define APR_INT64_C(val) INT64_C(val)
373
#define APR_UINT64_C(val) UINT64_C(val)
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
*/
449
/**
450
* @code
451
* void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
452
* @endcode
453
*/
454
#define 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
*/
487
/**
488
* @code
489
* APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
490
* @endcode
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
*/
502
/**
503
* @code
504
* extern APR_DECLARE_DATA type apr_variable;\n
505
* APR_DECLARE_DATA type apr_variable = value;
506
* @endcode
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
#define APR_SSIZE_T_FMT "ld"
534
535
/* And APR_SIZE_T_FMT */
536
#define APR_SIZE_T_FMT "lu"
537
538
/* And APR_OFF_T_FMT */
539
#define APR_OFF_T_FMT "ld"
540
541
/* And APR_PID_T_FMT */
542
#define APR_PID_T_FMT "d"
543
544
/* And APR_INT64_T_FMT */
545
#define APR_INT64_T_FMT "ld"
546
547
/* And APR_UINT64_T_FMT */
548
#define APR_UINT64_T_FMT "lu"
549
550
/* And APR_UINT64_T_HEX_FMT */
551
#define APR_UINT64_T_HEX_FMT "lx"
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 0
592
593
/* Local machine definition for console and log output. */
594
#define APR_EOL_STR "\n"
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__)
605
typedef
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
#warning no decision has been made on APR_PATH_MAX for your platform
614
#define APR_PATH_MAX 4096
615
#endif
616
617
#define APR_DSOPATH "LD_LIBRARY_PATH"
618
619
/** @} */
620
621
/* Definitions that only Win32 programs need to compile properly. */
622
623
/* XXX These simply don't belong here, perhaps in apr_portable.h
624
* based on some APR_HAVE_PID/GID/UID?
625
*/
626
#ifdef __MINGW32__
627
#ifndef __GNUC__
628
typedef
int
pid_t;
629
#endif
630
typedef
int
uid_t;
631
typedef
int
gid_t;
632
#endif
633
634
#ifdef __cplusplus
635
}
636
#endif
637
638
#endif
/* APR_H */
Generated on Sat Sep 20 2014 20:23:52 for Apache Portable Runtime by
1.8.8