174664626SKris Kennaway /* e_os.h */ 274664626SKris Kennaway /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 374664626SKris Kennaway * All rights reserved. 474664626SKris Kennaway * 574664626SKris Kennaway * This package is an SSL implementation written 674664626SKris Kennaway * by Eric Young (eay@cryptsoft.com). 774664626SKris Kennaway * The implementation was written so as to conform with Netscapes SSL. 874664626SKris Kennaway * 974664626SKris Kennaway * This library is free for commercial and non-commercial use as long as 1074664626SKris Kennaway * the following conditions are aheared to. The following conditions 1174664626SKris Kennaway * apply to all code found in this distribution, be it the RC4, RSA, 1274664626SKris Kennaway * lhash, DES, etc., code; not just the SSL code. The SSL documentation 1374664626SKris Kennaway * included with this distribution is covered by the same copyright terms 1474664626SKris Kennaway * except that the holder is Tim Hudson (tjh@cryptsoft.com). 1574664626SKris Kennaway * 1674664626SKris Kennaway * Copyright remains Eric Young's, and as such any Copyright notices in 1774664626SKris Kennaway * the code are not to be removed. 1874664626SKris Kennaway * If this package is used in a product, Eric Young should be given attribution 1974664626SKris Kennaway * as the author of the parts of the library used. 2074664626SKris Kennaway * This can be in the form of a textual message at program startup or 2174664626SKris Kennaway * in documentation (online or textual) provided with the package. 2274664626SKris Kennaway * 2374664626SKris Kennaway * Redistribution and use in source and binary forms, with or without 2474664626SKris Kennaway * modification, are permitted provided that the following conditions 2574664626SKris Kennaway * are met: 2674664626SKris Kennaway * 1. Redistributions of source code must retain the copyright 2774664626SKris Kennaway * notice, this list of conditions and the following disclaimer. 2874664626SKris Kennaway * 2. Redistributions in binary form must reproduce the above copyright 2974664626SKris Kennaway * notice, this list of conditions and the following disclaimer in the 3074664626SKris Kennaway * documentation and/or other materials provided with the distribution. 3174664626SKris Kennaway * 3. All advertising materials mentioning features or use of this software 3274664626SKris Kennaway * must display the following acknowledgement: 3374664626SKris Kennaway * "This product includes cryptographic software written by 3474664626SKris Kennaway * Eric Young (eay@cryptsoft.com)" 3574664626SKris Kennaway * The word 'cryptographic' can be left out if the rouines from the library 3674664626SKris Kennaway * being used are not cryptographic related :-). 3774664626SKris Kennaway * 4. If you include any Windows specific code (or a derivative thereof) from 3874664626SKris Kennaway * the apps directory (application code) you must include an acknowledgement: 3974664626SKris Kennaway * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 4074664626SKris Kennaway * 4174664626SKris Kennaway * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 4274664626SKris Kennaway * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4374664626SKris Kennaway * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4474664626SKris Kennaway * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 4574664626SKris Kennaway * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 4674664626SKris Kennaway * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 4774664626SKris Kennaway * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4874664626SKris Kennaway * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 4974664626SKris Kennaway * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5074664626SKris Kennaway * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5174664626SKris Kennaway * SUCH DAMAGE. 5274664626SKris Kennaway * 5374664626SKris Kennaway * The licence and distribution terms for any publically available version or 5474664626SKris Kennaway * derivative of this code cannot be changed. i.e. this code cannot simply be 5574664626SKris Kennaway * copied and put under another distribution licence 5674664626SKris Kennaway * [including the GNU Public Licence.] 5774664626SKris Kennaway */ 5874664626SKris Kennaway 5974664626SKris Kennaway #ifndef HEADER_E_OS_H 6074664626SKris Kennaway # define HEADER_E_OS_H 6174664626SKris Kennaway 6274664626SKris Kennaway # include <openssl/opensslconf.h> 6374664626SKris Kennaway 6474664626SKris Kennaway # include <openssl/e_os2.h> 656f9291ceSJung-uk Kim /* 666f9291ceSJung-uk Kim * <openssl/e_os2.h> contains what we can justify to make visible to the 676f9291ceSJung-uk Kim * outside; this file e_os.h is not part of the exported interface. 686f9291ceSJung-uk Kim */ 6974664626SKris Kennaway 7074664626SKris Kennaway #ifdef __cplusplus 7174664626SKris Kennaway extern "C" { 7274664626SKris Kennaway #endif 7374664626SKris Kennaway 7474664626SKris Kennaway /* Used to checking reference counts, most while doing perl5 stuff :-) */ 7574664626SKris Kennaway # ifdef REF_PRINT 7674664626SKris Kennaway # undef REF_PRINT 7774664626SKris Kennaway # define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a) 7874664626SKris Kennaway # endif 7974664626SKris Kennaway 8074664626SKris Kennaway # ifndef DEVRANDOM 816f9291ceSJung-uk Kim /* 826f9291ceSJung-uk Kim * set this to a comma-separated list of 'random' device files to try out. My 836f9291ceSJung-uk Kim * default, we will try to read at least one of these files 846f9291ceSJung-uk Kim */ 855c87c606SMark Murray # define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom" 865c87c606SMark Murray # endif 875c87c606SMark Murray # ifndef DEVRANDOM_EGD 886f9291ceSJung-uk Kim /* 896f9291ceSJung-uk Kim * set this to a comma-seperated list of 'egd' sockets to try out. These 906f9291ceSJung-uk Kim * sockets will be tried in the order listed in case accessing the device 916f9291ceSJung-uk Kim * files listed in DEVRANDOM did not return enough entropy. 926f9291ceSJung-uk Kim */ 935c87c606SMark Murray # define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy" 9474664626SKris Kennaway # endif 9574664626SKris Kennaway 965c87c606SMark Murray # if defined(OPENSSL_SYS_VXWORKS) 97c1803d78SJacques Vidrine # define NO_SYS_PARAM_H 98c1803d78SJacques Vidrine # define NO_CHMOD 99c1803d78SJacques Vidrine # define NO_SYSLOG 100c1803d78SJacques Vidrine # endif 101c1803d78SJacques Vidrine 1025c87c606SMark Murray # if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) 103f579bf8eSKris Kennaway # if macintosh==1 104f579bf8eSKris Kennaway # ifndef MAC_OS_GUSI_SOURCE 105f579bf8eSKris Kennaway # define MAC_OS_pre_X 106f579bf8eSKris Kennaway # define NO_SYS_TYPES_H 107f579bf8eSKris Kennaway # endif 108f579bf8eSKris Kennaway # define NO_SYS_PARAM_H 109f579bf8eSKris Kennaway # define NO_CHMOD 110f579bf8eSKris Kennaway # define NO_SYSLOG 111f579bf8eSKris Kennaway # undef DEVRANDOM 112f579bf8eSKris Kennaway # define GETPID_IS_MEANINGLESS 113f579bf8eSKris Kennaway # endif 114f579bf8eSKris Kennaway # endif 115f579bf8eSKris Kennaway 11674664626SKris Kennaway /******************************************************************** 11774664626SKris Kennaway The Microsoft section 11874664626SKris Kennaway ********************************************************************/ 1196f9291ceSJung-uk Kim /* 1206f9291ceSJung-uk Kim * The following is used because of the small stack in some Microsoft 1216f9291ceSJung-uk Kim * operating systems 1226f9291ceSJung-uk Kim */ 1235c87c606SMark Murray # if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) 12474664626SKris Kennaway # define MS_STATIC static 12574664626SKris Kennaway # else 12674664626SKris Kennaway # define MS_STATIC 12774664626SKris Kennaway # endif 12874664626SKris Kennaway 1295c87c606SMark Murray # if defined(OPENSSL_SYS_WIN32) && !defined(WIN32) 130f579bf8eSKris Kennaway # define WIN32 131f579bf8eSKris Kennaway # endif 1325c87c606SMark Murray # if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS) 13374664626SKris Kennaway # define WINDOWS 13474664626SKris Kennaway # endif 1355c87c606SMark Murray # if defined(OPENSSL_SYS_MSDOS) && !defined(MSDOS) 13674664626SKris Kennaway # define MSDOS 13774664626SKris Kennaway # endif 13874664626SKris Kennaway 139f579bf8eSKris Kennaway # if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS) 140f579bf8eSKris Kennaway # define GETPID_IS_MEANINGLESS 141f579bf8eSKris Kennaway # endif 142f579bf8eSKris Kennaway 14374664626SKris Kennaway # ifdef WIN32 14474664626SKris Kennaway # define get_last_sys_error() GetLastError() 14574664626SKris Kennaway # define clear_sys_error() SetLastError(0) 14674664626SKris Kennaway # if !defined(WINNT) 14774664626SKris Kennaway # define WIN_CONSOLE_BUG 14874664626SKris Kennaway # endif 14974664626SKris Kennaway # else 15074664626SKris Kennaway # define get_last_sys_error() errno 15174664626SKris Kennaway # define clear_sys_error() errno=0 15274664626SKris Kennaway # endif 15374664626SKris Kennaway 1545c87c606SMark Murray # if defined(WINDOWS) 15574664626SKris Kennaway # define get_last_socket_error() WSAGetLastError() 15674664626SKris Kennaway # define clear_socket_error() WSASetLastError(0) 15774664626SKris Kennaway # define readsocket(s,b,n) recv((s),(b),(n),0) 15874664626SKris Kennaway # define writesocket(s,b,n) send((s),(b),(n),0) 1595c87c606SMark Murray # elif defined(__DJGPP__) 1605c87c606SMark Murray # define WATT32 1615c87c606SMark Murray # define get_last_socket_error() errno 1625c87c606SMark Murray # define clear_socket_error() errno=0 1635c87c606SMark Murray # define closesocket(s) close_s(s) 1645c87c606SMark Murray # define readsocket(s,b,n) read_s(s,b,n) 1655c87c606SMark Murray # define writesocket(s,b,n) send(s,b,n,0) 166f579bf8eSKris Kennaway # elif defined(MAC_OS_pre_X) 167f579bf8eSKris Kennaway # define get_last_socket_error() errno 168f579bf8eSKris Kennaway # define clear_socket_error() errno=0 169f579bf8eSKris Kennaway # define closesocket(s) MacSocket_close(s) 170f579bf8eSKris Kennaway # define readsocket(s,b,n) MacSocket_recv((s),(b),(n),true) 171f579bf8eSKris Kennaway # define writesocket(s,b,n) MacSocket_send((s),(b),(n)) 1725c87c606SMark Murray # elif defined(OPENSSL_SYS_VMS) 173c1803d78SJacques Vidrine # define get_last_socket_error() errno 174c1803d78SJacques Vidrine # define clear_socket_error() errno=0 175c1803d78SJacques Vidrine # define ioctlsocket(a,b,c) ioctl(a,b,c) 176c1803d78SJacques Vidrine # define closesocket(s) close(s) 177c1803d78SJacques Vidrine # define readsocket(s,b,n) recv((s),(b),(n),0) 178c1803d78SJacques Vidrine # define writesocket(s,b,n) send((s),(b),(n),0) 17950ef0093SJacques Vidrine # elif defined(OPENSSL_SYS_VXWORKS) 18050ef0093SJacques Vidrine # define get_last_socket_error() errno 18150ef0093SJacques Vidrine # define clear_socket_error() errno=0 18250ef0093SJacques Vidrine # define ioctlsocket(a,b,c) ioctl((a),(b),(int)(c)) 18350ef0093SJacques Vidrine # define closesocket(s) close(s) 18450ef0093SJacques Vidrine # define readsocket(s,b,n) read((s),(b),(n)) 18550ef0093SJacques Vidrine # define writesocket(s,b,n) write((s),(char *)(b),(n)) 1861f13597dSJung-uk Kim # elif defined(OPENSSL_SYS_BEOS_R5) 1871f13597dSJung-uk Kim # define get_last_socket_error() errno 1881f13597dSJung-uk Kim # define clear_socket_error() errno=0 1891f13597dSJung-uk Kim # define FIONBIO SO_NONBLOCK 1901f13597dSJung-uk Kim # define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) 1911f13597dSJung-uk Kim # define readsocket(s,b,n) recv((s),(b),(n),0) 1921f13597dSJung-uk Kim # define writesocket(s,b,n) send((s),(b),(n),0) 1933b4e3dcbSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 1943b4e3dcbSSimon L. B. Nielsen # if defined(NETWARE_BSDSOCK) 1953b4e3dcbSSimon L. B. Nielsen # define get_last_socket_error() errno 1963b4e3dcbSSimon L. B. Nielsen # define clear_socket_error() errno=0 1973b4e3dcbSSimon L. B. Nielsen # define closesocket(s) close(s) 198db522d3aSSimon L. B. Nielsen # define ioctlsocket(a,b,c) ioctl(a,b,c) 199db522d3aSSimon L. B. Nielsen # if defined(NETWARE_LIBC) 2003b4e3dcbSSimon L. B. Nielsen # define readsocket(s,b,n) recv((s),(b),(n),0) 2013b4e3dcbSSimon L. B. Nielsen # define writesocket(s,b,n) send((s),(b),(n),0) 2023b4e3dcbSSimon L. B. Nielsen # else 203db522d3aSSimon L. B. Nielsen # define readsocket(s,b,n) recv((s),(char*)(b),(n),0) 204db522d3aSSimon L. B. Nielsen # define writesocket(s,b,n) send((s),(char*)(b),(n),0) 205db522d3aSSimon L. B. Nielsen # endif 206db522d3aSSimon L. B. Nielsen # else 2073b4e3dcbSSimon L. B. Nielsen # define get_last_socket_error() WSAGetLastError() 2083b4e3dcbSSimon L. B. Nielsen # define clear_socket_error() WSASetLastError(0) 2093b4e3dcbSSimon L. B. Nielsen # define readsocket(s,b,n) recv((s),(b),(n),0) 2103b4e3dcbSSimon L. B. Nielsen # define writesocket(s,b,n) send((s),(b),(n),0) 2113b4e3dcbSSimon L. B. Nielsen # endif 21274664626SKris Kennaway # else 21374664626SKris Kennaway # define get_last_socket_error() errno 21474664626SKris Kennaway # define clear_socket_error() errno=0 21574664626SKris Kennaway # define ioctlsocket(a,b,c) ioctl(a,b,c) 21674664626SKris Kennaway # define closesocket(s) close(s) 21774664626SKris Kennaway # define readsocket(s,b,n) read((s),(b),(n)) 21874664626SKris Kennaway # define writesocket(s,b,n) write((s),(b),(n)) 21974664626SKris Kennaway # endif 22074664626SKris Kennaway 2211f13597dSJung-uk Kim # ifdef WIN16 /* never the case */ 22274664626SKris Kennaway # define MS_CALLBACK _far _loadds 22374664626SKris Kennaway # define MS_FAR _far 22474664626SKris Kennaway # else 22574664626SKris Kennaway # define MS_CALLBACK 22674664626SKris Kennaway # define MS_FAR 22774664626SKris Kennaway # endif 22874664626SKris Kennaway 2295c87c606SMark Murray # ifdef OPENSSL_NO_STDIO 2303b4e3dcbSSimon L. B. Nielsen # undef OPENSSL_NO_FP_API 2315c87c606SMark Murray # define OPENSSL_NO_FP_API 23274664626SKris Kennaway # endif 23374664626SKris Kennaway 2345c87c606SMark Murray # if (defined(WINDOWS) || defined(MSDOS)) 2355c87c606SMark Murray 2365c87c606SMark Murray # ifdef __DJGPP__ 2375c87c606SMark Murray # include <unistd.h> 2385c87c606SMark Murray # include <sys/stat.h> 2395c87c606SMark Murray # include <sys/socket.h> 2405c87c606SMark Murray # include <tcp.h> 2415c87c606SMark Murray # include <netdb.h> 2425c87c606SMark Murray # define _setmode setmode 2435c87c606SMark Murray # define _O_TEXT O_TEXT 2445c87c606SMark Murray # define _O_BINARY O_BINARY 2453b4e3dcbSSimon L. B. Nielsen # undef DEVRANDOM 2463b4e3dcbSSimon L. B. Nielsen # define DEVRANDOM "/dev/urandom\x24" 2475c87c606SMark Murray # endif /* __DJGPP__ */ 24874664626SKris Kennaway 24974664626SKris Kennaway # ifndef S_IFDIR 25074664626SKris Kennaway # define S_IFDIR _S_IFDIR 25174664626SKris Kennaway # endif 25274664626SKris Kennaway 25374664626SKris Kennaway # ifndef S_IFMT 25474664626SKris Kennaway # define S_IFMT _S_IFMT 255f579bf8eSKris Kennaway # endif 25674664626SKris Kennaway 2575c87c606SMark Murray # if !defined(WINNT) && !defined(__DJGPP__) 25874664626SKris Kennaway # define NO_SYSLOG 25974664626SKris Kennaway # endif 26074664626SKris Kennaway # define NO_DIRENT 26174664626SKris Kennaway 26274664626SKris Kennaway # ifdef WINDOWS 2633b4e3dcbSSimon L. B. Nielsen # if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT) 2643b4e3dcbSSimon L. B. Nielsen /* 2653b4e3dcbSSimon L. B. Nielsen * Defining _WIN32_WINNT here in e_os.h implies certain "discipline." 2663b4e3dcbSSimon L. B. Nielsen * Most notably we ought to check for availability of each specific 2671f13597dSJung-uk Kim * routine with GetProcAddress() and/or guard NT-specific calls with 2683b4e3dcbSSimon L. B. Nielsen * GetVersion() < 0x80000000. One can argue that in latter "or" case 2693b4e3dcbSSimon L. B. Nielsen * we ought to /DELAYLOAD some .DLLs in order to protect ourselves 2703b4e3dcbSSimon L. B. Nielsen * against run-time link errors. This doesn't seem to be necessary, 2713b4e3dcbSSimon L. B. Nielsen * because it turned out that already Windows 95, first non-NT Win32 2723b4e3dcbSSimon L. B. Nielsen * implementation, is equipped with at least NT 3.51 stubs, dummy 2733b4e3dcbSSimon L. B. Nielsen * routines with same name, but which do nothing. Meaning that it's 2741f13597dSJung-uk Kim * apparently sufficient to guard "vanilla" NT calls with GetVersion 2751f13597dSJung-uk Kim * alone, while NT 4.0 and above interfaces ought to be linked with 2761f13597dSJung-uk Kim * GetProcAddress at run-time. 2773b4e3dcbSSimon L. B. Nielsen */ 2783b4e3dcbSSimon L. B. Nielsen # define _WIN32_WINNT 0x0400 2793b4e3dcbSSimon L. B. Nielsen # endif 2801f13597dSJung-uk Kim # if !defined(OPENSSL_NO_SOCK) && defined(_WIN32_WINNT) 2811f13597dSJung-uk Kim /* 2821f13597dSJung-uk Kim * Just like defining _WIN32_WINNT including winsock2.h implies 2831f13597dSJung-uk Kim * certain "discipline" for maintaining [broad] binary compatibility. 2841f13597dSJung-uk Kim * As long as structures are invariant among Winsock versions, 2851f13597dSJung-uk Kim * it's sufficient to check for specific Winsock2 API availability 2861f13597dSJung-uk Kim * at run-time [DSO_global_lookup is recommended]... 2871f13597dSJung-uk Kim */ 2881f13597dSJung-uk Kim # include <winsock2.h> 2891f13597dSJung-uk Kim # include <ws2tcpip.h> 2901f13597dSJung-uk Kim /* yes, they have to be #included prior to <windows.h> */ 2911f13597dSJung-uk Kim # endif 29274664626SKris Kennaway # include <windows.h> 293db522d3aSSimon L. B. Nielsen # include <stdio.h> 29474664626SKris Kennaway # include <stddef.h> 29574664626SKris Kennaway # include <errno.h> 29674664626SKris Kennaway # include <string.h> 2973b4e3dcbSSimon L. B. Nielsen # ifdef _WIN64 2983b4e3dcbSSimon L. B. Nielsen # define strlen(s) _strlen31(s) 2993b4e3dcbSSimon L. B. Nielsen /* cut strings to 2GB */ 300751d2991SJung-uk Kim static __inline unsigned int _strlen31(const char *str) 3013b4e3dcbSSimon L. B. Nielsen { 3023b4e3dcbSSimon L. B. Nielsen unsigned int len = 0; 3036f9291ceSJung-uk Kim while (*str && len < 0x80000000U) 3046f9291ceSJung-uk Kim str++, len++; 3053b4e3dcbSSimon L. B. Nielsen return len & 0x7FFFFFFF; 3063b4e3dcbSSimon L. B. Nielsen } 3073b4e3dcbSSimon L. B. Nielsen # endif 30874664626SKris Kennaway # include <malloc.h> 309db522d3aSSimon L. B. Nielsen # if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace) 310db522d3aSSimon L. B. Nielsen /* compensate for bug in VC6 ctype.h */ 311db522d3aSSimon L. B. Nielsen # undef isspace 312db522d3aSSimon L. B. Nielsen # undef isdigit 313db522d3aSSimon L. B. Nielsen # undef isalnum 314db522d3aSSimon L. B. Nielsen # undef isupper 315db522d3aSSimon L. B. Nielsen # undef isxdigit 316db522d3aSSimon L. B. Nielsen # endif 317db522d3aSSimon L. B. Nielsen # if defined(_MSC_VER) && !defined(_DLL) && defined(stdin) 318db522d3aSSimon L. B. Nielsen # if _MSC_VER>=1300 319db522d3aSSimon L. B. Nielsen # undef stdin 320db522d3aSSimon L. B. Nielsen # undef stdout 321db522d3aSSimon L. B. Nielsen # undef stderr 322db522d3aSSimon L. B. Nielsen FILE *__iob_func(); 323db522d3aSSimon L. B. Nielsen # define stdin (&__iob_func()[0]) 324db522d3aSSimon L. B. Nielsen # define stdout (&__iob_func()[1]) 325db522d3aSSimon L. B. Nielsen # define stderr (&__iob_func()[2]) 326db522d3aSSimon L. B. Nielsen # elif defined(I_CAN_LIVE_WITH_LNK4049) 327db522d3aSSimon L. B. Nielsen # undef stdin 328db522d3aSSimon L. B. Nielsen # undef stdout 329db522d3aSSimon L. B. Nielsen # undef stderr 3306f9291ceSJung-uk Kim /* 3316f9291ceSJung-uk Kim * pre-1300 has __p__iob(), but it's available only in msvcrt.lib, 3326f9291ceSJung-uk Kim * or in other words with /MD. Declaring implicit import, i.e. with 3336f9291ceSJung-uk Kim * _imp_ prefix, works correctly with all compiler options, but 3346f9291ceSJung-uk Kim * without /MD results in LINK warning LNK4049: 'locally defined 3356f9291ceSJung-uk Kim * symbol "__iob" imported'. 336db522d3aSSimon L. B. Nielsen */ 337db522d3aSSimon L. B. Nielsen extern FILE *_imp___iob; 338db522d3aSSimon L. B. Nielsen # define stdin (&_imp___iob[0]) 339db522d3aSSimon L. B. Nielsen # define stdout (&_imp___iob[1]) 340db522d3aSSimon L. B. Nielsen # define stderr (&_imp___iob[2]) 341db522d3aSSimon L. B. Nielsen # endif 342db522d3aSSimon L. B. Nielsen # endif 34374664626SKris Kennaway # endif 34474664626SKris Kennaway # include <io.h> 34574664626SKris Kennaway # include <fcntl.h> 34674664626SKris Kennaway 3475c87c606SMark Murray # ifdef OPENSSL_SYS_WINCE 3481f13597dSJung-uk Kim # define OPENSSL_NO_POSIX_IO 3495c87c606SMark Murray # endif 3505c87c606SMark Murray 35174664626SKris Kennaway # if defined (__BORLANDC__) 35274664626SKris Kennaway # define _setmode setmode 35374664626SKris Kennaway # define _O_TEXT O_TEXT 35474664626SKris Kennaway # define _O_BINARY O_BINARY 35574664626SKris Kennaway # define _int64 __int64 356f579bf8eSKris Kennaway # define _kbhit kbhit 35774664626SKris Kennaway # endif 35874664626SKris Kennaway 35950ef0093SJacques Vidrine # define EXIT(n) exit(n) 36074664626SKris Kennaway # define LIST_SEPARATOR_CHAR ';' 36174664626SKris Kennaway # ifndef X_OK 36274664626SKris Kennaway # define X_OK 0 36374664626SKris Kennaway # endif 36474664626SKris Kennaway # ifndef W_OK 36574664626SKris Kennaway # define W_OK 2 36674664626SKris Kennaway # endif 36774664626SKris Kennaway # ifndef R_OK 36874664626SKris Kennaway # define R_OK 4 36974664626SKris Kennaway # endif 37074664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 37174664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 37274664626SKris Kennaway # define NUL_DEV "nul" 37374664626SKris Kennaway # define RFILE ".rnd" 3745c87c606SMark Murray # ifdef OPENSSL_SYS_WINCE 3755c87c606SMark Murray # define DEFAULT_HOME "" 3765c87c606SMark Murray # else 37726d191b4SKris Kennaway # define DEFAULT_HOME "C:" 3785c87c606SMark Murray # endif 37974664626SKris Kennaway 380dc2b908fSJung-uk Kim /* Avoid Visual Studio 13 GetVersion deprecated problems */ 381560ede85SJung-uk Kim # if defined(_MSC_VER) && _MSC_VER>=1800 382560ede85SJung-uk Kim # define check_winnt() (1) 383dc2b908fSJung-uk Kim # define check_win_minplat(x) (1) 384560ede85SJung-uk Kim # else 385560ede85SJung-uk Kim # define check_winnt() (GetVersion() < 0x80000000) 386dc2b908fSJung-uk Kim # define check_win_minplat(x) (LOBYTE(LOWORD(GetVersion())) >= (x)) 387560ede85SJung-uk Kim # endif 388560ede85SJung-uk Kim 3891f13597dSJung-uk Kim # else /* The non-microsoft world */ 39074664626SKris Kennaway 3915c87c606SMark Murray # ifdef OPENSSL_SYS_VMS 39274664626SKris Kennaway # define VMS 1 3936f9291ceSJung-uk Kim /* 3946f9291ceSJung-uk Kim * some programs don't include stdlib, so exit() and others give implicit 3956f9291ceSJung-uk Kim * function warnings 3966f9291ceSJung-uk Kim */ 39774664626SKris Kennaway # include <stdlib.h> 39874664626SKris Kennaway # if defined(__DECC) 39974664626SKris Kennaway # include <unistd.h> 40074664626SKris Kennaway # else 40174664626SKris Kennaway # include <unixlib.h> 40274664626SKris Kennaway # endif 40374664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 40474664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 40574664626SKris Kennaway # define RFILE ".rnd" 40674664626SKris Kennaway # define LIST_SEPARATOR_CHAR ',' 40774664626SKris Kennaway # define NUL_DEV "NLA0:" 4085c87c606SMark Murray /* We don't have any well-defined random devices on VMS, yet... */ 4095c87c606SMark Murray # undef DEVRANDOM 4106f9291ceSJung-uk Kim /*- 4116f9291ceSJung-uk Kim We need to do this since VMS has the following coding on status codes: 412f579bf8eSKris Kennaway 413f579bf8eSKris Kennaway Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ... 414f579bf8eSKris Kennaway The important thing to know is that odd numbers are considered 415f579bf8eSKris Kennaway good, while even ones are considered errors. 416f579bf8eSKris Kennaway Bits 3-15: actual status number 417f579bf8eSKris Kennaway Bits 16-27: facility number. 0 is considered "unknown" 418f579bf8eSKris Kennaway Bits 28-31: control bits. If bit 28 is set, the shell won't try to 419f579bf8eSKris Kennaway output the message (which, for random codes, just looks ugly) 420f579bf8eSKris Kennaway 421f579bf8eSKris Kennaway So, what we do here is to change 0 to 1 to get the default success status, 422f579bf8eSKris Kennaway and everything else is shifted up to fit into the status number field, and 423f579bf8eSKris Kennaway the status is tagged as an error, which I believe is what is wanted here. 424f579bf8eSKris Kennaway -- Richard Levitte 425f579bf8eSKris Kennaway */ 42674664626SKris Kennaway # define EXIT(n) do { int __VMS_EXIT = n; \ 427f579bf8eSKris Kennaway if (__VMS_EXIT == 0) \ 428f579bf8eSKris Kennaway __VMS_EXIT = 1; \ 429f579bf8eSKris Kennaway else \ 430f579bf8eSKris Kennaway __VMS_EXIT = (n << 3) | 2; \ 43174664626SKris Kennaway __VMS_EXIT |= 0x10000000; \ 4325c87c606SMark Murray exit(__VMS_EXIT); } while(0) 433f579bf8eSKris Kennaway # define NO_SYS_PARAM_H 4343b4e3dcbSSimon L. B. Nielsen 4353b4e3dcbSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 4363b4e3dcbSSimon L. B. Nielsen # include <fcntl.h> 4373b4e3dcbSSimon L. B. Nielsen # include <unistd.h> 4383b4e3dcbSSimon L. B. Nielsen # define NO_SYS_TYPES_H 4393b4e3dcbSSimon L. B. Nielsen # undef DEVRANDOM 4403b4e3dcbSSimon L. B. Nielsen # ifdef NETWARE_CLIB 4413b4e3dcbSSimon L. B. Nielsen # define getpid GetThreadID 442db522d3aSSimon L. B. Nielsen extern int GetThreadID(void); 443db522d3aSSimon L. B. Nielsen /* # include <conio.h> */ 444db522d3aSSimon L. B. Nielsen extern int kbhit(void); 445db522d3aSSimon L. B. Nielsen # else 446db522d3aSSimon L. B. Nielsen # include <screen.h> 4473b4e3dcbSSimon L. B. Nielsen # endif 4483b4e3dcbSSimon L. B. Nielsen # define NO_SYSLOG 4493b4e3dcbSSimon L. B. Nielsen # define _setmode setmode 4503b4e3dcbSSimon L. B. Nielsen # define _kbhit kbhit 4513b4e3dcbSSimon L. B. Nielsen # define _O_TEXT O_TEXT 4523b4e3dcbSSimon L. B. Nielsen # define _O_BINARY O_BINARY 4533b4e3dcbSSimon L. B. Nielsen # define OPENSSL_CONF "openssl.cnf" 4543b4e3dcbSSimon L. B. Nielsen # define SSLEAY_CONF OPENSSL_CONF 4553b4e3dcbSSimon L. B. Nielsen # define RFILE ".rnd" 4563b4e3dcbSSimon L. B. Nielsen # define LIST_SEPARATOR_CHAR ';' 4573b4e3dcbSSimon L. B. Nielsen # define EXIT(n) { if (n) printf("ERROR: %d\n", (int)n); exit(n); } 4583b4e3dcbSSimon L. B. Nielsen 45974664626SKris Kennaway # else 46074664626SKris Kennaway /* !defined VMS */ 4615c87c606SMark Murray # ifdef OPENSSL_SYS_MPE 462ddd58736SKris Kennaway # define NO_SYS_PARAM_H 463ddd58736SKris Kennaway # endif 464f579bf8eSKris Kennaway # ifdef OPENSSL_UNISTD 46574664626SKris Kennaway # include OPENSSL_UNISTD 466f579bf8eSKris Kennaway # else 467f579bf8eSKris Kennaway # include <unistd.h> 468f579bf8eSKris Kennaway # endif 469f579bf8eSKris Kennaway # ifndef NO_SYS_TYPES_H 470f579bf8eSKris Kennaway # include <sys/types.h> 471f579bf8eSKris Kennaway # endif 4725c87c606SMark Murray # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) 473f579bf8eSKris Kennaway # define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP 4746f9291ceSJung-uk Kim * (unless when compiling with 4756f9291ceSJung-uk Kim * -D_POSIX_SOURCE, which doesn't work for 4766f9291ceSJung-uk Kim * us) */ 47750ef0093SJacques Vidrine # endif 4785c87c606SMark Murray # ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */ 479ddd58736SKris Kennaway # define setvbuf(a, b, c, d) setbuffer((a), (b), (d)) 480ddd58736SKris Kennaway typedef unsigned long clock_t; 481ddd58736SKris Kennaway # endif 4821f13597dSJung-uk Kim # ifdef OPENSSL_SYS_WIN32_CYGWIN 4831f13597dSJung-uk Kim # include <io.h> 4841f13597dSJung-uk Kim # include <fcntl.h> 4851f13597dSJung-uk Kim # endif 48674664626SKris Kennaway 48774664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 48874664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 48974664626SKris Kennaway # define RFILE ".rnd" 49074664626SKris Kennaway # define LIST_SEPARATOR_CHAR ':' 49174664626SKris Kennaway # define NUL_DEV "/dev/null" 4925c87c606SMark Murray # define EXIT(n) exit(n) 49374664626SKris Kennaway # endif 49474664626SKris Kennaway 49574664626SKris Kennaway # define SSLeay_getpid() getpid() 49674664626SKris Kennaway 49774664626SKris Kennaway # endif 49874664626SKris Kennaway 49974664626SKris Kennaway /*************/ 50074664626SKris Kennaway 50174664626SKris Kennaway # ifdef USE_SOCKETS 50274664626SKris Kennaway # if defined(WINDOWS) || defined(MSDOS) 50374664626SKris Kennaway /* windows world */ 50474664626SKris Kennaway 5055c87c606SMark Murray # ifdef OPENSSL_NO_SOCK 50674664626SKris Kennaway # define SSLeay_Write(a,b,c) (-1) 50774664626SKris Kennaway # define SSLeay_Read(a,b,c) (-1) 50874664626SKris Kennaway # define SHUTDOWN(fd) close(fd) 50974664626SKris Kennaway # define SHUTDOWN2(fd) close(fd) 5105c87c606SMark Murray # elif !defined(__DJGPP__) 5111f13597dSJung-uk Kim # if defined(_WIN32_WCE) && _WIN32_WCE<410 5121f13597dSJung-uk Kim # define getservbyname _masked_declaration_getservbyname 5131f13597dSJung-uk Kim # endif 5141f13597dSJung-uk Kim # if !defined(IPPROTO_IP) 5151f13597dSJung-uk Kim /* winsock[2].h was included already? */ 51674664626SKris Kennaway # include <winsock.h> 5171f13597dSJung-uk Kim # endif 5181f13597dSJung-uk Kim # ifdef getservbyname 5191f13597dSJung-uk Kim # undef getservbyname 5201f13597dSJung-uk Kim /* this is used to be wcecompat/include/winsock_extras.h */ 5211f13597dSJung-uk Kim struct servent *PASCAL getservbyname(const char *, const char *); 5221f13597dSJung-uk Kim # endif 5231f13597dSJung-uk Kim 5243b4e3dcbSSimon L. B. Nielsen # ifdef _WIN64 5253b4e3dcbSSimon L. B. Nielsen /* 5263b4e3dcbSSimon L. B. Nielsen * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because 5273b4e3dcbSSimon L. B. Nielsen * the value constitutes an index in per-process table of limited size 5283b4e3dcbSSimon L. B. Nielsen * and not a real pointer. 5293b4e3dcbSSimon L. B. Nielsen */ 5303b4e3dcbSSimon L. B. Nielsen # define socket(d,t,p) ((int)socket(d,t,p)) 5313b4e3dcbSSimon L. B. Nielsen # define accept(s,f,l) ((int)accept(s,f,l)) 5323b4e3dcbSSimon L. B. Nielsen # endif 53374664626SKris Kennaway # define SSLeay_Write(a,b,c) send((a),(b),(c),0) 53474664626SKris Kennaway # define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 53574664626SKris Kennaway # define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 53674664626SKris Kennaway # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 5375c87c606SMark Murray # else 5385c87c606SMark Murray # define SSLeay_Write(a,b,c) write_s(a,b,c,0) 5395c87c606SMark Murray # define SSLeay_Read(a,b,c) read_s(a,b,c) 5405c87c606SMark Murray # define SHUTDOWN(fd) close_s(fd) 5415c87c606SMark Murray # define SHUTDOWN2(fd) close_s(fd) 54274664626SKris Kennaway # endif 54374664626SKris Kennaway 544f579bf8eSKris Kennaway # elif defined(MAC_OS_pre_X) 545f579bf8eSKris Kennaway 546f579bf8eSKris Kennaway # include "MacSocket.h" 547f579bf8eSKris Kennaway # define SSLeay_Write(a,b,c) MacSocket_send((a),(b),(c)) 548f579bf8eSKris Kennaway # define SSLeay_Read(a,b,c) MacSocket_recv((a),(b),(c),true) 549f579bf8eSKris Kennaway # define SHUTDOWN(fd) MacSocket_close(fd) 550f579bf8eSKris Kennaway # define SHUTDOWN2(fd) MacSocket_close(fd) 55174664626SKris Kennaway 5523b4e3dcbSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 5536f9291ceSJung-uk Kim /* 5546f9291ceSJung-uk Kim * NetWare uses the WinSock2 interfaces by default, but can be 5556f9291ceSJung-uk Kim * configured for BSD 5563b4e3dcbSSimon L. B. Nielsen */ 5573b4e3dcbSSimon L. B. Nielsen # if defined(NETWARE_BSDSOCK) 5583b4e3dcbSSimon L. B. Nielsen # include <sys/socket.h> 5593b4e3dcbSSimon L. B. Nielsen # include <netinet/in.h> 5603b4e3dcbSSimon L. B. Nielsen # include <sys/time.h> 561db522d3aSSimon L. B. Nielsen # if defined(NETWARE_CLIB) 562db522d3aSSimon L. B. Nielsen # include <sys/bsdskt.h> 563db522d3aSSimon L. B. Nielsen # else 5643b4e3dcbSSimon L. B. Nielsen # include <sys/select.h> 565db522d3aSSimon L. B. Nielsen # endif 5663b4e3dcbSSimon L. B. Nielsen # define INVALID_SOCKET (int)(~0) 5673b4e3dcbSSimon L. B. Nielsen # else 5683b4e3dcbSSimon L. B. Nielsen # include <novsock2.h> 5693b4e3dcbSSimon L. B. Nielsen # endif 5703b4e3dcbSSimon L. B. Nielsen # define SSLeay_Write(a,b,c) send((a),(b),(c),0) 5713b4e3dcbSSimon L. B. Nielsen # define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 5723b4e3dcbSSimon L. B. Nielsen # define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 5733b4e3dcbSSimon L. B. Nielsen # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 5743b4e3dcbSSimon L. B. Nielsen 57574664626SKris Kennaway # else 57674664626SKris Kennaway 577f579bf8eSKris Kennaway # ifndef NO_SYS_PARAM_H 57874664626SKris Kennaway # include <sys/param.h> 57974664626SKris Kennaway # endif 5805c87c606SMark Murray # ifdef OPENSSL_SYS_VXWORKS 581c1803d78SJacques Vidrine # include <time.h> 5825c87c606SMark Murray # elif !defined(OPENSSL_SYS_MPE) 58374664626SKris Kennaway # include <sys/time.h> /* Needed under linux for FD_XXX */ 584ddd58736SKris Kennaway # endif 58574664626SKris Kennaway 58674664626SKris Kennaway # include <netdb.h> 5875c87c606SMark Murray # if defined(OPENSSL_SYS_VMS_NODECC) 58874664626SKris Kennaway # include <socket.h> 58974664626SKris Kennaway # include <in.h> 590de7cdddaSKris Kennaway # include <inet.h> 59174664626SKris Kennaway # else 59274664626SKris Kennaway # include <sys/socket.h> 59374664626SKris Kennaway # ifdef FILIO_H 59474664626SKris Kennaway # include <sys/filio.h> /* Added for FIONBIO under unixware */ 59574664626SKris Kennaway # endif 59674664626SKris Kennaway # include <netinet/in.h> 5971f13597dSJung-uk Kim # if !defined(OPENSSL_SYS_BEOS_R5) 598de7cdddaSKris Kennaway # include <arpa/inet.h> 59974664626SKris Kennaway # endif 6001f13597dSJung-uk Kim # endif 60174664626SKris Kennaway 60274664626SKris Kennaway # if defined(NeXT) || defined(_NEXT_SOURCE) 60374664626SKris Kennaway # include <sys/fcntl.h> 60474664626SKris Kennaway # include <sys/types.h> 60574664626SKris Kennaway # endif 60674664626SKris Kennaway 6075c87c606SMark Murray # ifdef OPENSSL_SYS_AIX 60874664626SKris Kennaway # include <sys/select.h> 60974664626SKris Kennaway # endif 61074664626SKris Kennaway 611ddd58736SKris Kennaway # ifdef __QNX__ 612ddd58736SKris Kennaway # include <sys/select.h> 613ddd58736SKris Kennaway # endif 614ddd58736SKris Kennaway 61574664626SKris Kennaway # if defined(sun) 61674664626SKris Kennaway # include <sys/filio.h> 61774664626SKris Kennaway # else 61874664626SKris Kennaway # ifndef VMS 61974664626SKris Kennaway # include <sys/ioctl.h> 62074664626SKris Kennaway # else 62174664626SKris Kennaway /* ioctl is only in VMS > 7.0 and when socketshr is not used */ 62274664626SKris Kennaway # if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000) 62374664626SKris Kennaway # include <sys/ioctl.h> 62474664626SKris Kennaway # endif 62574664626SKris Kennaway # endif 62674664626SKris Kennaway # endif 62774664626SKris Kennaway 62874664626SKris Kennaway # ifdef VMS 62974664626SKris Kennaway # include <unixio.h> 63074664626SKris Kennaway # if defined(TCPIP_TYPE_SOCKETSHR) 63174664626SKris Kennaway # include <socketshr.h> 63274664626SKris Kennaway # endif 63374664626SKris Kennaway # endif 63474664626SKris Kennaway 63574664626SKris Kennaway # define SSLeay_Read(a,b,c) read((a),(b),(c)) 63674664626SKris Kennaway # define SSLeay_Write(a,b,c) write((a),(b),(c)) 637f579bf8eSKris Kennaway # define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); } 638f579bf8eSKris Kennaway # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); } 6395c87c606SMark Murray # ifndef INVALID_SOCKET 64074664626SKris Kennaway # define INVALID_SOCKET (-1) 6415c87c606SMark Murray # endif /* INVALID_SOCKET */ 64274664626SKris Kennaway # endif 6431f13597dSJung-uk Kim 6446f9291ceSJung-uk Kim /* 6456f9291ceSJung-uk Kim * Some IPv6 implementations are broken, disable them in known bad versions. 6461f13597dSJung-uk Kim */ 6471f13597dSJung-uk Kim # if !defined(OPENSSL_USE_IPV6) 6481f13597dSJung-uk Kim # if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) 6491f13597dSJung-uk Kim # define OPENSSL_USE_IPV6 1 6501f13597dSJung-uk Kim # else 6511f13597dSJung-uk Kim # define OPENSSL_USE_IPV6 0 6521f13597dSJung-uk Kim # endif 65374664626SKris Kennaway # endif 65474664626SKris Kennaway 655f579bf8eSKris Kennaway # endif 656f579bf8eSKris Kennaway 657ddd58736SKris Kennaway # if defined(sun) && !defined(__svr4__) && !defined(__SVR4) 658a21b1b38SKris Kennaway /* include headers first, so our defines don't break it */ 659a21b1b38SKris Kennaway # include <stdlib.h> 660a21b1b38SKris Kennaway # include <string.h> 661ddd58736SKris Kennaway /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */ 662ddd58736SKris Kennaway # define memmove(s1,s2,n) bcopy((s2),(s1),(n)) 663ddd58736SKris Kennaway # define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b))) 6646f9291ceSJung-uk Kim extern char *sys_errlist[]; 6656f9291ceSJung-uk Kim extern int sys_nerr; 666ddd58736SKris Kennaway # define strerror(errnum) \ 667ddd58736SKris Kennaway (((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum]) 6683b4e3dcbSSimon L. B. Nielsen /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */ 6693b4e3dcbSSimon L. B. Nielsen # include "crypto/o_str.h" 6703b4e3dcbSSimon L. B. Nielsen # define memcmp OPENSSL_memcmp 671ddd58736SKris Kennaway # endif 672ddd58736SKris Kennaway 6735c87c606SMark Murray # ifndef OPENSSL_EXIT 6745c87c606SMark Murray # if defined(MONOLITH) && !defined(OPENSSL_C) 6755c87c606SMark Murray # define OPENSSL_EXIT(n) return(n) 6765c87c606SMark Murray # else 6775c87c606SMark Murray # define OPENSSL_EXIT(n) do { EXIT(n); return(n); } while(0) 6785c87c606SMark Murray # endif 6795c87c606SMark Murray # endif 6805c87c606SMark Murray 68174664626SKris Kennaway /***********************************************/ 68274664626SKris Kennaway 68374664626SKris Kennaway # define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */ 68474664626SKris Kennaway 68574664626SKris Kennaway # ifdef sgi 68674664626SKris Kennaway # define IRIX_CC_BUG /* all version of IRIX I've tested (4.* 5.*) */ 68774664626SKris Kennaway # endif 6885c87c606SMark Murray # ifdef OPENSSL_SYS_SNI 6896f9291ceSJung-uk Kim # define IRIX_CC_BUG /* CDS++ up to V2.0Bsomething suffered from 6906f9291ceSJung-uk Kim * the same bug. */ 69174664626SKris Kennaway # endif 69274664626SKris Kennaway 6936be8ae07SJacques Vidrine # if defined(OPENSSL_SYS_WINDOWS) 6946be8ae07SJacques Vidrine # define strcasecmp _stricmp 6956be8ae07SJacques Vidrine # define strncasecmp _strnicmp 6966be8ae07SJacques Vidrine # elif defined(OPENSSL_SYS_VMS) 6976be8ae07SJacques Vidrine /* VMS below version 7.0 doesn't have strcasecmp() */ 6986be8ae07SJacques Vidrine # include "o_str.h" 6996be8ae07SJacques Vidrine # define strcasecmp OPENSSL_strcasecmp 7006be8ae07SJacques Vidrine # define strncasecmp OPENSSL_strncasecmp 7013b4e3dcbSSimon L. B. Nielsen # define OPENSSL_IMPLEMENTS_strncasecmp 7026be8ae07SJacques Vidrine # elif defined(OPENSSL_SYS_OS2) && defined(__EMX__) 7036be8ae07SJacques Vidrine # define strcasecmp stricmp 7046be8ae07SJacques Vidrine # define strncasecmp strnicmp 705db522d3aSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 706db522d3aSSimon L. B. Nielsen # include <string.h> 707db522d3aSSimon L. B. Nielsen # if defined(NETWARE_CLIB) 7083b4e3dcbSSimon L. B. Nielsen # define strcasecmp stricmp 7093b4e3dcbSSimon L. B. Nielsen # define strncasecmp strnicmp 710db522d3aSSimon L. B. Nielsen # endif /* NETWARE_CLIB */ 7116be8ae07SJacques Vidrine # endif 7126be8ae07SJacques Vidrine 7135c87c606SMark Murray # if defined(OPENSSL_SYS_OS2) && defined(__EMX__) 7145c87c606SMark Murray # include <io.h> 7155c87c606SMark Murray # include <fcntl.h> 7165c87c606SMark Murray # define NO_SYSLOG 71774664626SKris Kennaway # endif 7185c87c606SMark Murray 7195c87c606SMark Murray /* vxworks */ 7205c87c606SMark Murray # if defined(OPENSSL_SYS_VXWORKS) 7215c87c606SMark Murray # include <ioLib.h> 7225c87c606SMark Murray # include <tickLib.h> 7235c87c606SMark Murray # include <sysLib.h> 7245c87c606SMark Murray 7255c87c606SMark Murray # define TTY_STRUCT int 7265c87c606SMark Murray 7275c87c606SMark Murray # define sleep(a) taskDelay((a) * sysClkRateGet()) 7285c87c606SMark Murray 7295c87c606SMark Murray # include <vxWorks.h> 7305c87c606SMark Murray # include <sockLib.h> 7315c87c606SMark Murray # include <taskLib.h> 7325c87c606SMark Murray 7335c87c606SMark Murray # define getpid taskIdSelf 7345c87c606SMark Murray 7356f9291ceSJung-uk Kim /* 7366f9291ceSJung-uk Kim * NOTE: these are implemented by helpers in database app! if the database is 7376f9291ceSJung-uk Kim * not linked, we need to implement them elswhere 7386f9291ceSJung-uk Kim */ 7395c87c606SMark Murray struct hostent *gethostbyname(const char *name); 7405c87c606SMark Murray struct hostent *gethostbyaddr(const char *addr, int length, int type); 7415c87c606SMark Murray struct servent *getservbyname(const char *name, const char *proto); 7425c87c606SMark Murray 7435c87c606SMark Murray # endif 7445c87c606SMark Murray /* end vxworks */ 74574664626SKris Kennaway 7461f13597dSJung-uk Kim /* beos */ 7471f13597dSJung-uk Kim # if defined(OPENSSL_SYS_BEOS_R5) 7481f13597dSJung-uk Kim # define SO_ERROR 0 7491f13597dSJung-uk Kim # define NO_SYS_UN 7501f13597dSJung-uk Kim # define IPPROTO_IP 0 7511f13597dSJung-uk Kim # include <OS.h> 7521f13597dSJung-uk Kim # endif 7531f13597dSJung-uk Kim 754751d2991SJung-uk Kim # if !defined(inline) && !defined(__cplusplus) 755751d2991SJung-uk Kim # if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L 756751d2991SJung-uk Kim /* do nothing, inline works */ 757751d2991SJung-uk Kim # elif defined(__GNUC__) && __GNUC__>=2 758751d2991SJung-uk Kim # define inline __inline__ 759751d2991SJung-uk Kim # elif defined(_MSC_VER) 760751d2991SJung-uk Kim /* 761751d2991SJung-uk Kim * Visual Studio: inline is available in C++ only, however 762751d2991SJung-uk Kim * __inline is available for C, see 763751d2991SJung-uk Kim * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx 764751d2991SJung-uk Kim */ 765751d2991SJung-uk Kim # define inline __inline 766751d2991SJung-uk Kim # else 767751d2991SJung-uk Kim # define inline 768751d2991SJung-uk Kim # endif 769751d2991SJung-uk Kim # endif 7701f13597dSJung-uk Kim 77174664626SKris Kennaway #ifdef __cplusplus 77274664626SKris Kennaway } 77374664626SKris Kennaway #endif 77474664626SKris Kennaway 77574664626SKris Kennaway #endif 776