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> 6574664626SKris Kennaway /* <openssl/e_os2.h> contains what we can justify to make visible 6674664626SKris Kennaway * to the outside; this file e_os.h is not part of the exported 6774664626SKris Kennaway * interface. */ 6874664626SKris Kennaway 6974664626SKris Kennaway #ifdef __cplusplus 7074664626SKris Kennaway extern "C" { 7174664626SKris Kennaway #endif 7274664626SKris Kennaway 7374664626SKris Kennaway /* Used to checking reference counts, most while doing perl5 stuff :-) */ 7474664626SKris Kennaway #ifdef REF_PRINT 7574664626SKris Kennaway #undef REF_PRINT 7674664626SKris Kennaway #define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a) 7774664626SKris Kennaway #endif 7874664626SKris Kennaway 7974664626SKris Kennaway #ifndef DEVRANDOM 805c87c606SMark Murray /* set this to a comma-separated list of 'random' device files to try out. 815c87c606SMark Murray * My default, we will try to read at least one of these files */ 825c87c606SMark Murray #define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom" 835c87c606SMark Murray #endif 845c87c606SMark Murray #ifndef DEVRANDOM_EGD 855c87c606SMark Murray /* set this to a comma-seperated list of 'egd' sockets to try out. These 865c87c606SMark Murray * sockets will be tried in the order listed in case accessing the device files 875c87c606SMark Murray * listed in DEVRANDOM did not return enough entropy. */ 885c87c606SMark Murray #define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy" 8974664626SKris Kennaway #endif 9074664626SKris Kennaway 915c87c606SMark Murray #if defined(OPENSSL_SYS_VXWORKS) 92c1803d78SJacques Vidrine # define NO_SYS_PARAM_H 93c1803d78SJacques Vidrine # define NO_CHMOD 94c1803d78SJacques Vidrine # define NO_SYSLOG 95c1803d78SJacques Vidrine #endif 96c1803d78SJacques Vidrine 975c87c606SMark Murray #if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) 98f579bf8eSKris Kennaway # if macintosh==1 99f579bf8eSKris Kennaway # ifndef MAC_OS_GUSI_SOURCE 100f579bf8eSKris Kennaway # define MAC_OS_pre_X 101f579bf8eSKris Kennaway # define NO_SYS_TYPES_H 102f579bf8eSKris Kennaway # endif 103f579bf8eSKris Kennaway # define NO_SYS_PARAM_H 104f579bf8eSKris Kennaway # define NO_CHMOD 105f579bf8eSKris Kennaway # define NO_SYSLOG 106f579bf8eSKris Kennaway # undef DEVRANDOM 107f579bf8eSKris Kennaway # define GETPID_IS_MEANINGLESS 108f579bf8eSKris Kennaway # endif 109f579bf8eSKris Kennaway #endif 110f579bf8eSKris Kennaway 11174664626SKris Kennaway /******************************************************************** 11274664626SKris Kennaway The Microsoft section 11374664626SKris Kennaway ********************************************************************/ 1141f13597dSJung-uk Kim /* The following is used because of the small stack in some 11574664626SKris Kennaway * Microsoft operating systems */ 1165c87c606SMark Murray #if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) 11774664626SKris Kennaway # define MS_STATIC static 11874664626SKris Kennaway #else 11974664626SKris Kennaway # define MS_STATIC 12074664626SKris Kennaway #endif 12174664626SKris Kennaway 1225c87c606SMark Murray #if defined(OPENSSL_SYS_WIN32) && !defined(WIN32) 123f579bf8eSKris Kennaway # define WIN32 124f579bf8eSKris Kennaway #endif 1255c87c606SMark Murray #if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS) 12674664626SKris Kennaway # define WINDOWS 12774664626SKris Kennaway #endif 1285c87c606SMark Murray #if defined(OPENSSL_SYS_MSDOS) && !defined(MSDOS) 12974664626SKris Kennaway # define MSDOS 13074664626SKris Kennaway #endif 13174664626SKris Kennaway 132f579bf8eSKris Kennaway #if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS) 133f579bf8eSKris Kennaway # define GETPID_IS_MEANINGLESS 134f579bf8eSKris Kennaway #endif 135f579bf8eSKris Kennaway 13674664626SKris Kennaway #ifdef WIN32 13774664626SKris Kennaway #define get_last_sys_error() GetLastError() 13874664626SKris Kennaway #define clear_sys_error() SetLastError(0) 13974664626SKris Kennaway #if !defined(WINNT) 14074664626SKris Kennaway #define WIN_CONSOLE_BUG 14174664626SKris Kennaway #endif 14274664626SKris Kennaway #else 14374664626SKris Kennaway #define get_last_sys_error() errno 14474664626SKris Kennaway #define clear_sys_error() errno=0 14574664626SKris Kennaway #endif 14674664626SKris Kennaway 1475c87c606SMark Murray #if defined(WINDOWS) 14874664626SKris Kennaway #define get_last_socket_error() WSAGetLastError() 14974664626SKris Kennaway #define clear_socket_error() WSASetLastError(0) 15074664626SKris Kennaway #define readsocket(s,b,n) recv((s),(b),(n),0) 15174664626SKris Kennaway #define writesocket(s,b,n) send((s),(b),(n),0) 1525c87c606SMark Murray #elif defined(__DJGPP__) 1535c87c606SMark Murray #define WATT32 1545c87c606SMark Murray #define get_last_socket_error() errno 1555c87c606SMark Murray #define clear_socket_error() errno=0 1565c87c606SMark Murray #define closesocket(s) close_s(s) 1575c87c606SMark Murray #define readsocket(s,b,n) read_s(s,b,n) 1585c87c606SMark Murray #define writesocket(s,b,n) send(s,b,n,0) 159f579bf8eSKris Kennaway #elif defined(MAC_OS_pre_X) 160f579bf8eSKris Kennaway #define get_last_socket_error() errno 161f579bf8eSKris Kennaway #define clear_socket_error() errno=0 162f579bf8eSKris Kennaway #define closesocket(s) MacSocket_close(s) 163f579bf8eSKris Kennaway #define readsocket(s,b,n) MacSocket_recv((s),(b),(n),true) 164f579bf8eSKris Kennaway #define writesocket(s,b,n) MacSocket_send((s),(b),(n)) 1655c87c606SMark Murray #elif defined(OPENSSL_SYS_VMS) 166c1803d78SJacques Vidrine #define get_last_socket_error() errno 167c1803d78SJacques Vidrine #define clear_socket_error() errno=0 168c1803d78SJacques Vidrine #define ioctlsocket(a,b,c) ioctl(a,b,c) 169c1803d78SJacques Vidrine #define closesocket(s) close(s) 170c1803d78SJacques Vidrine #define readsocket(s,b,n) recv((s),(b),(n),0) 171c1803d78SJacques Vidrine #define writesocket(s,b,n) send((s),(b),(n),0) 17250ef0093SJacques Vidrine #elif defined(OPENSSL_SYS_VXWORKS) 17350ef0093SJacques Vidrine #define get_last_socket_error() errno 17450ef0093SJacques Vidrine #define clear_socket_error() errno=0 17550ef0093SJacques Vidrine #define ioctlsocket(a,b,c) ioctl((a),(b),(int)(c)) 17650ef0093SJacques Vidrine #define closesocket(s) close(s) 17750ef0093SJacques Vidrine #define readsocket(s,b,n) read((s),(b),(n)) 17850ef0093SJacques Vidrine #define writesocket(s,b,n) write((s),(char *)(b),(n)) 1791f13597dSJung-uk Kim #elif defined(OPENSSL_SYS_BEOS_R5) 1801f13597dSJung-uk Kim #define get_last_socket_error() errno 1811f13597dSJung-uk Kim #define clear_socket_error() errno=0 1821f13597dSJung-uk Kim #define FIONBIO SO_NONBLOCK 1831f13597dSJung-uk Kim #define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) 1841f13597dSJung-uk Kim #define readsocket(s,b,n) recv((s),(b),(n),0) 1851f13597dSJung-uk Kim #define writesocket(s,b,n) send((s),(b),(n),0) 1863b4e3dcbSSimon L. B. Nielsen #elif defined(OPENSSL_SYS_NETWARE) 1873b4e3dcbSSimon L. B. Nielsen #if defined(NETWARE_BSDSOCK) 1883b4e3dcbSSimon L. B. Nielsen #define get_last_socket_error() errno 1893b4e3dcbSSimon L. B. Nielsen #define clear_socket_error() errno=0 1903b4e3dcbSSimon L. B. Nielsen #define closesocket(s) close(s) 191db522d3aSSimon L. B. Nielsen #define ioctlsocket(a,b,c) ioctl(a,b,c) 192db522d3aSSimon L. B. Nielsen #if defined(NETWARE_LIBC) 1933b4e3dcbSSimon L. B. Nielsen #define readsocket(s,b,n) recv((s),(b),(n),0) 1943b4e3dcbSSimon L. B. Nielsen #define writesocket(s,b,n) send((s),(b),(n),0) 1953b4e3dcbSSimon L. B. Nielsen #else 196db522d3aSSimon L. B. Nielsen #define readsocket(s,b,n) recv((s),(char*)(b),(n),0) 197db522d3aSSimon L. B. Nielsen #define writesocket(s,b,n) send((s),(char*)(b),(n),0) 198db522d3aSSimon L. B. Nielsen #endif 199db522d3aSSimon L. B. Nielsen #else 2003b4e3dcbSSimon L. B. Nielsen #define get_last_socket_error() WSAGetLastError() 2013b4e3dcbSSimon L. B. Nielsen #define clear_socket_error() WSASetLastError(0) 2023b4e3dcbSSimon L. B. Nielsen #define readsocket(s,b,n) recv((s),(b),(n),0) 2033b4e3dcbSSimon L. B. Nielsen #define writesocket(s,b,n) send((s),(b),(n),0) 2043b4e3dcbSSimon L. B. Nielsen #endif 20574664626SKris Kennaway #else 20674664626SKris Kennaway #define get_last_socket_error() errno 20774664626SKris Kennaway #define clear_socket_error() errno=0 20874664626SKris Kennaway #define ioctlsocket(a,b,c) ioctl(a,b,c) 20974664626SKris Kennaway #define closesocket(s) close(s) 21074664626SKris Kennaway #define readsocket(s,b,n) read((s),(b),(n)) 21174664626SKris Kennaway #define writesocket(s,b,n) write((s),(b),(n)) 21274664626SKris Kennaway #endif 21374664626SKris Kennaway 2141f13597dSJung-uk Kim #ifdef WIN16 /* never the case */ 21574664626SKris Kennaway # define MS_CALLBACK _far _loadds 21674664626SKris Kennaway # define MS_FAR _far 21774664626SKris Kennaway #else 21874664626SKris Kennaway # define MS_CALLBACK 21974664626SKris Kennaway # define MS_FAR 22074664626SKris Kennaway #endif 22174664626SKris Kennaway 2225c87c606SMark Murray #ifdef OPENSSL_NO_STDIO 2233b4e3dcbSSimon L. B. Nielsen # undef OPENSSL_NO_FP_API 2245c87c606SMark Murray # define OPENSSL_NO_FP_API 22574664626SKris Kennaway #endif 22674664626SKris Kennaway 2275c87c606SMark Murray #if (defined(WINDOWS) || defined(MSDOS)) 2285c87c606SMark Murray 2295c87c606SMark Murray # ifdef __DJGPP__ 2305c87c606SMark Murray # include <unistd.h> 2315c87c606SMark Murray # include <sys/stat.h> 2325c87c606SMark Murray # include <sys/socket.h> 2335c87c606SMark Murray # include <tcp.h> 2345c87c606SMark Murray # include <netdb.h> 2355c87c606SMark Murray # define _setmode setmode 2365c87c606SMark Murray # define _O_TEXT O_TEXT 2375c87c606SMark Murray # define _O_BINARY O_BINARY 2383b4e3dcbSSimon L. B. Nielsen # undef DEVRANDOM 2393b4e3dcbSSimon L. B. Nielsen # define DEVRANDOM "/dev/urandom\x24" 2405c87c606SMark Murray # endif /* __DJGPP__ */ 24174664626SKris Kennaway 24274664626SKris Kennaway # ifndef S_IFDIR 24374664626SKris Kennaway # define S_IFDIR _S_IFDIR 24474664626SKris Kennaway # endif 24574664626SKris Kennaway 24674664626SKris Kennaway # ifndef S_IFMT 24774664626SKris Kennaway # define S_IFMT _S_IFMT 248f579bf8eSKris Kennaway # endif 24974664626SKris Kennaway 2505c87c606SMark Murray # if !defined(WINNT) && !defined(__DJGPP__) 25174664626SKris Kennaway # define NO_SYSLOG 25274664626SKris Kennaway # endif 25374664626SKris Kennaway # define NO_DIRENT 25474664626SKris Kennaway 25574664626SKris Kennaway # ifdef WINDOWS 2563b4e3dcbSSimon L. B. Nielsen # if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT) 2573b4e3dcbSSimon L. B. Nielsen /* 2583b4e3dcbSSimon L. B. Nielsen * Defining _WIN32_WINNT here in e_os.h implies certain "discipline." 2593b4e3dcbSSimon L. B. Nielsen * Most notably we ought to check for availability of each specific 2601f13597dSJung-uk Kim * routine with GetProcAddress() and/or guard NT-specific calls with 2613b4e3dcbSSimon L. B. Nielsen * GetVersion() < 0x80000000. One can argue that in latter "or" case 2623b4e3dcbSSimon L. B. Nielsen * we ought to /DELAYLOAD some .DLLs in order to protect ourselves 2633b4e3dcbSSimon L. B. Nielsen * against run-time link errors. This doesn't seem to be necessary, 2643b4e3dcbSSimon L. B. Nielsen * because it turned out that already Windows 95, first non-NT Win32 2653b4e3dcbSSimon L. B. Nielsen * implementation, is equipped with at least NT 3.51 stubs, dummy 2663b4e3dcbSSimon L. B. Nielsen * routines with same name, but which do nothing. Meaning that it's 2671f13597dSJung-uk Kim * apparently sufficient to guard "vanilla" NT calls with GetVersion 2681f13597dSJung-uk Kim * alone, while NT 4.0 and above interfaces ought to be linked with 2691f13597dSJung-uk Kim * GetProcAddress at run-time. 2703b4e3dcbSSimon L. B. Nielsen */ 2713b4e3dcbSSimon L. B. Nielsen # define _WIN32_WINNT 0x0400 2723b4e3dcbSSimon L. B. Nielsen # endif 2731f13597dSJung-uk Kim # if !defined(OPENSSL_NO_SOCK) && defined(_WIN32_WINNT) 2741f13597dSJung-uk Kim /* 2751f13597dSJung-uk Kim * Just like defining _WIN32_WINNT including winsock2.h implies 2761f13597dSJung-uk Kim * certain "discipline" for maintaining [broad] binary compatibility. 2771f13597dSJung-uk Kim * As long as structures are invariant among Winsock versions, 2781f13597dSJung-uk Kim * it's sufficient to check for specific Winsock2 API availability 2791f13597dSJung-uk Kim * at run-time [DSO_global_lookup is recommended]... 2801f13597dSJung-uk Kim */ 2811f13597dSJung-uk Kim # include <winsock2.h> 2821f13597dSJung-uk Kim # include <ws2tcpip.h> 2831f13597dSJung-uk Kim /* yes, they have to be #included prior to <windows.h> */ 2841f13597dSJung-uk Kim # endif 28574664626SKris Kennaway # include <windows.h> 286db522d3aSSimon L. B. Nielsen # include <stdio.h> 28774664626SKris Kennaway # include <stddef.h> 28874664626SKris Kennaway # include <errno.h> 28974664626SKris Kennaway # include <string.h> 2903b4e3dcbSSimon L. B. Nielsen # ifdef _WIN64 2913b4e3dcbSSimon L. B. Nielsen # define strlen(s) _strlen31(s) 2923b4e3dcbSSimon L. B. Nielsen /* cut strings to 2GB */ 293751d2991SJung-uk Kim static __inline unsigned int _strlen31(const char *str) 2943b4e3dcbSSimon L. B. Nielsen { 2953b4e3dcbSSimon L. B. Nielsen unsigned int len=0; 2963b4e3dcbSSimon L. B. Nielsen while (*str && len<0x80000000U) str++, len++; 2973b4e3dcbSSimon L. B. Nielsen return len&0x7FFFFFFF; 2983b4e3dcbSSimon L. B. Nielsen } 2993b4e3dcbSSimon L. B. Nielsen # endif 30074664626SKris Kennaway # include <malloc.h> 301db522d3aSSimon L. B. Nielsen # if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace) 302db522d3aSSimon L. B. Nielsen /* compensate for bug in VC6 ctype.h */ 303db522d3aSSimon L. B. Nielsen # undef isspace 304db522d3aSSimon L. B. Nielsen # undef isdigit 305db522d3aSSimon L. B. Nielsen # undef isalnum 306db522d3aSSimon L. B. Nielsen # undef isupper 307db522d3aSSimon L. B. Nielsen # undef isxdigit 308db522d3aSSimon L. B. Nielsen # endif 309db522d3aSSimon L. B. Nielsen # if defined(_MSC_VER) && !defined(_DLL) && defined(stdin) 310db522d3aSSimon L. B. Nielsen # if _MSC_VER>=1300 311db522d3aSSimon L. B. Nielsen # undef stdin 312db522d3aSSimon L. B. Nielsen # undef stdout 313db522d3aSSimon L. B. Nielsen # undef stderr 314db522d3aSSimon L. B. Nielsen FILE *__iob_func(); 315db522d3aSSimon L. B. Nielsen # define stdin (&__iob_func()[0]) 316db522d3aSSimon L. B. Nielsen # define stdout (&__iob_func()[1]) 317db522d3aSSimon L. B. Nielsen # define stderr (&__iob_func()[2]) 318db522d3aSSimon L. B. Nielsen # elif defined(I_CAN_LIVE_WITH_LNK4049) 319db522d3aSSimon L. B. Nielsen # undef stdin 320db522d3aSSimon L. B. Nielsen # undef stdout 321db522d3aSSimon L. B. Nielsen # undef stderr 322db522d3aSSimon L. B. Nielsen /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib, 323db522d3aSSimon L. B. Nielsen * or in other words with /MD. Declaring implicit import, i.e. 324db522d3aSSimon L. B. Nielsen * with _imp_ prefix, works correctly with all compiler options, 325db522d3aSSimon L. B. Nielsen * but without /MD results in LINK warning LNK4049: 326db522d3aSSimon L. B. Nielsen * 'locally defined symbol "__iob" imported'. 327db522d3aSSimon L. B. Nielsen */ 328db522d3aSSimon L. B. Nielsen extern FILE *_imp___iob; 329db522d3aSSimon L. B. Nielsen # define stdin (&_imp___iob[0]) 330db522d3aSSimon L. B. Nielsen # define stdout (&_imp___iob[1]) 331db522d3aSSimon L. B. Nielsen # define stderr (&_imp___iob[2]) 332db522d3aSSimon L. B. Nielsen # endif 333db522d3aSSimon L. B. Nielsen # endif 33474664626SKris Kennaway # endif 33574664626SKris Kennaway # include <io.h> 33674664626SKris Kennaway # include <fcntl.h> 33774664626SKris Kennaway 3385c87c606SMark Murray # ifdef OPENSSL_SYS_WINCE 3391f13597dSJung-uk Kim # define OPENSSL_NO_POSIX_IO 3405c87c606SMark Murray # endif 3415c87c606SMark Murray 34274664626SKris Kennaway # if defined (__BORLANDC__) 34374664626SKris Kennaway # define _setmode setmode 34474664626SKris Kennaway # define _O_TEXT O_TEXT 34574664626SKris Kennaway # define _O_BINARY O_BINARY 34674664626SKris Kennaway # define _int64 __int64 347f579bf8eSKris Kennaway # define _kbhit kbhit 34874664626SKris Kennaway # endif 34974664626SKris Kennaway 35050ef0093SJacques Vidrine # define EXIT(n) exit(n) 35174664626SKris Kennaway # define LIST_SEPARATOR_CHAR ';' 35274664626SKris Kennaway # ifndef X_OK 35374664626SKris Kennaway # define X_OK 0 35474664626SKris Kennaway # endif 35574664626SKris Kennaway # ifndef W_OK 35674664626SKris Kennaway # define W_OK 2 35774664626SKris Kennaway # endif 35874664626SKris Kennaway # ifndef R_OK 35974664626SKris Kennaway # define R_OK 4 36074664626SKris Kennaway # endif 36174664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 36274664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 36374664626SKris Kennaway # define NUL_DEV "nul" 36474664626SKris Kennaway # define RFILE ".rnd" 3655c87c606SMark Murray # ifdef OPENSSL_SYS_WINCE 3665c87c606SMark Murray # define DEFAULT_HOME "" 3675c87c606SMark Murray # else 36826d191b4SKris Kennaway # define DEFAULT_HOME "C:" 3695c87c606SMark Murray # endif 37074664626SKris Kennaway 371dc2b908fSJung-uk Kim /* Avoid Visual Studio 13 GetVersion deprecated problems */ 372560ede85SJung-uk Kim #if defined(_MSC_VER) && _MSC_VER>=1800 373560ede85SJung-uk Kim # define check_winnt() (1) 374dc2b908fSJung-uk Kim # define check_win_minplat(x) (1) 375560ede85SJung-uk Kim #else 376560ede85SJung-uk Kim # define check_winnt() (GetVersion() < 0x80000000) 377dc2b908fSJung-uk Kim # define check_win_minplat(x) (LOBYTE(LOWORD(GetVersion())) >= (x)) 378560ede85SJung-uk Kim #endif 379560ede85SJung-uk Kim 3801f13597dSJung-uk Kim #else /* The non-microsoft world */ 38174664626SKris Kennaway 3825c87c606SMark Murray # ifdef OPENSSL_SYS_VMS 38374664626SKris Kennaway # define VMS 1 38474664626SKris Kennaway /* some programs don't include stdlib, so exit() and others give implicit 38574664626SKris Kennaway function warnings */ 38674664626SKris Kennaway # include <stdlib.h> 38774664626SKris Kennaway # if defined(__DECC) 38874664626SKris Kennaway # include <unistd.h> 38974664626SKris Kennaway # else 39074664626SKris Kennaway # include <unixlib.h> 39174664626SKris Kennaway # endif 39274664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 39374664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 39474664626SKris Kennaway # define RFILE ".rnd" 39574664626SKris Kennaway # define LIST_SEPARATOR_CHAR ',' 39674664626SKris Kennaway # define NUL_DEV "NLA0:" 3975c87c606SMark Murray /* We don't have any well-defined random devices on VMS, yet... */ 3985c87c606SMark Murray # undef DEVRANDOM 399f579bf8eSKris Kennaway /* We need to do this since VMS has the following coding on status codes: 400f579bf8eSKris Kennaway 401f579bf8eSKris Kennaway Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ... 402f579bf8eSKris Kennaway The important thing to know is that odd numbers are considered 403f579bf8eSKris Kennaway good, while even ones are considered errors. 404f579bf8eSKris Kennaway Bits 3-15: actual status number 405f579bf8eSKris Kennaway Bits 16-27: facility number. 0 is considered "unknown" 406f579bf8eSKris Kennaway Bits 28-31: control bits. If bit 28 is set, the shell won't try to 407f579bf8eSKris Kennaway output the message (which, for random codes, just looks ugly) 408f579bf8eSKris Kennaway 409f579bf8eSKris Kennaway So, what we do here is to change 0 to 1 to get the default success status, 410f579bf8eSKris Kennaway and everything else is shifted up to fit into the status number field, and 411f579bf8eSKris Kennaway the status is tagged as an error, which I believe is what is wanted here. 412f579bf8eSKris Kennaway -- Richard Levitte 413f579bf8eSKris Kennaway */ 41474664626SKris Kennaway # define EXIT(n) do { int __VMS_EXIT = n; \ 415f579bf8eSKris Kennaway if (__VMS_EXIT == 0) \ 416f579bf8eSKris Kennaway __VMS_EXIT = 1; \ 417f579bf8eSKris Kennaway else \ 418f579bf8eSKris Kennaway __VMS_EXIT = (n << 3) | 2; \ 41974664626SKris Kennaway __VMS_EXIT |= 0x10000000; \ 4205c87c606SMark Murray exit(__VMS_EXIT); } while(0) 421f579bf8eSKris Kennaway # define NO_SYS_PARAM_H 4223b4e3dcbSSimon L. B. Nielsen 4233b4e3dcbSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 4243b4e3dcbSSimon L. B. Nielsen # include <fcntl.h> 4253b4e3dcbSSimon L. B. Nielsen # include <unistd.h> 4263b4e3dcbSSimon L. B. Nielsen # define NO_SYS_TYPES_H 4273b4e3dcbSSimon L. B. Nielsen # undef DEVRANDOM 4283b4e3dcbSSimon L. B. Nielsen # ifdef NETWARE_CLIB 4293b4e3dcbSSimon L. B. Nielsen # define getpid GetThreadID 430db522d3aSSimon L. B. Nielsen extern int GetThreadID(void); 431db522d3aSSimon L. B. Nielsen /* # include <conio.h> */ 432db522d3aSSimon L. B. Nielsen extern int kbhit(void); 433db522d3aSSimon L. B. Nielsen # else 434db522d3aSSimon L. B. Nielsen # include <screen.h> 4353b4e3dcbSSimon L. B. Nielsen # endif 4363b4e3dcbSSimon L. B. Nielsen # define NO_SYSLOG 4373b4e3dcbSSimon L. B. Nielsen # define _setmode setmode 4383b4e3dcbSSimon L. B. Nielsen # define _kbhit kbhit 4393b4e3dcbSSimon L. B. Nielsen # define _O_TEXT O_TEXT 4403b4e3dcbSSimon L. B. Nielsen # define _O_BINARY O_BINARY 4413b4e3dcbSSimon L. B. Nielsen # define OPENSSL_CONF "openssl.cnf" 4423b4e3dcbSSimon L. B. Nielsen # define SSLEAY_CONF OPENSSL_CONF 4433b4e3dcbSSimon L. B. Nielsen # define RFILE ".rnd" 4443b4e3dcbSSimon L. B. Nielsen # define LIST_SEPARATOR_CHAR ';' 4453b4e3dcbSSimon L. B. Nielsen # define EXIT(n) { if (n) printf("ERROR: %d\n", (int)n); exit(n); } 4463b4e3dcbSSimon L. B. Nielsen 44774664626SKris Kennaway # else 44874664626SKris Kennaway /* !defined VMS */ 4495c87c606SMark Murray # ifdef OPENSSL_SYS_MPE 450ddd58736SKris Kennaway # define NO_SYS_PARAM_H 451ddd58736SKris Kennaway # endif 452f579bf8eSKris Kennaway # ifdef OPENSSL_UNISTD 45374664626SKris Kennaway # include OPENSSL_UNISTD 454f579bf8eSKris Kennaway # else 455f579bf8eSKris Kennaway # include <unistd.h> 456f579bf8eSKris Kennaway # endif 457f579bf8eSKris Kennaway # ifndef NO_SYS_TYPES_H 458f579bf8eSKris Kennaway # include <sys/types.h> 459f579bf8eSKris Kennaway # endif 4605c87c606SMark Murray # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) 461f579bf8eSKris Kennaway # define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP 462f579bf8eSKris Kennaway * (unless when compiling with -D_POSIX_SOURCE, 463f579bf8eSKris Kennaway * which doesn't work for us) */ 46450ef0093SJacques Vidrine # endif 4655c87c606SMark Murray # ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */ 466ddd58736SKris Kennaway # define setvbuf(a, b, c, d) setbuffer((a), (b), (d)) 467ddd58736SKris Kennaway typedef unsigned long clock_t; 468ddd58736SKris Kennaway # endif 4691f13597dSJung-uk Kim # ifdef OPENSSL_SYS_WIN32_CYGWIN 4701f13597dSJung-uk Kim # include <io.h> 4711f13597dSJung-uk Kim # include <fcntl.h> 4721f13597dSJung-uk Kim # endif 47374664626SKris Kennaway 47474664626SKris Kennaway # define OPENSSL_CONF "openssl.cnf" 47574664626SKris Kennaway # define SSLEAY_CONF OPENSSL_CONF 47674664626SKris Kennaway # define RFILE ".rnd" 47774664626SKris Kennaway # define LIST_SEPARATOR_CHAR ':' 47874664626SKris Kennaway # define NUL_DEV "/dev/null" 4795c87c606SMark Murray # define EXIT(n) exit(n) 48074664626SKris Kennaway # endif 48174664626SKris Kennaway 48274664626SKris Kennaway # define SSLeay_getpid() getpid() 48374664626SKris Kennaway 48474664626SKris Kennaway #endif 48574664626SKris Kennaway 48674664626SKris Kennaway 48774664626SKris Kennaway /*************/ 48874664626SKris Kennaway 48974664626SKris Kennaway #ifdef USE_SOCKETS 49074664626SKris Kennaway # if defined(WINDOWS) || defined(MSDOS) 49174664626SKris Kennaway /* windows world */ 49274664626SKris Kennaway 4935c87c606SMark Murray # ifdef OPENSSL_NO_SOCK 49474664626SKris Kennaway # define SSLeay_Write(a,b,c) (-1) 49574664626SKris Kennaway # define SSLeay_Read(a,b,c) (-1) 49674664626SKris Kennaway # define SHUTDOWN(fd) close(fd) 49774664626SKris Kennaway # define SHUTDOWN2(fd) close(fd) 4985c87c606SMark Murray # elif !defined(__DJGPP__) 4991f13597dSJung-uk Kim # if defined(_WIN32_WCE) && _WIN32_WCE<410 5001f13597dSJung-uk Kim # define getservbyname _masked_declaration_getservbyname 5011f13597dSJung-uk Kim # endif 5021f13597dSJung-uk Kim # if !defined(IPPROTO_IP) 5031f13597dSJung-uk Kim /* winsock[2].h was included already? */ 50474664626SKris Kennaway # include <winsock.h> 5051f13597dSJung-uk Kim # endif 5061f13597dSJung-uk Kim # ifdef getservbyname 5071f13597dSJung-uk Kim # undef getservbyname 5081f13597dSJung-uk Kim /* this is used to be wcecompat/include/winsock_extras.h */ 5091f13597dSJung-uk Kim struct servent* PASCAL getservbyname(const char*,const char*); 5101f13597dSJung-uk Kim # endif 5111f13597dSJung-uk Kim 5123b4e3dcbSSimon L. B. Nielsen # ifdef _WIN64 5133b4e3dcbSSimon L. B. Nielsen /* 5143b4e3dcbSSimon L. B. Nielsen * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because 5153b4e3dcbSSimon L. B. Nielsen * the value constitutes an index in per-process table of limited size 5163b4e3dcbSSimon L. B. Nielsen * and not a real pointer. 5173b4e3dcbSSimon L. B. Nielsen */ 5183b4e3dcbSSimon L. B. Nielsen # define socket(d,t,p) ((int)socket(d,t,p)) 5193b4e3dcbSSimon L. B. Nielsen # define accept(s,f,l) ((int)accept(s,f,l)) 5203b4e3dcbSSimon L. B. Nielsen # endif 52174664626SKris Kennaway # define SSLeay_Write(a,b,c) send((a),(b),(c),0) 52274664626SKris Kennaway # define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 52374664626SKris Kennaway # define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 52474664626SKris Kennaway # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 5255c87c606SMark Murray # else 5265c87c606SMark Murray # define SSLeay_Write(a,b,c) write_s(a,b,c,0) 5275c87c606SMark Murray # define SSLeay_Read(a,b,c) read_s(a,b,c) 5285c87c606SMark Murray # define SHUTDOWN(fd) close_s(fd) 5295c87c606SMark Murray # define SHUTDOWN2(fd) close_s(fd) 53074664626SKris Kennaway # endif 53174664626SKris Kennaway 532f579bf8eSKris Kennaway # elif defined(MAC_OS_pre_X) 533f579bf8eSKris Kennaway 534f579bf8eSKris Kennaway # include "MacSocket.h" 535f579bf8eSKris Kennaway # define SSLeay_Write(a,b,c) MacSocket_send((a),(b),(c)) 536f579bf8eSKris Kennaway # define SSLeay_Read(a,b,c) MacSocket_recv((a),(b),(c),true) 537f579bf8eSKris Kennaway # define SHUTDOWN(fd) MacSocket_close(fd) 538f579bf8eSKris Kennaway # define SHUTDOWN2(fd) MacSocket_close(fd) 53974664626SKris Kennaway 5403b4e3dcbSSimon L. B. Nielsen # elif defined(OPENSSL_SYS_NETWARE) 5413b4e3dcbSSimon L. B. Nielsen /* NetWare uses the WinSock2 interfaces by default, but can be configured for BSD 5423b4e3dcbSSimon L. B. Nielsen */ 5433b4e3dcbSSimon L. B. Nielsen # if defined(NETWARE_BSDSOCK) 5443b4e3dcbSSimon L. B. Nielsen # include <sys/socket.h> 5453b4e3dcbSSimon L. B. Nielsen # include <netinet/in.h> 5463b4e3dcbSSimon L. B. Nielsen # include <sys/time.h> 547db522d3aSSimon L. B. Nielsen # if defined(NETWARE_CLIB) 548db522d3aSSimon L. B. Nielsen # include <sys/bsdskt.h> 549db522d3aSSimon L. B. Nielsen # else 5503b4e3dcbSSimon L. B. Nielsen # include <sys/select.h> 551db522d3aSSimon L. B. Nielsen # endif 5523b4e3dcbSSimon L. B. Nielsen # define INVALID_SOCKET (int)(~0) 5533b4e3dcbSSimon L. B. Nielsen # else 5543b4e3dcbSSimon L. B. Nielsen # include <novsock2.h> 5553b4e3dcbSSimon L. B. Nielsen # endif 5563b4e3dcbSSimon L. B. Nielsen # define SSLeay_Write(a,b,c) send((a),(b),(c),0) 5573b4e3dcbSSimon L. B. Nielsen # define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 5583b4e3dcbSSimon L. B. Nielsen # define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 5593b4e3dcbSSimon L. B. Nielsen # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 5603b4e3dcbSSimon L. B. Nielsen 56174664626SKris Kennaway # else 56274664626SKris Kennaway 563f579bf8eSKris Kennaway # ifndef NO_SYS_PARAM_H 56474664626SKris Kennaway # include <sys/param.h> 56574664626SKris Kennaway # endif 5665c87c606SMark Murray # ifdef OPENSSL_SYS_VXWORKS 567c1803d78SJacques Vidrine # include <time.h> 5685c87c606SMark Murray # elif !defined(OPENSSL_SYS_MPE) 56974664626SKris Kennaway # include <sys/time.h> /* Needed under linux for FD_XXX */ 570ddd58736SKris Kennaway # endif 57174664626SKris Kennaway 57274664626SKris Kennaway # include <netdb.h> 5735c87c606SMark Murray # if defined(OPENSSL_SYS_VMS_NODECC) 57474664626SKris Kennaway # include <socket.h> 57574664626SKris Kennaway # include <in.h> 576de7cdddaSKris Kennaway # include <inet.h> 57774664626SKris Kennaway # else 57874664626SKris Kennaway # include <sys/socket.h> 57974664626SKris Kennaway # ifdef FILIO_H 58074664626SKris Kennaway # include <sys/filio.h> /* Added for FIONBIO under unixware */ 58174664626SKris Kennaway # endif 58274664626SKris Kennaway # include <netinet/in.h> 5831f13597dSJung-uk Kim # if !defined(OPENSSL_SYS_BEOS_R5) 584de7cdddaSKris Kennaway # include <arpa/inet.h> 58574664626SKris Kennaway # endif 5861f13597dSJung-uk Kim # endif 58774664626SKris Kennaway 58874664626SKris Kennaway # if defined(NeXT) || defined(_NEXT_SOURCE) 58974664626SKris Kennaway # include <sys/fcntl.h> 59074664626SKris Kennaway # include <sys/types.h> 59174664626SKris Kennaway # endif 59274664626SKris Kennaway 5935c87c606SMark Murray # ifdef OPENSSL_SYS_AIX 59474664626SKris Kennaway # include <sys/select.h> 59574664626SKris Kennaway # endif 59674664626SKris Kennaway 597ddd58736SKris Kennaway # ifdef __QNX__ 598ddd58736SKris Kennaway # include <sys/select.h> 599ddd58736SKris Kennaway # endif 600ddd58736SKris Kennaway 60174664626SKris Kennaway # if defined(sun) 60274664626SKris Kennaway # include <sys/filio.h> 60374664626SKris Kennaway # else 60474664626SKris Kennaway # ifndef VMS 60574664626SKris Kennaway # include <sys/ioctl.h> 60674664626SKris Kennaway # else 60774664626SKris Kennaway /* ioctl is only in VMS > 7.0 and when socketshr is not used */ 60874664626SKris Kennaway # if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000) 60974664626SKris Kennaway # include <sys/ioctl.h> 61074664626SKris Kennaway # endif 61174664626SKris Kennaway # endif 61274664626SKris Kennaway # endif 61374664626SKris Kennaway 61474664626SKris Kennaway # ifdef VMS 61574664626SKris Kennaway # include <unixio.h> 61674664626SKris Kennaway # if defined(TCPIP_TYPE_SOCKETSHR) 61774664626SKris Kennaway # include <socketshr.h> 61874664626SKris Kennaway # endif 61974664626SKris Kennaway # endif 62074664626SKris Kennaway 62174664626SKris Kennaway # define SSLeay_Read(a,b,c) read((a),(b),(c)) 62274664626SKris Kennaway # define SSLeay_Write(a,b,c) write((a),(b),(c)) 623f579bf8eSKris Kennaway # define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); } 624f579bf8eSKris Kennaway # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); } 6255c87c606SMark Murray # ifndef INVALID_SOCKET 62674664626SKris Kennaway # define INVALID_SOCKET (-1) 6275c87c606SMark Murray # endif /* INVALID_SOCKET */ 62874664626SKris Kennaway # endif 6291f13597dSJung-uk Kim 6301f13597dSJung-uk Kim /* Some IPv6 implementations are broken, disable them in known bad 6311f13597dSJung-uk Kim * versions. 6321f13597dSJung-uk Kim */ 6331f13597dSJung-uk Kim # if !defined(OPENSSL_USE_IPV6) 6341f13597dSJung-uk Kim # if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) 6351f13597dSJung-uk Kim # define OPENSSL_USE_IPV6 1 6361f13597dSJung-uk Kim # else 6371f13597dSJung-uk Kim # define OPENSSL_USE_IPV6 0 6381f13597dSJung-uk Kim # endif 63974664626SKris Kennaway # endif 64074664626SKris Kennaway 641f579bf8eSKris Kennaway #endif 642f579bf8eSKris Kennaway 643ddd58736SKris Kennaway #if defined(sun) && !defined(__svr4__) && !defined(__SVR4) 644a21b1b38SKris Kennaway /* include headers first, so our defines don't break it */ 645a21b1b38SKris Kennaway #include <stdlib.h> 646a21b1b38SKris Kennaway #include <string.h> 647ddd58736SKris Kennaway /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */ 648ddd58736SKris Kennaway # define memmove(s1,s2,n) bcopy((s2),(s1),(n)) 649ddd58736SKris Kennaway # define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b))) 650ddd58736SKris Kennaway extern char *sys_errlist[]; extern int sys_nerr; 651ddd58736SKris Kennaway # define strerror(errnum) \ 652ddd58736SKris Kennaway (((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum]) 6533b4e3dcbSSimon L. B. Nielsen /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */ 6543b4e3dcbSSimon L. B. Nielsen #include "crypto/o_str.h" 6553b4e3dcbSSimon L. B. Nielsen # define memcmp OPENSSL_memcmp 656ddd58736SKris Kennaway #endif 657ddd58736SKris Kennaway 6585c87c606SMark Murray #ifndef OPENSSL_EXIT 6595c87c606SMark Murray # if defined(MONOLITH) && !defined(OPENSSL_C) 6605c87c606SMark Murray # define OPENSSL_EXIT(n) return(n) 6615c87c606SMark Murray # else 6625c87c606SMark Murray # define OPENSSL_EXIT(n) do { EXIT(n); return(n); } while(0) 6635c87c606SMark Murray # endif 6645c87c606SMark Murray #endif 6655c87c606SMark Murray 66674664626SKris Kennaway /***********************************************/ 66774664626SKris Kennaway 66874664626SKris Kennaway #define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */ 66974664626SKris Kennaway 67074664626SKris Kennaway #ifdef sgi 67174664626SKris Kennaway #define IRIX_CC_BUG /* all version of IRIX I've tested (4.* 5.*) */ 67274664626SKris Kennaway #endif 6735c87c606SMark Murray #ifdef OPENSSL_SYS_SNI 67474664626SKris Kennaway #define IRIX_CC_BUG /* CDS++ up to V2.0Bsomething suffered from the same bug.*/ 67574664626SKris Kennaway #endif 67674664626SKris Kennaway 6776be8ae07SJacques Vidrine #if defined(OPENSSL_SYS_WINDOWS) 6786be8ae07SJacques Vidrine # define strcasecmp _stricmp 6796be8ae07SJacques Vidrine # define strncasecmp _strnicmp 6806be8ae07SJacques Vidrine #elif defined(OPENSSL_SYS_VMS) 6816be8ae07SJacques Vidrine /* VMS below version 7.0 doesn't have strcasecmp() */ 6826be8ae07SJacques Vidrine # include "o_str.h" 6836be8ae07SJacques Vidrine # define strcasecmp OPENSSL_strcasecmp 6846be8ae07SJacques Vidrine # define strncasecmp OPENSSL_strncasecmp 6853b4e3dcbSSimon L. B. Nielsen # define OPENSSL_IMPLEMENTS_strncasecmp 6866be8ae07SJacques Vidrine #elif defined(OPENSSL_SYS_OS2) && defined(__EMX__) 6876be8ae07SJacques Vidrine # define strcasecmp stricmp 6886be8ae07SJacques Vidrine # define strncasecmp strnicmp 689db522d3aSSimon L. B. Nielsen #elif defined(OPENSSL_SYS_NETWARE) 690db522d3aSSimon L. B. Nielsen # include <string.h> 691db522d3aSSimon L. B. Nielsen # if defined(NETWARE_CLIB) 6923b4e3dcbSSimon L. B. Nielsen # define strcasecmp stricmp 6933b4e3dcbSSimon L. B. Nielsen # define strncasecmp strnicmp 694db522d3aSSimon L. B. Nielsen # endif /* NETWARE_CLIB */ 6956be8ae07SJacques Vidrine #endif 6966be8ae07SJacques Vidrine 6975c87c606SMark Murray #if defined(OPENSSL_SYS_OS2) && defined(__EMX__) 6985c87c606SMark Murray # include <io.h> 6995c87c606SMark Murray # include <fcntl.h> 7005c87c606SMark Murray # define NO_SYSLOG 70174664626SKris Kennaway #endif 7025c87c606SMark Murray 7035c87c606SMark Murray /* vxworks */ 7045c87c606SMark Murray #if defined(OPENSSL_SYS_VXWORKS) 7055c87c606SMark Murray #include <ioLib.h> 7065c87c606SMark Murray #include <tickLib.h> 7075c87c606SMark Murray #include <sysLib.h> 7085c87c606SMark Murray 7095c87c606SMark Murray #define TTY_STRUCT int 7105c87c606SMark Murray 7115c87c606SMark Murray #define sleep(a) taskDelay((a) * sysClkRateGet()) 7125c87c606SMark Murray 7135c87c606SMark Murray #include <vxWorks.h> 7145c87c606SMark Murray #include <sockLib.h> 7155c87c606SMark Murray #include <taskLib.h> 7165c87c606SMark Murray 7175c87c606SMark Murray #define getpid taskIdSelf 7185c87c606SMark Murray 7195c87c606SMark Murray /* NOTE: these are implemented by helpers in database app! 7205c87c606SMark Murray * if the database is not linked, we need to implement them 7215c87c606SMark Murray * elswhere */ 7225c87c606SMark Murray struct hostent *gethostbyname(const char *name); 7235c87c606SMark Murray struct hostent *gethostbyaddr(const char *addr, int length, int type); 7245c87c606SMark Murray struct servent *getservbyname(const char *name, const char *proto); 7255c87c606SMark Murray 7265c87c606SMark Murray #endif 7275c87c606SMark Murray /* end vxworks */ 72874664626SKris Kennaway 7291f13597dSJung-uk Kim /* beos */ 7301f13597dSJung-uk Kim #if defined(OPENSSL_SYS_BEOS_R5) 7311f13597dSJung-uk Kim #define SO_ERROR 0 7321f13597dSJung-uk Kim #define NO_SYS_UN 7331f13597dSJung-uk Kim #define IPPROTO_IP 0 7341f13597dSJung-uk Kim #include <OS.h> 7351f13597dSJung-uk Kim #endif 7361f13597dSJung-uk Kim 737751d2991SJung-uk Kim #if !defined(inline) && !defined(__cplusplus) 738751d2991SJung-uk Kim # if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L 739751d2991SJung-uk Kim /* do nothing, inline works */ 740751d2991SJung-uk Kim # elif defined(__GNUC__) && __GNUC__>=2 741751d2991SJung-uk Kim # define inline __inline__ 742751d2991SJung-uk Kim # elif defined(_MSC_VER) 743751d2991SJung-uk Kim /* 744751d2991SJung-uk Kim * Visual Studio: inline is available in C++ only, however 745751d2991SJung-uk Kim * __inline is available for C, see 746751d2991SJung-uk Kim * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx 747751d2991SJung-uk Kim */ 748751d2991SJung-uk Kim # define inline __inline 749751d2991SJung-uk Kim # else 750751d2991SJung-uk Kim # define inline 751751d2991SJung-uk Kim # endif 752751d2991SJung-uk Kim #endif 7531f13597dSJung-uk Kim 75474664626SKris Kennaway #ifdef __cplusplus 75574664626SKris Kennaway } 75674664626SKris Kennaway #endif 75774664626SKris Kennaway 75874664626SKris Kennaway #endif 759