| /* |
| * 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 <shachor@il.ibm.com> * |
| * Version: $Revision$ * |
| ***************************************************************************/ |
| |
| #ifndef JK_GLOBAL_H |
| #define JK_GLOBAL_H |
| |
| #if !defined(WIN32) && !defined(AS400) && !defined(NETWARE) |
| #include "portable.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 |
| #endif |
| |
| #include "jk_version.h" |
| |
| #ifdef HAVE_APR |
| #include "apr_lib.h" |
| #include "apr_strings.h" |
| #endif |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <stdarg.h> |
| #include <errno.h> |
| #include <time.h> |
| #include <ctype.h> |
| |
| #ifdef _OSD_POSIX |
| #include "ap_config.h" |
| #endif |
| |
| #ifdef AS400 |
| #include "ap_config.h" |
| extern char *strdup(const char *str); |
| #endif |
| |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| |
| #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 0x0400 |
| #endif |
| #ifndef NOUSER |
| #define NOUSER |
| #endif |
| #ifndef NOMCX |
| #define NOMCX |
| #endif |
| #ifndef NOIME |
| #define NOIME |
| #endif |
| #include <windows.h> |
| /* |
| * 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 <winsock2.h> |
| #include <mswsock.h> |
| #include <ws2tcpip.h> |
| #endif |
| #include <sys/timeb.h> |
| #include <process.h> |
| #else |
| #include <unistd.h> |
| #if defined(NETWARE) && defined(__NOVELL_LIBC__) |
| #include "novsock2.h" |
| #define __sys_socket_h__ |
| #define __netdb_h__ |
| #define __netinet_in_h__ |
| #define HAVE_VSNPRINTF |
| #define HAVE_SNPRINTF |
| #endif |
| #include <netdb.h> |
| #include <netinet/in.h> |
| #include <sys/socket.h> |
| #include <fcntl.h> |
| #ifndef NETWARE |
| #include <netinet/tcp.h> |
| #include <arpa/inet.h> |
| #include <sys/un.h> |
| #if !defined(_OSD_POSIX) && !defined(AS400) && !defined(CYGWIN) && !defined(HPUX11) |
| #include <sys/socketvar.h> |
| #endif |
| #if !defined(HPUX11) && !defined(AS400) |
| #include <sys/select.h> |
| #endif |
| #endif |
| |
| #include <sys/time.h> |
| #include <sys/ioctl.h> |
| #endif |
| |
| #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) |
| #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 } |
| #define PATH_SEPERATOR (';') |
| #define FILE_SEPERATOR ('\\') |
| #define PATH_ENV_VARIABLE ("PATH") |
| |
| /* incompatible names... */ |
| #ifndef strcasecmp |
| #define strcasecmp stricmp |
| #endif |
| #else |
| #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 |
| |
| /* HTTP Error codes |
| */ |
| |
| #define JK_HTTP_OK 200 |
| #define JK_HTTP_BAD_REQUEST 400 |
| #define JK_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_FWDKEYSIZE 0x0200 |
| |
| #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 |
| |
| /* Check for EBCDIC systems */ |
| |
| /* Check for Apache 2.0 running on an EBCDIC system */ |
| #if APR_CHARSET_EBCDIC |
| |
| #include <util_ebcdic.h> |
| |
| #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" |
| #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" |
| #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 = 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 |
| |
| /* 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 AS400_UTF8 |
| #define strcasecmp(a,b) apr_strnatcasecmp(a,b) |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* JK_GLOBAL_H */ |