apr.hw revision 251886
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.hw instead.
24 *
25 * And please, make an effort to stub apr.hnw and apr.h.in in the process.
26 *
27 * This is the Win32 specific version of apr.h.  It is copied from
28 * apr.hw by the apr.dsp and libapr.dsp projects. 
29 */
30
31/**
32 * @file apr.h
33 * @brief APR Platform Definitions
34 * @remark This is a generated header generated from include/apr.h.in by
35 * ./configure, or copied from include/apr.hw or include/apr.hnw 
36 * for Win32 or Netware by those build environments, respectively.
37 */
38
39#if defined(WIN32) || defined(DOXYGEN)
40
41/* Ignore most warnings (back down to /W3) for poorly constructed headers
42 */
43#if defined(_MSC_VER) && _MSC_VER >= 1200
44#pragma warning(push, 3)
45#endif
46
47/* disable or reduce the frequency of...
48 *   C4057: indirection to slightly different base types
49 *   C4075: slight indirection changes (unsigned short* vs short[])
50 *   C4100: unreferenced formal parameter
51 *   C4127: conditional expression is constant
52 *   C4163: '_rotl64' : not available as an intrinsic function
53 *   C4201: nonstandard extension nameless struct/unions
54 *   C4244: int to char/short - precision loss
55 *   C4514: unreferenced inline function removed
56 */
57#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244)
58
59/* Ignore Microsoft's interpretation of secure development
60 * and the POSIX string handling API
61 */
62#if defined(_MSC_VER) && _MSC_VER >= 1400
63#ifndef _CRT_SECURE_NO_DEPRECATE
64#define _CRT_SECURE_NO_DEPRECATE
65#endif
66#pragma warning(disable: 4996)
67#endif
68
69/* Has windows.h already been included?  If so, our preferences don't matter,
70 * but we will still need the winsock things no matter what was included.
71 * If not, include a restricted set of windows headers to our tastes.
72 */
73#ifndef _WINDOWS_
74#ifndef WIN32_LEAN_AND_MEAN
75#define WIN32_LEAN_AND_MEAN
76#endif
77#ifndef _WIN32_WINNT
78
79/* Restrict the server to a subset of Windows XP header files by default
80 */
81#define _WIN32_WINNT 0x0501
82#endif
83#ifndef NOUSER
84#define NOUSER
85#endif
86#ifndef NOMCX
87#define NOMCX
88#endif
89#ifndef NOIME
90#define NOIME
91#endif
92#include <windows.h>
93/* 
94 * Add a _very_few_ declarations missing from the restricted set of headers
95 * (If this list becomes extensive, re-enable the required headers above!)
96 * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
97 */
98#define SW_HIDE             0
99#ifndef _WIN32_WCE
100#include <winsock2.h>
101#include <ws2tcpip.h>
102#include <mswsock.h>
103#else
104#include <winsock.h>
105#endif
106#endif /* !_WINDOWS_ */
107
108/**
109 * @defgroup APR Apache Portability Runtime library
110 * @{
111 */
112/**
113 * @defgroup apr_platform Platform Definitions
114 * @{
115 * @warning
116 * <strong><em>The actual values of macros and typedefs on this page<br>
117 * are platform specific and should NOT be relied upon!</em></strong>
118 */
119
120#define APR_INLINE __inline
121#define APR_HAS_INLINE          1
122#if !defined(__GNUC__) && !defined(__attribute__)
123#define __attribute__(__x)
124#endif
125
126#ifndef _WIN32_WCE
127#define APR_HAVE_ARPA_INET_H    0
128#define APR_HAVE_CONIO_H        1
129#define APR_HAVE_CRYPT_H        0
130#define APR_HAVE_CTYPE_H        1
131#define APR_HAVE_DIRENT_H       0
132#define APR_HAVE_ERRNO_H        1
133#define APR_HAVE_FCNTL_H        1
134#define APR_HAVE_IO_H           1
135#define APR_HAVE_LIMITS_H       1
136#define APR_HAVE_NETDB_H        0
137#define APR_HAVE_NETINET_IN_H   0
138#define APR_HAVE_NETINET_SCTP_H 0
139#define APR_HAVE_NETINET_SCTP_UIO_H 0
140#define APR_HAVE_NETINET_TCP_H  0
141#define APR_HAVE_PTHREAD_H      0
142#define APR_HAVE_SEMAPHORE_H    0
143#define APR_HAVE_SIGNAL_H       1
144#define APR_HAVE_STDARG_H       1
145#define APR_HAVE_STDINT_H       0
146#define APR_HAVE_STDIO_H        1
147#define APR_HAVE_STDLIB_H       1
148#define APR_HAVE_STRING_H       1
149#define APR_HAVE_STRINGS_H      0
150#define APR_HAVE_SYS_IOCTL_H    0
151#define APR_HAVE_SYS_SENDFILE_H 0
152#define APR_HAVE_SYS_SIGNAL_H   0
153#define APR_HAVE_SYS_SOCKET_H   0
154#define APR_HAVE_SYS_SOCKIO_H   0
155#define APR_HAVE_SYS_SYSLIMITS_H 0
156#define APR_HAVE_SYS_TIME_H     0
157#define APR_HAVE_SYS_TYPES_H    1
158#define APR_HAVE_SYS_UIO_H      0
159#define APR_HAVE_SYS_UN_H       0
160#define APR_HAVE_SYS_WAIT_H     0
161#define APR_HAVE_TIME_H         1
162#define APR_HAVE_UNISTD_H       0
163#define APR_HAVE_STDDEF_H       1
164#define APR_HAVE_PROCESS_H      1
165#else
166#define APR_HAVE_ARPA_INET_H    0
167#define APR_HAVE_CONIO_H        0
168#define APR_HAVE_CRYPT_H        0
169#define APR_HAVE_CTYPE_H        0
170#define APR_HAVE_DIRENT_H       0
171#define APR_HAVE_ERRNO_H        0
172#define APR_HAVE_FCNTL_H        0
173#define APR_HAVE_IO_H           0
174#define APR_HAVE_LIMITS_H       0
175#define APR_HAVE_NETDB_H        0
176#define APR_HAVE_NETINET_IN_H   0
177#define APR_HAVE_NETINET_SCTP_H 0
178#define APR_HAVE_NETINET_SCTP_UIO_H 0
179#define APR_HAVE_NETINET_TCP_H  0
180#define APR_HAVE_PTHREAD_H      0
181#define APR_HAVE_SEMAPHORE_H    0
182#define APR_HAVE_SIGNAL_H       0
183#define APR_HAVE_STDARG_H       0
184#define APR_HAVE_STDINT_H       0
185#define APR_HAVE_STDIO_H        1
186#define APR_HAVE_STDLIB_H       1
187#define APR_HAVE_STRING_H       1
188#define APR_HAVE_STRINGS_H      0
189#define APR_HAVE_SYS_IOCTL_H    0
190#define APR_HAVE_SYS_SENDFILE_H 0
191#define APR_HAVE_SYS_SIGNAL_H   0
192#define APR_HAVE_SYS_SOCKET_H   0
193#define APR_HAVE_SYS_SOCKIO_H   0
194#define APR_HAVE_SYS_SYSLIMITS_H 0
195#define APR_HAVE_SYS_TIME_H     0
196#define APR_HAVE_SYS_TYPES_H    0
197#define APR_HAVE_SYS_UIO_H      0
198#define APR_HAVE_SYS_UN_H       0
199#define APR_HAVE_SYS_WAIT_H     0
200#define APR_HAVE_TIME_H         0
201#define APR_HAVE_UNISTD_H       0
202#define APR_HAVE_STDDEF_H       0
203#define APR_HAVE_PROCESS_H      0
204#endif
205
206/** @} */
207/** @} */
208
209/* We don't include our conditional headers within the doxyblocks 
210 * or the extern "C" namespace 
211 */
212
213#if APR_HAVE_STDLIB_H
214#include <stdlib.h>
215#endif
216#if APR_HAVE_STDIO_H
217#include <stdio.h>
218#endif
219#if APR_HAVE_SYS_TYPES_H
220#include <sys/types.h>
221#endif
222#if APR_HAVE_STDDEF_H
223#include <stddef.h>
224#endif
225#if APR_HAVE_TIME_H
226#include <time.h>
227#endif
228#if APR_HAVE_PROCESS_H
229#include <process.h>
230#endif
231
232#ifdef __cplusplus
233extern "C" {
234#endif
235
236/**
237 * @addtogroup apr_platform
238 * @ingroup APR 
239 * @{
240 */
241
242#define APR_HAVE_SHMEM_MMAP_TMP     0
243#define APR_HAVE_SHMEM_MMAP_SHM     0
244#define APR_HAVE_SHMEM_MMAP_ZERO    0
245#define APR_HAVE_SHMEM_SHMGET_ANON  0
246#define APR_HAVE_SHMEM_SHMGET       0
247#define APR_HAVE_SHMEM_MMAP_ANON    0
248#define APR_HAVE_SHMEM_BEOS         0
249
250#define APR_USE_SHMEM_MMAP_TMP     0
251#define APR_USE_SHMEM_MMAP_SHM     0
252#define APR_USE_SHMEM_MMAP_ZERO    0
253#define APR_USE_SHMEM_SHMGET_ANON  0
254#define APR_USE_SHMEM_SHMGET       0
255#define APR_USE_SHMEM_MMAP_ANON    0
256#define APR_USE_SHMEM_BEOS         0
257
258#define APR_USE_FLOCK_SERIALIZE           0 
259#define APR_USE_POSIXSEM_SERIALIZE        0
260#define APR_USE_SYSVSEM_SERIALIZE         0
261#define APR_USE_FCNTL_SERIALIZE           0
262#define APR_USE_PROC_PTHREAD_SERIALIZE    0 
263#define APR_USE_PTHREAD_SERIALIZE         0 
264
265#define APR_HAS_FLOCK_SERIALIZE           0
266#define APR_HAS_SYSVSEM_SERIALIZE         0
267#define APR_HAS_POSIXSEM_SERIALIZE        0
268#define APR_HAS_FCNTL_SERIALIZE           0
269#define APR_HAS_PROC_PTHREAD_SERIALIZE    0
270
271#define APR_PROCESS_LOCK_IS_GLOBAL        0
272
273#define APR_HAVE_CORKABLE_TCP   0
274#define APR_HAVE_GETRLIMIT      0
275#define APR_HAVE_ICONV          0
276#define APR_HAVE_IN_ADDR        1
277#define APR_HAVE_INET_ADDR      1
278#define APR_HAVE_INET_NETWORK   0
279#define APR_HAVE_IPV6           0
280#define APR_HAVE_MEMMOVE        1
281#define APR_HAVE_SETRLIMIT      0
282#define APR_HAVE_SIGACTION      0
283#define APR_HAVE_SIGSUSPEND     0
284#define APR_HAVE_SIGWAIT        0
285#define APR_HAVE_SA_STORAGE     0
286#define APR_HAVE_STRCASECMP     0
287#define APR_HAVE_STRDUP         1
288#define APR_HAVE_STRNCASECMP    0
289#define APR_HAVE_STRSTR         1
290#define APR_HAVE_MEMCHR         1
291#define APR_HAVE_STRUCT_RLIMIT  0
292#define APR_HAVE_UNION_SEMUN    0
293#define APR_HAVE_SCTP           0
294#define APR_HAVE_IOVEC          0
295
296#ifndef _WIN32_WCE
297#define APR_HAVE_STRICMP        1
298#define APR_HAVE_STRNICMP       1
299#else
300#define APR_HAVE_STRICMP        0
301#define APR_HAVE_STRNICMP       0
302#endif
303
304/*  APR Feature Macros */
305#define APR_HAS_SHARED_MEMORY     1
306#define APR_HAS_THREADS           1
307#define APR_HAS_MMAP              1
308#define APR_HAS_FORK              0
309#define APR_HAS_RANDOM            1
310#define APR_HAS_OTHER_CHILD       1
311#define APR_HAS_DSO               1
312#define APR_HAS_SO_ACCEPTFILTER   0
313#define APR_HAS_UNICODE_FS        1
314#define APR_HAS_PROC_INVOKED      1
315#define APR_HAS_OS_UUID           1
316
317#ifndef _WIN32_WCE
318#define APR_HAS_SENDFILE          1
319#define APR_HAS_USER              1
320#define APR_HAS_LARGE_FILES       1
321#define APR_HAS_XTHREAD_FILES     1
322#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1
323#else
324#define APR_HAS_SENDFILE          0
325#define APR_HAS_USER              0
326#define APR_HAS_LARGE_FILES       0
327#define APR_HAS_XTHREAD_FILES     0
328#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0
329#endif
330
331/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
332 * to poll on files/pipes.
333 */
334#define APR_FILES_AS_SOCKETS      0
335
336/* This macro indicates whether or not EBCDIC is the native character set.
337 */
338#define APR_CHARSET_EBCDIC        0
339
340/* If we have a TCP implementation that can be "corked", what flag
341 * do we use?
342 */
343#define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@
344
345/* Is the TCP_NODELAY socket option inherited from listening sockets?
346 */
347#define APR_TCP_NODELAY_INHERITED 1
348
349/* Is the O_NONBLOCK flag inherited from listening sockets?
350 */
351#define APR_O_NONBLOCK_INHERITED  1
352
353/* Typedefs that APR needs. */
354
355typedef  unsigned char     apr_byte_t;
356
357typedef  short             apr_int16_t;
358typedef  unsigned short    apr_uint16_t;
359
360typedef  int               apr_int32_t;
361typedef  unsigned int      apr_uint32_t;
362
363typedef  __int64           apr_int64_t;
364typedef  unsigned __int64  apr_uint64_t;
365
366typedef  size_t      apr_size_t;
367#if APR_HAVE_STDDEF_H
368typedef  ptrdiff_t   apr_ssize_t;
369#else
370typedef  int         apr_ssize_t;
371#endif
372#if APR_HAS_LARGE_FILES
373typedef  __int64     apr_off_t;
374#else
375typedef  int         apr_off_t;
376#endif
377typedef  int         apr_socklen_t;
378typedef  apr_uint64_t      apr_ino_t;
379
380#ifdef WIN64
381#define APR_SIZEOF_VOIDP   8
382#else
383#define APR_SIZEOF_VOIDP   4
384#endif
385
386#if APR_SIZEOF_VOIDP == 8
387typedef  apr_uint64_t            apr_uintptr_t;
388#else
389typedef  apr_uint32_t            apr_uintptr_t;
390#endif
391
392/* Are we big endian? */
393/* XXX: Fatal assumption on Alpha platforms */
394#define APR_IS_BIGENDIAN	0
395
396/* Mechanisms to properly type numeric literals */
397
398#ifndef __GNUC__
399#define APR_INT64_C(val) (val##i64)
400#define APR_UINT64_C(val) (val##Ui64)
401#else
402#define APR_INT64_C(val) (val##LL)
403#define APR_UINT64_C(val) (val##ULL)
404#endif
405
406#ifdef INT16_MIN
407#define APR_INT16_MIN   INT16_MIN
408#else
409#define APR_INT16_MIN   (-0x7fff - 1)
410#endif
411
412#ifdef INT16_MAX
413#define APR_INT16_MAX  INT16_MAX
414#else
415#define APR_INT16_MAX   (0x7fff)
416#endif
417
418#ifdef UINT16_MAX
419#define APR_UINT16_MAX  UINT16_MAX
420#else
421#define APR_UINT16_MAX  (0xffff)
422#endif
423
424#ifdef INT32_MIN
425#define APR_INT32_MIN   INT32_MIN
426#else
427#define APR_INT32_MIN   (-0x7fffffff - 1)
428#endif
429
430#ifdef INT32_MAX
431#define APR_INT32_MAX  INT32_MAX
432#else
433#define APR_INT32_MAX  0x7fffffff
434#endif
435
436#ifdef UINT32_MAX
437#define APR_UINT32_MAX  UINT32_MAX
438#else
439#define APR_UINT32_MAX  (0xffffffffU)
440#endif
441
442#ifdef INT64_MIN
443#define APR_INT64_MIN   INT64_MIN
444#else
445#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
446#endif
447
448#ifdef INT64_MAX
449#define APR_INT64_MAX   INT64_MAX
450#else
451#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
452#endif
453
454#ifdef UINT64_MAX
455#define APR_UINT64_MAX  UINT64_MAX
456#else
457#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
458#endif
459
460#define APR_SIZE_MAX    (~((apr_size_t)0))
461
462/* Definitions that APR programs need to work properly. */
463
464/**
465 * APR public API wrap for C++ compilers.
466 */
467#ifdef __cplusplus
468#define APR_BEGIN_DECLS     extern "C" {
469#define APR_END_DECLS       }
470#else
471#define APR_BEGIN_DECLS
472#define APR_END_DECLS
473#endif
474
475/** 
476 * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 
477 * so that they follow the platform's calling convention.
478 * <PRE>
479 *
480 * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
481 *
482 * </PRE>
483 */
484#define APR_THREAD_FUNC  __stdcall
485
486
487#if defined(DOXYGEN) || !defined(WIN32)
488
489/**
490 * The public APR functions are declared with APR_DECLARE(), so they may
491 * use the most appropriate calling convention.  Public APR functions with 
492 * variable arguments must use APR_DECLARE_NONSTD().
493 *
494 * @remark Both the declaration and implementations must use the same macro.
495 *
496 * <PRE>
497 * APR_DECLARE(rettype) apr_func(args)
498 * </PRE>
499 * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
500 * @remark Note that when APR compiles the library itself, it passes the 
501 * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 
502 * to export public symbols from the dynamic library build.\n
503 * The user must define the APR_DECLARE_STATIC when compiling to target
504 * the static APR library on some platforms (e.g. Win32.)  The public symbols 
505 * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
506 * By default, compiling an application and including the APR public
507 * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
508 * linked to the dynamic library.
509 */
510#define APR_DECLARE(type)            type 
511
512/**
513 * The public APR functions using variable arguments are declared with 
514 * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
515 * @see APR_DECLARE @see APR_DECLARE_DATA
516 * @remark Both the declaration and implementations must use the same macro.
517 * <PRE>
518 *
519 * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
520 *
521 * </PRE>
522 */
523#define APR_DECLARE_NONSTD(type)     type
524
525/**
526 * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
527 * This assures the appropriate indirection is invoked at compile time.
528 * @see APR_DECLARE @see APR_DECLARE_NONSTD
529 * @remark Note that the declaration and implementations use different forms,
530 * but both must include the macro.
531 * 
532 * <PRE>
533 *
534 * extern APR_DECLARE_DATA type apr_variable;\n
535 * APR_DECLARE_DATA type apr_variable = value;
536 *
537 * </PRE>
538 */
539#define APR_DECLARE_DATA
540
541#elif defined(APR_DECLARE_STATIC)
542#define APR_DECLARE(type)            type __stdcall
543#define APR_DECLARE_NONSTD(type)     type __cdecl
544#define APR_DECLARE_DATA
545#elif defined(APR_DECLARE_EXPORT)
546#define APR_DECLARE(type)            __declspec(dllexport) type __stdcall
547#define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type __cdecl
548#define APR_DECLARE_DATA             __declspec(dllexport)
549#else
550#define APR_DECLARE(type)            __declspec(dllimport) type __stdcall
551#define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type __cdecl
552#define APR_DECLARE_DATA             __declspec(dllimport)
553#endif
554
555#ifdef WIN64
556#define APR_SSIZE_T_FMT          "I64d"
557#define APR_SIZE_T_FMT           "I64u"
558#else
559#define APR_SSIZE_T_FMT          "d"
560#define APR_SIZE_T_FMT           "u"
561#endif
562
563#if APR_HAS_LARGE_FILES
564#define APR_OFF_T_FMT            "I64d"
565#else
566#define APR_OFF_T_FMT            "d"
567#endif
568
569#define APR_PID_T_FMT            "d"
570
571#define APR_INT64_T_FMT          "I64d"
572#define APR_UINT64_T_FMT         "I64u"
573#define APR_UINT64_T_HEX_FMT     "I64x"
574
575/* No difference between PROC and GLOBAL mutex */
576#define APR_PROC_MUTEX_IS_GLOBAL      1
577
578/* Local machine definition for console and log output. */
579#define APR_EOL_STR              "\r\n"
580
581typedef int apr_wait_t;
582
583#if APR_HAS_UNICODE_FS
584/* An arbitrary size that is digestable. True max is a bit less than 32000 */
585#define APR_PATH_MAX 8192
586#else /* !APR_HAS_UNICODE_FS */
587#define APR_PATH_MAX MAX_PATH
588#endif
589
590#define APR_DSOPATH "PATH"
591
592/** @} */
593
594/* Definitions that only Win32 programs need to compile properly. */
595
596/* XXX These simply don't belong here, perhaps in apr_portable.h
597 * based on some APR_HAVE_PID/GID/UID?
598 */
599#ifndef __GNUC__
600typedef  int         pid_t;
601#endif
602typedef  int         uid_t;
603typedef  int         gid_t;
604
605/* Win32 .h ommissions we really need */
606#define STDIN_FILENO  0
607#define STDOUT_FILENO 1
608#define STDERR_FILENO 2
609
610#if APR_HAVE_IPV6
611
612/* Appears in later flavors, not the originals. */
613#ifndef in_addr6
614#define  in6_addr    in_addr6
615#endif
616
617#ifndef WS2TCPIP_INLINE
618#define IN6_IS_ADDR_V4MAPPED(a) \
619    (   (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \
620     && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
621#endif
622
623#endif /* APR_HAS_IPV6 */
624
625#ifdef __cplusplus
626}
627#endif
628
629/* Done with badly written headers
630 */
631#if defined(_MSC_VER) && _MSC_VER >= 1200
632#pragma warning(pop)
633#pragma warning(disable: 4996)
634#endif
635
636#endif /* WIN32 */
637
638#endif /* APR_H */
639