/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*************************************************************************** * Description: Global definitions and include files that should exist * * anywhere * * Author: Gal Shachor * * Version: $Revision: 1126561 $ * ***************************************************************************/ #ifndef JK_GLOBAL_H #define JK_GLOBAL_H #if defined(HAVE_CONFIG_H) #include "config.h" #endif #if defined(WIN32) /* Ignore most warnings (back down to /W3) for poorly constructed headers */ #if defined(_MSC_VER) && _MSC_VER >= 1200 #pragma warning(push, 3) #endif /* disable or reduce the frequency of... * C4057: indirection to slightly different base types * C4075: slight indirection changes (unsigned short* vs short[]) * C4100: unreferenced formal parameter * C4127: conditional expression is constant * C4163: '_rotl64' : not available as an intrinsic function * C4201: nonstandard extension nameless struct/unions * C4244: int to char/short - precision loss * C4514: unreferenced inline function removed */ #pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244) /* Ignore Microsoft's interpretation of secure development * and the POSIX string handling API */ #if defined(_MSC_VER) && _MSC_VER >= 1400 #ifndef _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE #endif #pragma warning(disable: 4996) #endif /* defined(_MSC_VER) && _MSC_VER >= 1400 */ #endif /* defined(WIN32) */ #include "jk_version.h" #ifdef HAVE_APR #include "apr_lib.h" #include "apr_strings.h" #endif #include #include #include #include #include #include #include #include #ifdef _OSD_POSIX #include "ap_config.h" #endif #ifdef AS400 #include "ap_config.h" extern char *strdup(const char *str); #endif #include #include #ifdef WIN32 #ifndef _WINDOWS_ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #ifndef _WIN32_WINNT /* Restrict the server to a subset of Windows NT 4.0 header files by default */ #define _WIN32_WINNT 0x0500 #endif #ifndef NOUSER #define NOUSER #endif #ifndef NOMCX #define NOMCX #endif #ifndef NOIME #define NOIME #endif #include /* * Add a _very_few_ declarations missing from the restricted set of headers * (If this list becomes extensive, re-enable the required headers above!) * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now */ #include #include #include #endif /* _WINDOWS_ */ #ifdef _WINDOWS_ #ifndef SIO_RCVALL #include #endif #endif #include #include #include #include #else /* WIN32 */ #include #if defined(NETWARE) && defined(__NOVELL_LIBC__) #include #define __sys_socket_h__ #define __netdb_h__ #define __netinet_in_h__ #define HAVE_VSNPRINTF #define HAVE_SNPRINTF #endif #include #include #include #include #ifdef NETWARE #ifndef _SOCKLEN_T #define _SOCKLEN_T typedef int socklen_t; #endif #else #include #include #include #if !defined(_OSD_POSIX) && !defined(AS400) && !defined(__CYGWIN__) && !defined(HPUX11) #include #endif #if !defined(HPUX11) && !defined(AS400) #include #endif #endif /* NETWARE */ #include #include #endif /* WIN32 */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define JK_WORKER_FILE_TAG ("worker_file") #define JK_MOUNT_FILE_TAG ("worker_mount_file") #define JK_LOG_LEVEL_TAG ("log_level") #define JK_LOG_FILE_TAG ("log_file") #define JK_SHM_FILE_TAG ("shm_file") #define JK_WORKER_NAME_TAG ("worker") #define JK_WORKER_FILE_DEF ("workers.properties") /* Urimap reload check time. Use 60 seconds by default. */ #define JK_URIMAP_DEF_RELOAD (60) #define JK_TRUE (1) #define JK_FALSE (0) #define JK_UNSET (-1) #define JK_LF (10) #define JK_CR (13) #define JK_SESSION_IDENTIFIER "JSESSIONID" #define JK_PATH_SESSION_IDENTIFIER ";jsessionid" #if defined(WIN32) || defined(NETWARE) #ifdef __GNUC__ #define JK_METHOD #define C_LEVEL_TRY_START #define C_LEVEL_TRY_END #define C_LEVEL_FINALLY_START #define C_LEVEL_FINALLY_END #else #define JK_METHOD __stdcall #define C_LEVEL_TRY_START __try { #define C_LEVEL_TRY_END } #define C_LEVEL_FINALLY_START __finally { #define C_LEVEL_FINALLY_END } #endif #define PATH_SEPERATOR (';') #define FILE_SEPERATOR ('\\') #define PATH_ENV_VARIABLE ("PATH") /* incompatible names... */ #ifndef strcasecmp #define strcasecmp stricmp #endif #else /* defined(WIN32) || defined(NETWARE) */ #define JK_METHOD #define C_LEVEL_TRY_START #define C_LEVEL_TRY_END #define C_LEVEL_FINALLY_START #define C_LEVEL_FINALLY_END #define PATH_SEPERATOR (':') #define FILE_SEPERATOR ('/') #define PATH_ENV_VARIABLE ("LD_LIBRARY_PATH") #endif /* defined(WIN32) || defined(NETWARE) */ /* HTTP Error codes */ #define JK_HTTP_OK 200 #define JK_HTTP_BAD_REQUEST 400 #define JK_HTTP_UNAUTHORIZED 401 #define JK_HTTP_REQUEST_TOO_LARGE 413 #define JK_HTTP_SERVER_ERROR 500 #define JK_HTTP_NOT_IMPLEMENTED 501 #define JK_HTTP_BAD_GATEWAY 502 #define JK_HTTP_SERVER_BUSY 503 #define JK_HTTP_GATEWAY_TIME_OUT 504 /* * RECO STATUS */ #define RECO_NONE 0x00 #define RECO_INITED 0x01 #define RECO_FILLED 0x02 /* * JK options */ #define JK_OPT_FWDURIMASK 0x0007 #define JK_OPT_FWDURICOMPAT 0x0001 #define JK_OPT_FWDURICOMPATUNPARSED 0x0002 #define JK_OPT_FWDURIESCAPED 0x0003 #define JK_OPT_FWDURIPROXY 0x0004 #define JK_OPT_FWDURIDEFAULT JK_OPT_FWDURIPROXY #define JK_OPT_FWDDIRS 0x0008 /* Forward local instead remote address */ #define JK_OPT_FWDLOCAL 0x0010 #define JK_OPT_FLUSHPACKETS 0x0020 #define JK_OPT_FLUSHEADER 0x0040 #define JK_OPT_DISABLEREUSE 0x0080 #define JK_OPT_FWDCERTCHAIN 0x0100 #define JK_OPT_FWDKEYSIZE 0x0200 #define JK_OPT_REJECTUNSAFE 0x0400 #define JK_OPT_DEFAULT (JK_OPT_FWDURIDEFAULT | JK_OPT_FWDKEYSIZE) /* Check for EBCDIC systems */ /* Check for Apache 2.0 running on an EBCDIC system */ #if APR_CHARSET_EBCDIC #include #define USE_CHARSET_EBCDIC #define jk_xlate_to_ascii(b, l) ap_xlate_proto_to_ascii(b, l) #define jk_xlate_from_ascii(b, l) ap_xlate_proto_from_ascii(b, l) #else /* APR_CHARSET_EBCDIC */ /* Check for Apache 1.3 running on an EBCDIC system */ #ifdef CHARSET_EBCDIC #define USE_CHARSET_EBCDIC #define jk_xlate_to_ascii(b, l) ebcdic2ascii(b, b, l) #define jk_xlate_from_ascii(b, l) ascii2ebcdic(b, b, l) #else /* CHARSET_EBCDIC */ /* We're in on an ASCII system */ #define jk_xlate_to_ascii(b, l) /* NOOP */ #define jk_xlate_from_ascii(b, l) /* NOOP */ #endif /* CHARSET_EBCDIC */ #endif /* APR_CHARSET_EBCDIC */ /* on i5/OS V5R4 HTTP/APR APIs and Datas are in UTF */ #if defined(AS400_UTF8) #undef USE_CHARSET_EBCDIC #define jk_xlate_to_ascii(b, l) /* NOOP */ #define jk_xlate_from_ascii(b, l) /* NOOP */ #endif /* jk_uint32_t defines a four byte word */ /* jk_uint64_t defines a eight byte word */ #if defined (WIN32) typedef unsigned int jk_uint32_t; #define JK_UINT32_T_FMT "u" #define JK_UINT32_T_HEX_FMT "x" typedef unsigned __int64 jk_uint64_t; #define JK_UINT64_T_FMT "I64u" #define JK_UINT64_T_HEX_FMT "I64x" #define JK_PID_T_FMT "d" #define JK_PTHREAD_T_FMT "d" #elif defined(AS400) || defined(NETWARE) typedef unsigned int jk_uint32_t; #define JK_UINT32_T_FMT "u" #define JK_UINT32_T_HEX_FMT "x" typedef unsigned long long jk_uint64_t; #define JK_UINT64_T_FMT "llu" #define JK_UINT64_T_HEX_FMT "llx" #define JK_PID_T_FMT "d" #define JK_PTHREAD_T_FMT "d" #else #include "jk_types.h" #endif #define JK_UINT32_T_FMT_LEN (sizeof(JK_UINT32_T_FMT) - 1) #define JK_UINT32_T_HEX_FMT_LEN (sizeof(JK_UINT32_T_HEX_FMT) - 1) #define JK_UINT64_T_FMT_LEN (sizeof(JK_UINT64_T_FMT) - 1) #define JK_UINT64_T_HEX_FMT_LEN (sizeof(JK_UINT64_T_HEX_FMT) - 1) #ifdef WIN32 /* For WIN32, emulate gettimeofday() using _ftime() */ #define gettimeofday(tv, tz) { struct _timeb tb; _ftime(&tb); \ (tv)->tv_sec = (long)tb.time; \ (tv)->tv_usec = tb.millitm * 1000; } #define HAVE_VSNPRINTF #define HAVE_SNPRINTF #ifdef HAVE_APR #define snprintf apr_snprintf #define vsnprintf apr_vsnprintf #else /* define snprint to match windows version */ #define snprintf _snprintf #define vsnprintf _vsnprintf #endif #endif /* WIN32" */ /* Use apr snprintf() and vsnprintf() when needed */ #if defined(HAVE_APR) #if !defined(HAVE_SNPRINTF) #define snprintf apr_snprintf #endif #if !defined(HAVE_VSNPRINTF) #define vsnprintf apr_vsnprintf #endif #endif /* Use ap snprintf() and vsnprintf() when needed */ #if !defined(HAVE_APR) #if !defined(HAVE_SNPRINTF) #define snprintf ap_snprintf #endif #if !defined(HAVE_VSNPRINTF) #define vsnprintf ap_vsnprintf #endif #endif #if defined(WIN32) || (defined(NETWARE) && defined(__NOVELL_LIBC__)) typedef SOCKET jk_sock_t; #define IS_VALID_SOCKET(s) ((s) != INVALID_SOCKET) #define JK_INVALID_SOCKET INVALID_SOCKET #else typedef int jk_sock_t; #define IS_VALID_SOCKET(s) ((s) > 0) #define JK_INVALID_SOCKET (-1) #endif #ifdef NETWARE #ifdef __NOVELL_LIBC__ #define MAX_PATH 511 #else #define MAX_PATH 255 #endif #endif #ifdef AS400_UTF8 #define strcasecmp(a,b) apr_strnatcasecmp(a,b) #endif #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* JK_GLOBAL_H */