home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / apache / apache_2.0.45-win32-x86-no_ssl.msi / Data.Cab / F232342_os.h < prev    next >
C/C++ Source or Header  |  2003-04-01  |  6KB  |  166 lines

  1. /* ====================================================================
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 2000-2003 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.  * Portions of this software are based upon public domain software
  55.  * originally written at the National Center for Supercomputing Applications,
  56.  * University of Illinois, Urbana-Champaign.
  57.  */
  58.  
  59. #ifdef WIN32
  60.  
  61. #ifndef AP_OS_H
  62. #define AP_OS_H
  63. /* Delegate windows include to the apr.h header, if USER or GDI declarations
  64.  * are required (for a window rather than console application), include
  65.  * windows.h prior to any other Apache header files.
  66.  */
  67. #include "apr_pools.h"
  68.  
  69. #include <io.h>
  70. #include <fcntl.h>
  71.  
  72. #define PLATFORM "Win32"
  73.  
  74. /* going away shortly... */
  75. #define HAVE_DRIVE_LETTERS
  76. #define HAVE_UNC_PATHS
  77. #define CASE_BLIND_FILESYSTEM
  78.  
  79. #define APACHE_MPM_DIR  "server/mpm/winnt" /* generated on unix */
  80.  
  81. #include <stddef.h>
  82.  
  83. #ifdef __cplusplus
  84. extern "C" {
  85. #endif
  86.  
  87. /* BIG RED WARNING: exit() is mapped to allow us to capture the exit
  88.  * status.  This header must only be included from modules linked into
  89.  * the ApacheCore.dll - since it's a horrible behavior to exit() from
  90.  * any module outside the main() block, and we -will- assume it's a
  91.  * fatal error.
  92.  */
  93.  
  94. AP_DECLARE_DATA extern int real_exit_code;
  95.  
  96. #define exit(status) ((exit)((real_exit_code==2) ? (real_exit_code = (status)) \
  97.                                                  : ((real_exit_code = 0), (status))))
  98.  
  99.  
  100. #ifdef AP_DECLARE_EXPORT
  101.  
  102. /* Defined in util_win32.c and available only to the core module for
  103.  * win32 MPM design.
  104.  */
  105.  
  106. AP_DECLARE(apr_status_t) ap_os_proc_filepath(char **binpath, apr_pool_t *p);
  107.  
  108. typedef enum {
  109.     AP_DLL_WINBASEAPI = 0,    // kernel32 From WinBase.h
  110.     AP_DLL_WINADVAPI = 1,     // advapi32 From WinBase.h
  111.     AP_DLL_WINSOCKAPI = 2,    // mswsock  From WinSock.h
  112.     AP_DLL_WINSOCK2API = 3,   // ws2_32   From WinSock2.h
  113.     AP_DLL_defined = 4        // must define as last idx_ + 1
  114. } ap_dlltoken_e;
  115.  
  116. FARPROC ap_load_dll_func(ap_dlltoken_e fnLib, char* fnName, int ordinal);
  117.  
  118. PSECURITY_ATTRIBUTES GetNullACL();
  119. void CleanNullACL(void *sa);
  120.  
  121. DWORD wait_for_many_objects(DWORD nCount, CONST HANDLE *lpHandles, 
  122.                             DWORD dwSeconds);
  123.  
  124. int set_listeners_noninheritable(apr_pool_t *p);
  125.  
  126.  
  127. #define AP_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \
  128.     typedef rettype (calltype *ap_winapi_fpt_##fn) args; \
  129.     static ap_winapi_fpt_##fn ap_winapi_pfn_##fn = NULL; \
  130.     __inline rettype ap_winapi_##fn args \
  131.     {   if (!ap_winapi_pfn_##fn) \
  132.             ap_winapi_pfn_##fn = (ap_winapi_fpt_##fn) ap_load_dll_func(lib, #fn, ord); \
  133.         return (*(ap_winapi_pfn_##fn)) names; }; \
  134.  
  135. /* Win2K kernel only */
  136. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINADVAPI, BOOL, WINAPI, ChangeServiceConfig2A, 0, (
  137.     SC_HANDLE hService, 
  138.     DWORD dwInfoLevel, 
  139.     LPVOID lpInfo),
  140.     (hService, dwInfoLevel, lpInfo));
  141. #undef ChangeServiceConfig2
  142. #define ChangeServiceConfig2 ap_winapi_ChangeServiceConfig2A
  143.  
  144. /* WinNT kernel only */
  145. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, (
  146.     IN HANDLE hFile),
  147.     (hFile));
  148. #undef CancelIo
  149. #define CancelIo ap_winapi_CancelIo
  150.  
  151. /* Win9x kernel only */
  152. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, DWORD, WINAPI, RegisterServiceProcess, 0, (
  153.     DWORD dwProcessId,
  154.     DWORD dwType),
  155.     (dwProcessId, dwType));
  156. #define RegisterServiceProcess ap_winapi_RegisterServiceProcess
  157.  
  158. #endif /* def AP_DECLARE_EXPORT */
  159.  
  160. #ifdef __cplusplus
  161. }
  162. #endif
  163.  
  164. #endif  /* ndef AP_OS_H */
  165. #endif  /* def WIN32 */
  166.