Apache Portable Runtime
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
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 0
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
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 0
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 1
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 4
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
long
apr_int64_t;
353
typedef
unsigned
long
long
apr_uint64_t;
354
#endif
355
356
typedef
size_t
apr_size_t;
357
typedef
ssize_t apr_ssize_t;
358
typedef
off64_t apr_off_t;
359
typedef
socklen_t apr_socklen_t;
360
typedef
unsigned
long
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
/**
457
* The public APR functions are declared with APR_DECLARE(), so they may
458
* use the most appropriate calling convention. Public APR functions with
459
* variable arguments must use APR_DECLARE_NONSTD().
460
*
461
* @remark Both the declaration and implementations must use the same macro.
462
*
463
* <PRE>
464
* APR_DECLARE(rettype) apr_func(args)
465
* </PRE>
466
* @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
467
* @remark Note that when APR compiles the library itself, it passes the
468
* symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32)
469
* to export public symbols from the dynamic library build.\n
470
* The user must define the APR_DECLARE_STATIC when compiling to target
471
* the static APR library on some platforms (e.g. Win32.) The public symbols
472
* are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
473
* By default, compiling an application and including the APR public
474
* headers, without defining APR_DECLARE_STATIC, will prepare the code to be
475
* linked to the dynamic library.
476
*/
477
#define APR_DECLARE(type) type
478
479
/**
480
* The public APR functions using variable arguments are declared with
481
* APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
482
* @see APR_DECLARE @see APR_DECLARE_DATA
483
* @remark Both the declaration and implementations must use the same macro.
484
*/
485
/**
486
* @code
487
* APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
488
* @endcode
489
*/
490
#define APR_DECLARE_NONSTD(type) type
491
492
/**
493
* The public APR variables are declared with AP_MODULE_DECLARE_DATA.
494
* This assures the appropriate indirection is invoked at compile time.
495
* @see APR_DECLARE @see APR_DECLARE_NONSTD
496
* @remark Note that the declaration and implementations use different forms,
497
* but both must include the macro.
498
*
499
*/
500
/**
501
* @code
502
* extern APR_DECLARE_DATA type apr_variable;\n
503
* APR_DECLARE_DATA type apr_variable = value;
504
* @endcode
505
*/
506
#define APR_DECLARE_DATA
507
508
/* Define APR_SSIZE_T_FMT.
509
* If ssize_t is an integer we define it to be "d",
510
* if ssize_t is a long int we define it to be "ld",
511
* if ssize_t is neither we declare an error here.
512
* I looked for a better way to define this here, but couldn't find one, so
513
* to find the logic for this definition search for "ssize_t_fmt" in
514
* configure.in.
515
*/
516
517
#define APR_SSIZE_T_FMT "d"
518
519
/* And APR_SIZE_T_FMT */
520
#define APR_SIZE_T_FMT "u"
521
522
/* And APR_OFF_T_FMT */
523
#define APR_OFF_T_FMT APR_INT64_T_FMT
524
525
/* And APR_PID_T_FMT */
526
#define APR_PID_T_FMT "d"
527
528
/* And APR_INT64_T_FMT */
529
#define APR_INT64_T_FMT "lld"
530
531
/* And APR_UINT64_T_FMT */
532
#define APR_UINT64_T_FMT "llu"
533
534
/* And APR_UINT64_T_HEX_FMT */
535
#define APR_UINT64_T_HEX_FMT "llx"
536
537
/*
538
* Ensure we work with universal binaries on Darwin
539
*/
540
#ifdef DARWIN_10
541
542
#undef APR_HAS_LARGE_FILES
543
#undef APR_SIZEOF_VOIDP
544
#undef APR_INT64_T_FMT
545
#undef APR_UINT64_T_FMT
546
#undef APR_UINT64_T_HEX_FMT
547
548
#ifdef __LP64__
549
#define APR_HAS_LARGE_FILES 0
550
#define APR_SIZEOF_VOIDP 8
551
#define APR_INT64_T_FMT "ld"
552
#define APR_UINT64_T_FMT "lu"
553
#define APR_UINT64_T_HEX_FMT "lx"
554
#else
555
#define APR_HAS_LARGE_FILES 1
556
#define APR_SIZEOF_VOIDP 4
557
#define APR_INT64_T_FMT "lld"
558
#define APR_UINT64_T_FMT "llu"
559
#define APR_UINT64_T_HEX_FMT "llx"
560
#endif
561
562
#undef APR_IS_BIGENDIAN
563
#ifdef __BIG_ENDIAN__
564
#define APR_IS_BIGENDIAN 1
565
#else
566
#define APR_IS_BIGENDIAN 0
567
#endif
568
569
#undef APR_OFF_T_FMT
570
#define APR_OFF_T_FMT "lld"
571
572
#endif
/* DARWIN_10 */
573
574
/* Does the proc mutex lock threads too */
575
#define APR_PROC_MUTEX_IS_GLOBAL 0
576
577
/* Local machine definition for console and log output. */
578
#define APR_EOL_STR "\n"
579
580
#if APR_HAVE_SYS_WAIT_H
581
#ifdef WEXITSTATUS
582
#define apr_wait_t int
583
#else
584
#define apr_wait_t union wait
585
#define WEXITSTATUS(status) (int)((status).w_retcode)
586
#define WTERMSIG(status) (int)((status).w_termsig)
587
#endif
/* !WEXITSTATUS */
588
#elif defined(__MINGW32__)
589
typedef
int
apr_wait_t;
590
#endif
/* HAVE_SYS_WAIT_H */
591
592
#if defined(PATH_MAX)
593
#define APR_PATH_MAX PATH_MAX
594
#elif defined(_POSIX_PATH_MAX)
595
#define APR_PATH_MAX _POSIX_PATH_MAX
596
#else
597
#warning no decision has been made on APR_PATH_MAX for your platform
598
#define APR_PATH_MAX 4096
599
#endif
600
601
#define APR_DSOPATH "LD_LIBRARY_PATH"
602
603
/** @} */
604
605
/* Definitions that only Win32 programs need to compile properly. */
606
607
/* XXX These simply don't belong here, perhaps in apr_portable.h
608
* based on some APR_HAVE_PID/GID/UID?
609
*/
610
#ifdef __MINGW32__
611
#ifndef __GNUC__
612
typedef
int
pid_t;
613
#endif
614
typedef
int
uid_t;
615
typedef
int
gid_t;
616
#endif
617
618
#ifdef __cplusplus
619
}
620
#endif
621
622
#endif
/* APR_H */
Generated on Sun Jul 7 2013 03:35:09 for Apache Portable Runtime by
1.8.1.2