home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 September / PCWorld_2002-09_cd.bin / Komunik / apache / apache_2.0.39-win32-x86-no_ssl.msi / Data.Cab / F208565_apr.h < prev    next >
C/C++ Source or Header  |  2002-06-17  |  14KB  |  452 lines

  1. /* ====================================================================
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  5.  * reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  *
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  *
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in
  16.  *    the documentation and/or other materials provided with the
  17.  *    distribution.
  18.  *
  19.  * 3. The end-user documentation included with the redistribution,
  20.  *    if any, must include the following acknowledgment:
  21.  *       "This product includes software developed by the
  22.  *        Apache Software Foundation (http://www.apache.org/)."
  23.  *    Alternately, this acknowledgment may appear in the software itself,
  24.  *    if and wherever such third-party acknowledgments normally appear.
  25.  *
  26.  * 4. The names "Apache" and "Apache Software Foundation" must
  27.  *    not be used to endorse or promote products derived from this
  28.  *    software without prior written permission. For written
  29.  *    permission, please contact apache@apache.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "Apache",
  32.  *    nor may "Apache" appear in their name, without prior written
  33.  *    permission of the Apache Software Foundation.
  34.  *
  35.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  * ====================================================================
  48.  *
  49.  * This software consists of voluntary contributions made by many
  50.  * individuals on behalf of the Apache Software Foundation.  For more
  51.  * information on the Apache Software Foundation, please see
  52.  * <http://www.apache.org/>.
  53.  */
  54.  
  55.  
  56. /**
  57.  * @file include\apr.h
  58.  * @brief Basic APR header for WIN32
  59.  * @remark This is a Windows specific version of apr.h. It is copied as
  60.  * apr.h at the start of a Windows build.
  61.  */
  62.  
  63. /**
  64.  * @defgroup APR APR Functions (WIN32)
  65.  * @{
  66.  */
  67.  
  68. #ifdef WIN32
  69. #ifndef APR_H
  70. #define APR_H
  71.  
  72. /* Ignore most warnings (back down to /W3) for poorly constructed headers
  73.  */
  74. #if defined(_MSC_VER) && _MSC_VER >= 1200
  75. #pragma warning(push, 3)
  76. #endif
  77.  
  78. #ifdef __cplusplus
  79. extern "C" {
  80. #endif
  81.  
  82. /* disable or reduce the frequency of...
  83.  *   C4057: indirection to slightly different base types
  84.  *   C4075: slight indirection changes (unsigned short* vs short[])
  85.  *   C4100: unreferenced formal parameter
  86.  *   C4127: conditional expression is constant
  87.  *   C4201: nonstandard extension nameless struct/unions
  88.  *   C4244: int to char/short - precision loss
  89.  *   C4514: unreferenced inline function removed
  90.  */
  91. #pragma warning(disable: 4100 4127 4201 4514; once: 4057 4075 4244)
  92.  
  93. #define APR_INLINE __inline
  94. #define APR_HAS_INLINE      1
  95. #define __attribute__(__x)
  96.  
  97. #define NO_USE_SIGACTION
  98.  
  99. #ifndef _WIN32_WCE
  100. #define APR_HAVE_ARPA_INET_H    0
  101. #define APR_HAVE_CONIO_H        1
  102. #define APR_HAVE_CRYPT_H        0
  103. #define APR_HAVE_CTYPE_H        1
  104. #define APR_HAVE_DIRENT_H       0
  105. #define APR_HAVE_ERRNO_H        1
  106. #define APR_HAVE_FCNTL_H        1
  107. #define APR_HAVE_IO_H           1
  108. #define APR_HAVE_LIMITS_H       1
  109. #define APR_HAVE_NETDB_H        0
  110. #define APR_HAVE_NETINET_IN_H   0
  111. #define APR_HAVE_NETINET_TCP_H  0
  112. #define APR_HAVE_PTHREAD_H      0
  113. #define APR_HAVE_SIGNAL_H       1
  114. #define APR_HAVE_STDARG_H       1
  115. #define APR_HAVE_STDINT_H       0
  116. #define APR_HAVE_STDIO_H        1
  117. #define APR_HAVE_STDLIB_H       1
  118. #define APR_HAVE_STRING_H       1
  119. #define APR_HAVE_STRINGS_H      0
  120. #define APR_HAVE_SYS_SENDFILE_H 0
  121. #define APR_HAVE_SYS_SIGNAL_H   0
  122. #define APR_HAVE_SYS_SOCKET_H   0
  123. #define APR_HAVE_SYS_SYSLIMITS_H 0
  124. #define APR_HAVE_SYS_TIME_H     0
  125. #define APR_HAVE_SYS_TYPES_H    1
  126. #define APR_HAVE_SYS_UIO_H      0
  127. #define APR_HAVE_SYS_WAIT_H     0
  128. #define APR_HAVE_UNISTD_H       0
  129. #define APR_HAVE_STDDEF_H       1
  130. #define APR_HAVE_PROCESS_H      1
  131. #define APR_HAVE_TIME_H         1
  132. #else
  133. #define APR_HAVE_ARPA_INET_H    0
  134. #define APR_HAVE_CONIO_H        0
  135. #define APR_HAVE_CRYPT_H        0
  136. #define APR_HAVE_CTYPE_H        0
  137. #define APR_HAVE_DIRENT_H       0
  138. #define APR_HAVE_ERRNO_H        0
  139. #define APR_HAVE_FCNTL_H        0
  140. #define APR_HAVE_IO_H           0
  141. #define APR_HAVE_LIMITS_H       0
  142. #define APR_HAVE_NETDB_H        0
  143. #define APR_HAVE_NETINET_IN_H   0
  144. #define APR_HAVE_NETINET_TCP_H  0
  145. #define APR_HAVE_PTHREAD_H      0
  146. #define APR_HAVE_SIGNAL_H       0
  147. #define APR_HAVE_STDARG_H       0
  148. #define APR_HAVE_STDINT_H       0
  149. #define APR_HAVE_STDIO_H        1
  150. #define APR_HAVE_STDLIB_H       1
  151. #define APR_HAVE_STRING_H       1
  152. #define APR_HAVE_STRINGS_H      0
  153. #define APR_HAVE_SYS_SENDFILE_H 0
  154. #define APR_HAVE_SYS_SIGNAL_H   0
  155. #define APR_HAVE_SYS_SOCKET_H   0
  156. #define APR_HAVE_SYS_SYSLIMITS_H 0
  157. #define APR_HAVE_SYS_TIME_H     0
  158. #define APR_HAVE_SYS_TYPES_H    0
  159. #define APR_HAVE_SYS_UIO_H      0
  160. #define APR_HAVE_SYS_WAIT_H     0
  161. #define APR_HAVE_UNISTD_H       0
  162. #define APR_HAVE_STDDEF_H       0
  163. #define APR_HAVE_PROCESS_H      0
  164. #define APR_HAVE_TIME_H         0
  165. #endif
  166.  
  167. #define APR_USE_FLOCK_SERIALIZE           0 
  168. #define APR_USE_SYSVSEM_SERIALIZE         0
  169. #define APR_USE_FCNTL_SERIALIZE           0
  170. #define APR_USE_PROC_PTHREAD_SERIALIZE    0 
  171. #define APR_USE_PTHREAD_SERIALIZE         0 
  172.  
  173. #define APR_HAS_FLOCK_SERIALIZE           0
  174. #define APR_HAS_SYSVSEM_SERIALIZE         0
  175. #define APR_HAS_FCNTL_SERIALIZE           0
  176. #define APR_HAS_PROC_PTHREAD_SERIALIZE    0
  177. #define APR_HAS_RWLOCK_SERIALIZE          0
  178.  
  179. #define APR_HAS_LOCK_CREATE_NP            0
  180.  
  181. #define APR_PROCESS_LOCK_IS_GLOBAL        0
  182.  
  183. #define APR_USES_ANONYMOUS_SHM            0
  184. #define APR_USES_FILEBASED_SHM            0
  185. #define APR_USES_KEYBASED_SHM             0
  186.  
  187. #define APR_FILE_BASED_SHM      0
  188. #define APR_MEM_BASED_SHM       0
  189.  
  190. #define APR_HAVE_CORKABLE_TCP   0
  191. #define APR_HAVE_GETRLIMIT      0
  192. #define APR_HAVE_IN_ADDR        1
  193. #define APR_HAVE_INET_ADDR      1
  194. #define APR_HAVE_INET_NETWORK   0
  195. #define APR_HAVE_IPV6           0
  196. #define APR_HAVE_MEMMOVE        1
  197. #define APR_HAVE_SETRLIMIT      0
  198. #define APR_HAVE_SIGACTION      0
  199. #define APR_HAVE_SIGSUSPEND     0
  200. #define APR_HAVE_SIGWAIT        0
  201. #define APR_HAVE_STRCASECMP     0
  202. #define APR_HAVE_STRDUP         1
  203. #define APR_HAVE_STRNCASECMP    0
  204. #define APR_HAVE_STRSTR         1
  205. #define APR_HAVE_MEMCHR         1
  206. #define APR_HAVE_STRUCT_RLIMIT  0
  207. #define APR_HAVE_UNION_SEMUN    0
  208.  
  209. #ifndef _WIN32_WCE
  210. #define APR_HAVE_STRICMP        1
  211. #define APR_HAVE_STRNICMP       1
  212. #else
  213. #define APR_HAVE_STRICMP        0
  214. #define APR_HAVE_STRNICMP       0
  215. #endif
  216.  
  217. /* Has windows.h already been included?  If so, our preferences don't matter,
  218.  * but we will still need the winsock things no matter what was included.
  219.  * If not, include a restricted set of windows headers to our tastes.
  220.  */
  221. #ifndef _WINDOWS_
  222. #ifndef WIN32_LEAN_AND_MEAN
  223. #define WIN32_LEAN_AND_MEAN
  224. #endif
  225. #ifndef _WIN32_WINNT
  226.  
  227. /* Restrict the server to a subset of Windows NT 4.0 header files by default
  228.  */
  229. #define _WIN32_WINNT 0x0400
  230. #endif
  231. #ifndef NOUSER
  232. #define NOUSER
  233. #endif
  234. #ifndef NOGDI
  235. #define NOGDI
  236. #endif
  237. #ifndef NOMCX
  238. #define NOMCX
  239. #endif
  240. #ifndef NOIME
  241. #define NOIME
  242. #endif
  243. #include <windows.h>
  244. /* 
  245.  * Add a _very_few_ declarations missing from the restricted set of headers
  246.  * (If this list becomes extensive, re-enable the required headers above!)
  247.  * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
  248.  */
  249. #define SW_HIDE             0
  250. #ifndef _WIN32_WCE
  251. #include <winsock2.h>
  252. #include <mswsock.h>
  253. #else
  254. #include <winsock.h>
  255. #endif
  256. #endif /* !_WINDOWS_ */
  257.  
  258. #if APR_HAVE_STDLIB_H
  259. #include <stdlib.h>
  260. #endif
  261. #if APR_HAVE_STDIO_H
  262. #include <stdio.h>
  263. #endif
  264. #if APR_HAVE_SYS_TYPES_H
  265. #include <sys/types.h>
  266. #endif
  267. #if APR_HAVE_STDDEF_H
  268. #include <stddef.h>
  269. #endif
  270. #if APR_HAVE_TIME_H
  271. #include <time.h>
  272. #endif
  273. #if APR_HAVE_PROCESS_H
  274. #include <process.h>
  275. #endif
  276.  
  277. /*  APR Feature Macros */
  278. #define APR_HAS_SHARED_MEMORY     1
  279. #define APR_HAS_THREADS           1
  280. #define APR_HAS_MMAP              1
  281. #define APR_HAS_FORK              0
  282. #define APR_HAS_RANDOM            1
  283. #define APR_HAS_XLATE             0
  284. #define APR_HAS_OTHER_CHILD       1
  285. #define APR_HAS_DSO               1
  286. #define APR_HAS_SO_ACCEPTFILTER   0
  287. #define APR_HAS_UNICODE_FS        1
  288. #define APR_HAS_PROC_INVOKED      1
  289. #ifndef _WIN32_WCE
  290. #define APR_HAS_SENDFILE          1
  291. #define APR_HAS_USER              1
  292. #define APR_HAS_LARGE_FILES       1
  293. #define APR_HAS_XTHREAD_FILES     1
  294. #else
  295. #define APR_HAS_SENDFILE          0
  296. #define APR_HAS_USER              0
  297. #define APR_HAS_LARGE_FILES       0
  298. #define APR_HAS_XTHREAD_FILES     0
  299. #endif
  300.  
  301. /* Not all platforms have a real INADDR_NONE.  This macro replaces INADDR_NONE
  302.  * on all platforms.
  303.  */
  304. #define APR_INADDR_NONE           INADDR_NONE
  305.  
  306. /* This macro indicates whether or not EBCDIC is the native character set.
  307.  */
  308. #define APR_CHARSET_EBCDIC        0
  309.  
  310. /* Typedefs that APR needs. */
  311.  
  312. typedef  unsigned char     apr_byte_t;
  313.  
  314. typedef  short             apr_int16_t;
  315. typedef  unsigned short    apr_uint16_t;
  316.                                                
  317. typedef  int               apr_int32_t;
  318. typedef  unsigned int      apr_uint32_t;
  319.                                                
  320. typedef  __int64           apr_int64_t;
  321. typedef  unsigned __int64  apr_uint64_t;
  322.  
  323. typedef  size_t      apr_size_t;
  324. #if APR_HAVE_STDDEF_H
  325. typedef  ptrdiff_t   apr_ssize_t;
  326. #else
  327. typedef  int         apr_ssize_t;
  328. #endif
  329. #if APR_HAS_LARGE_FILES
  330. typedef  __int64     apr_off_t;
  331. #else
  332. typedef  int         apr_off_t;
  333. #endif
  334. typedef  int         apr_socklen_t;
  335. typedef  int         pid_t;
  336. typedef  int         uid_t;
  337. typedef  int         gid_t;
  338.  
  339.  
  340. /* Mechanisms to properly type numeric literals */
  341.  
  342. #define APR_INT64_C(val) (val##i64)
  343.  
  344.  
  345. /* Definitions that APR programs need to work properly. */
  346.  
  347. #define APR_THREAD_FUNC          __stdcall
  348.  
  349. /**
  350.  * APR_DECLARE_EXPORT is defined when building the APR dynamic library,
  351.  * so that all public symbols are exported.
  352.  *
  353.  * APR_DECLARE_STATIC is defined when including the APR public headers,
  354.  * to provide static linkage when the dynamic library may be unavailable.
  355.  *
  356.  * APR_DECLARE_STATIC and APR_DECLARE_EXPORT are left undefined when
  357.  * including the APR public headers, to import and link the symbols from the 
  358.  * dynamic APR library and assure appropriate indirection and calling 
  359.  * conventions at compile time.
  360.  */
  361.  
  362. #if !defined(WIN32)
  363. /**
  364.  * The public APR functions are declared with APR_DECLARE(), so they may
  365.  * use the most appropriate calling convention.  Public APR functions with 
  366.  * variable arguments must use APR_DECLARE_NONSTD().
  367.  *
  368.  * @deffunc APR_DECLARE(rettype) apr_func(args);
  369.  */
  370. #define APR_DECLARE(type)            type
  371. /**
  372.  * The public APR functions using variable arguments are declared with 
  373.  * AP_DECLARE(), as they must use the C language calling convention.
  374.  *
  375.  * @deffunc APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
  376.  */
  377. #define APR_DECLARE_NONSTD(type)     type
  378. /**
  379.  * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
  380.  * This assures the appropriate indirection is invoked at compile time.
  381.  *
  382.  * @deffunc APR_DECLARE_DATA type apr_variable;
  383.  * @tip extern APR_DECLARE_DATA type apr_variable; syntax is required for
  384.  * declarations within headers to properly import the variable.
  385.  */
  386. #define APR_DECLARE_DATA
  387. #elif defined(APR_DECLARE_STATIC)
  388. #define APR_DECLARE(type)            type __stdcall
  389. #define APR_DECLARE_NONSTD(type)     type
  390. #define APR_DECLARE_DATA
  391. #elif defined(APR_DECLARE_EXPORT)
  392. #define APR_DECLARE(type)            __declspec(dllexport) type __stdcall
  393. #define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type
  394. #define APR_DECLARE_DATA             __declspec(dllexport)
  395. #else
  396. #define APR_DECLARE(type)            __declspec(dllimport) type __stdcall
  397. #define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type
  398. #define APR_DECLARE_DATA             __declspec(dllimport)
  399. #endif
  400.  
  401. #define APR_SSIZE_T_FMT          "d"
  402.  
  403. #define APR_SIZE_T_FMT           "d"
  404.  
  405. #define APR_OFF_T_FMT            "I64d"
  406.  
  407. /* XXX: Win64 portability problem? */
  408. #define APR_PID_T_FMT            "d"
  409.  
  410. #define APR_INT64_T_FMT          "I64d"
  411.  
  412. /* Local machine definition for console and log output. */
  413. #define APR_EOL_STR              "\r\n"
  414.  
  415. /* No difference between PROC and GLOBAL mutex */
  416. #define APR_PROC_MUTEX_IS_GLOBAL      1
  417.  
  418. typedef int apr_wait_t;
  419.  
  420. /* struct iovec is needed to emulate Unix writev */
  421. struct iovec {
  422.     char*  iov_base;
  423.     size_t iov_len;
  424. };
  425.  
  426. /* Nasty Win32 .h ommissions we really need */
  427. #define STDIN_FILENO  0
  428. #define STDOUT_FILENO 1
  429. #define STDERR_FILENO 2
  430.  
  431. #if APR_HAS_UNICODE_FS
  432. /* An arbitrary size that is digestable. True max is a bit less than 32000 */
  433. #define APR_PATH_MAX 8192
  434. #else /* !APR_HAS_UNICODE_FS */
  435. #define APR_PATH_MAX MAX_PATH
  436. #endif
  437.  
  438. #ifdef __cplusplus
  439. }
  440. #endif
  441.  
  442. /* Done with badly written headers
  443.  */
  444. #if defined(_MSC_VER) && _MSC_VER >= 1200
  445. #pragma warning(pop)
  446. #endif
  447.  
  448. #endif /* APR_H */
  449.  
  450. #endif /* WIN32 */
  451. /** @} */
  452.