github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/include/os.h (about) 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 * @file win32/os.h 19 * @brief This file in included in all Apache source code. It contains definitions 20 * of facilities available on _this_ operating system (HAVE_* macros), 21 * and prototypes of OS specific functions defined in os.c or os-inline.c 22 * 23 * @defgroup APACHE_OS_WIN32 win32 24 * @ingroup APACHE_OS 25 * @{ 26 */ 27 28 #ifdef WIN32 29 30 #ifndef AP_OS_H 31 #define AP_OS_H 32 /* Delegate windows include to the apr.h header, if USER or GDI declarations 33 * are required (for a window rather than console application), include 34 * windows.h prior to any other Apache header files. 35 */ 36 #include "apr_pools.h" 37 38 #include <io.h> 39 #include <fcntl.h> 40 41 #ifdef _WIN64 42 #define PLATFORM "Win64" 43 #else 44 #define PLATFORM "Win32" 45 #endif 46 47 /* going away shortly... */ 48 #define HAVE_DRIVE_LETTERS 49 #define HAVE_UNC_PATHS 50 #define CASE_BLIND_FILESYSTEM 51 52 #define APACHE_MPM_DIR "server/mpm/winnt" /* generated on unix */ 53 54 #include <stddef.h> 55 #include <stdlib.h> /* for exit() */ 56 57 #ifdef __cplusplus 58 extern "C" { 59 #endif 60 61 /* BIG RED WARNING: exit() is mapped to allow us to capture the exit 62 * status. This header must only be included from modules linked into 63 * the ApacheCore.dll - since it's a horrible behavior to exit() from 64 * any module outside the main() block, and we -will- assume it's a 65 * fatal error. 66 */ 67 68 AP_DECLARE_DATA extern int ap_real_exit_code; 69 70 #define exit(status) ((exit)((ap_real_exit_code==2) \ 71 ? (ap_real_exit_code = (status)) \ 72 : ((ap_real_exit_code = 0), (status)))) 73 74 #ifdef AP_DECLARE_EXPORT 75 76 /* Defined in util_win32.c and available only to the core module for 77 * win32 MPM design. 78 */ 79 80 AP_DECLARE(apr_status_t) ap_os_proc_filepath(char **binpath, apr_pool_t *p); 81 82 typedef enum { 83 AP_DLL_WINBASEAPI = 0, // kernel32 From WinBase.h 84 AP_DLL_WINADVAPI = 1, // advapi32 From WinBase.h 85 AP_DLL_WINSOCKAPI = 2, // mswsock From WinSock.h 86 AP_DLL_WINSOCK2API = 3, // ws2_32 From WinSock2.h 87 AP_DLL_defined = 4 // must define as last idx_ + 1 88 } ap_dlltoken_e; 89 90 FARPROC ap_load_dll_func(ap_dlltoken_e fnLib, char* fnName, int ordinal); 91 92 PSECURITY_ATTRIBUTES GetNullACL(void); 93 void CleanNullACL(void *sa); 94 95 int set_listeners_noninheritable(apr_pool_t *p); 96 97 98 #define AP_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \ 99 typedef rettype (calltype *ap_winapi_fpt_##fn) args; \ 100 static ap_winapi_fpt_##fn ap_winapi_pfn_##fn = NULL; \ 101 static APR_INLINE rettype ap_winapi_##fn args \ 102 { if (!ap_winapi_pfn_##fn) \ 103 ap_winapi_pfn_##fn = (ap_winapi_fpt_##fn) ap_load_dll_func(lib, #fn, ord); \ 104 return (*(ap_winapi_pfn_##fn)) names; }; \ 105 106 /* Win2K kernel only */ 107 AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINADVAPI, BOOL, WINAPI, ChangeServiceConfig2A, 0, ( 108 SC_HANDLE hService, 109 DWORD dwInfoLevel, 110 LPVOID lpInfo), 111 (hService, dwInfoLevel, lpInfo)); 112 #undef ChangeServiceConfig2 113 #define ChangeServiceConfig2 ap_winapi_ChangeServiceConfig2A 114 115 /* WinNT kernel only */ 116 AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, ( 117 IN HANDLE hFile), 118 (hFile)); 119 #undef CancelIo 120 #define CancelIo ap_winapi_CancelIo 121 122 /* Win9x kernel only */ 123 AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, DWORD, WINAPI, RegisterServiceProcess, 0, ( 124 DWORD dwProcessId, 125 DWORD dwType), 126 (dwProcessId, dwType)); 127 #define RegisterServiceProcess ap_winapi_RegisterServiceProcess 128 129 #endif /* def AP_DECLARE_EXPORT */ 130 131 #ifdef __cplusplus 132 } 133 #endif 134 135 #endif /* ndef AP_OS_H */ 136 #endif /* def WIN32 */ 137 /** @} */