xref: /freebsd/crypto/openssl/e_os.h (revision 1f13597d)
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 */
2933b4e3dcbSSimon L. B. Nielsen static 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 
3711f13597dSJung-uk Kim #else /* The non-microsoft world */
37274664626SKris Kennaway 
3735c87c606SMark Murray #  ifdef OPENSSL_SYS_VMS
37474664626SKris Kennaway #    define VMS 1
37574664626SKris Kennaway   /* some programs don't include stdlib, so exit() and others give implicit
37674664626SKris Kennaway      function warnings */
37774664626SKris Kennaway #    include <stdlib.h>
37874664626SKris Kennaway #    if defined(__DECC)
37974664626SKris Kennaway #      include <unistd.h>
38074664626SKris Kennaway #    else
38174664626SKris Kennaway #      include <unixlib.h>
38274664626SKris Kennaway #    endif
38374664626SKris Kennaway #    define OPENSSL_CONF	"openssl.cnf"
38474664626SKris Kennaway #    define SSLEAY_CONF		OPENSSL_CONF
38574664626SKris Kennaway #    define RFILE		".rnd"
38674664626SKris Kennaway #    define LIST_SEPARATOR_CHAR ','
38774664626SKris Kennaway #    define NUL_DEV		"NLA0:"
3885c87c606SMark Murray   /* We don't have any well-defined random devices on VMS, yet... */
3895c87c606SMark Murray #    undef DEVRANDOM
390f579bf8eSKris Kennaway   /* We need to do this since VMS has the following coding on status codes:
391f579bf8eSKris Kennaway 
392f579bf8eSKris Kennaway      Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ...
393f579bf8eSKris Kennaway                The important thing to know is that odd numbers are considered
394f579bf8eSKris Kennaway 	       good, while even ones are considered errors.
395f579bf8eSKris Kennaway      Bits 3-15: actual status number
396f579bf8eSKris Kennaway      Bits 16-27: facility number.  0 is considered "unknown"
397f579bf8eSKris Kennaway      Bits 28-31: control bits.  If bit 28 is set, the shell won't try to
398f579bf8eSKris Kennaway                  output the message (which, for random codes, just looks ugly)
399f579bf8eSKris Kennaway 
400f579bf8eSKris Kennaway      So, what we do here is to change 0 to 1 to get the default success status,
401f579bf8eSKris Kennaway      and everything else is shifted up to fit into the status number field, and
402f579bf8eSKris Kennaway      the status is tagged as an error, which I believe is what is wanted here.
403f579bf8eSKris Kennaway      -- Richard Levitte
404f579bf8eSKris Kennaway   */
40574664626SKris Kennaway #    define EXIT(n)		do { int __VMS_EXIT = n; \
406f579bf8eSKris Kennaway                                      if (__VMS_EXIT == 0) \
407f579bf8eSKris Kennaway 				       __VMS_EXIT = 1; \
408f579bf8eSKris Kennaway 				     else \
409f579bf8eSKris Kennaway 				       __VMS_EXIT = (n << 3) | 2; \
41074664626SKris Kennaway                                      __VMS_EXIT |= 0x10000000; \
4115c87c606SMark Murray 				     exit(__VMS_EXIT); } while(0)
412f579bf8eSKris Kennaway #    define NO_SYS_PARAM_H
4133b4e3dcbSSimon L. B. Nielsen 
4143b4e3dcbSSimon L. B. Nielsen #  elif defined(OPENSSL_SYS_NETWARE)
4153b4e3dcbSSimon L. B. Nielsen #    include <fcntl.h>
4163b4e3dcbSSimon L. B. Nielsen #    include <unistd.h>
4173b4e3dcbSSimon L. B. Nielsen #    define NO_SYS_TYPES_H
4183b4e3dcbSSimon L. B. Nielsen #    undef  DEVRANDOM
4193b4e3dcbSSimon L. B. Nielsen #    ifdef NETWARE_CLIB
4203b4e3dcbSSimon L. B. Nielsen #      define getpid GetThreadID
421db522d3aSSimon L. B. Nielsen        extern int GetThreadID(void);
422db522d3aSSimon L. B. Nielsen /* #      include <conio.h> */
423db522d3aSSimon L. B. Nielsen        extern int kbhit(void);
424db522d3aSSimon L. B. Nielsen #    else
425db522d3aSSimon L. B. Nielsen #      include <screen.h>
4263b4e3dcbSSimon L. B. Nielsen #    endif
4273b4e3dcbSSimon L. B. Nielsen #    define NO_SYSLOG
4283b4e3dcbSSimon L. B. Nielsen #    define _setmode setmode
4293b4e3dcbSSimon L. B. Nielsen #    define _kbhit kbhit
4303b4e3dcbSSimon L. B. Nielsen #    define _O_TEXT O_TEXT
4313b4e3dcbSSimon L. B. Nielsen #    define _O_BINARY O_BINARY
4323b4e3dcbSSimon L. B. Nielsen #    define OPENSSL_CONF   "openssl.cnf"
4333b4e3dcbSSimon L. B. Nielsen #    define SSLEAY_CONF    OPENSSL_CONF
4343b4e3dcbSSimon L. B. Nielsen #    define RFILE    ".rnd"
4353b4e3dcbSSimon L. B. Nielsen #    define LIST_SEPARATOR_CHAR ';'
4363b4e3dcbSSimon L. B. Nielsen #    define EXIT(n)  { if (n) printf("ERROR: %d\n", (int)n); exit(n); }
4373b4e3dcbSSimon L. B. Nielsen 
43874664626SKris Kennaway #  else
43974664626SKris Kennaway      /* !defined VMS */
4405c87c606SMark Murray #    ifdef OPENSSL_SYS_MPE
441ddd58736SKris Kennaway #      define NO_SYS_PARAM_H
442ddd58736SKris Kennaway #    endif
443f579bf8eSKris Kennaway #    ifdef OPENSSL_UNISTD
44474664626SKris Kennaway #      include OPENSSL_UNISTD
445f579bf8eSKris Kennaway #    else
446f579bf8eSKris Kennaway #      include <unistd.h>
447f579bf8eSKris Kennaway #    endif
448f579bf8eSKris Kennaway #    ifndef NO_SYS_TYPES_H
449f579bf8eSKris Kennaway #      include <sys/types.h>
450f579bf8eSKris Kennaway #    endif
4515c87c606SMark Murray #    if defined(NeXT) || defined(OPENSSL_SYS_NEWS4)
452f579bf8eSKris Kennaway #      define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP
453f579bf8eSKris Kennaway                          * (unless when compiling with -D_POSIX_SOURCE,
454f579bf8eSKris Kennaway                          * which doesn't work for us) */
45550ef0093SJacques Vidrine #    endif
4565c87c606SMark Murray #    ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */
457ddd58736SKris Kennaway #      define setvbuf(a, b, c, d) setbuffer((a), (b), (d))
458ddd58736SKris Kennaway        typedef unsigned long clock_t;
459ddd58736SKris Kennaway #    endif
4601f13597dSJung-uk Kim #    ifdef OPENSSL_SYS_WIN32_CYGWIN
4611f13597dSJung-uk Kim #      include <io.h>
4621f13597dSJung-uk Kim #      include <fcntl.h>
4631f13597dSJung-uk Kim #    endif
46474664626SKris Kennaway 
46574664626SKris Kennaway #    define OPENSSL_CONF	"openssl.cnf"
46674664626SKris Kennaway #    define SSLEAY_CONF		OPENSSL_CONF
46774664626SKris Kennaway #    define RFILE		".rnd"
46874664626SKris Kennaway #    define LIST_SEPARATOR_CHAR ':'
46974664626SKris Kennaway #    define NUL_DEV		"/dev/null"
4705c87c606SMark Murray #    define EXIT(n)		exit(n)
47174664626SKris Kennaway #  endif
47274664626SKris Kennaway 
47374664626SKris Kennaway #  define SSLeay_getpid()	getpid()
47474664626SKris Kennaway 
47574664626SKris Kennaway #endif
47674664626SKris Kennaway 
47774664626SKris Kennaway 
47874664626SKris Kennaway /*************/
47974664626SKris Kennaway 
48074664626SKris Kennaway #ifdef USE_SOCKETS
48174664626SKris Kennaway #  if defined(WINDOWS) || defined(MSDOS)
48274664626SKris Kennaway       /* windows world */
48374664626SKris Kennaway 
4845c87c606SMark Murray #    ifdef OPENSSL_NO_SOCK
48574664626SKris Kennaway #      define SSLeay_Write(a,b,c)	(-1)
48674664626SKris Kennaway #      define SSLeay_Read(a,b,c)	(-1)
48774664626SKris Kennaway #      define SHUTDOWN(fd)		close(fd)
48874664626SKris Kennaway #      define SHUTDOWN2(fd)		close(fd)
4895c87c606SMark Murray #    elif !defined(__DJGPP__)
4901f13597dSJung-uk Kim #      if defined(_WIN32_WCE) && _WIN32_WCE<410
4911f13597dSJung-uk Kim #        define getservbyname _masked_declaration_getservbyname
4921f13597dSJung-uk Kim #      endif
4931f13597dSJung-uk Kim #      if !defined(IPPROTO_IP)
4941f13597dSJung-uk Kim          /* winsock[2].h was included already? */
49574664626SKris Kennaway #        include <winsock.h>
4961f13597dSJung-uk Kim #      endif
4971f13597dSJung-uk Kim #      ifdef getservbyname
4981f13597dSJung-uk Kim #        undef getservbyname
4991f13597dSJung-uk Kim          /* this is used to be wcecompat/include/winsock_extras.h */
5001f13597dSJung-uk Kim          struct servent* PASCAL getservbyname(const char*,const char*);
5011f13597dSJung-uk Kim #      endif
5021f13597dSJung-uk Kim 
5033b4e3dcbSSimon L. B. Nielsen #      ifdef _WIN64
5043b4e3dcbSSimon L. B. Nielsen /*
5053b4e3dcbSSimon L. B. Nielsen  * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because
5063b4e3dcbSSimon L. B. Nielsen  * the value constitutes an index in per-process table of limited size
5073b4e3dcbSSimon L. B. Nielsen  * and not a real pointer.
5083b4e3dcbSSimon L. B. Nielsen  */
5093b4e3dcbSSimon L. B. Nielsen #        define socket(d,t,p)	((int)socket(d,t,p))
5103b4e3dcbSSimon L. B. Nielsen #        define accept(s,f,l)	((int)accept(s,f,l))
5113b4e3dcbSSimon L. B. Nielsen #      endif
51274664626SKris Kennaway #      define SSLeay_Write(a,b,c)	send((a),(b),(c),0)
51374664626SKris Kennaway #      define SSLeay_Read(a,b,c)	recv((a),(b),(c),0)
51474664626SKris Kennaway #      define SHUTDOWN(fd)		{ shutdown((fd),0); closesocket(fd); }
51574664626SKris Kennaway #      define SHUTDOWN2(fd)		{ shutdown((fd),2); closesocket(fd); }
5165c87c606SMark Murray #    else
5175c87c606SMark Murray #      define SSLeay_Write(a,b,c)	write_s(a,b,c,0)
5185c87c606SMark Murray #      define SSLeay_Read(a,b,c)	read_s(a,b,c)
5195c87c606SMark Murray #      define SHUTDOWN(fd)		close_s(fd)
5205c87c606SMark Murray #      define SHUTDOWN2(fd)		close_s(fd)
52174664626SKris Kennaway #    endif
52274664626SKris Kennaway 
523f579bf8eSKris Kennaway #  elif defined(MAC_OS_pre_X)
524f579bf8eSKris Kennaway 
525f579bf8eSKris Kennaway #    include "MacSocket.h"
526f579bf8eSKris Kennaway #    define SSLeay_Write(a,b,c)		MacSocket_send((a),(b),(c))
527f579bf8eSKris Kennaway #    define SSLeay_Read(a,b,c)		MacSocket_recv((a),(b),(c),true)
528f579bf8eSKris Kennaway #    define SHUTDOWN(fd)		MacSocket_close(fd)
529f579bf8eSKris Kennaway #    define SHUTDOWN2(fd)		MacSocket_close(fd)
53074664626SKris Kennaway 
5313b4e3dcbSSimon L. B. Nielsen #  elif defined(OPENSSL_SYS_NETWARE)
5323b4e3dcbSSimon L. B. Nielsen          /* NetWare uses the WinSock2 interfaces by default, but can be configured for BSD
5333b4e3dcbSSimon L. B. Nielsen          */
5343b4e3dcbSSimon L. B. Nielsen #      if defined(NETWARE_BSDSOCK)
5353b4e3dcbSSimon L. B. Nielsen #        include <sys/socket.h>
5363b4e3dcbSSimon L. B. Nielsen #        include <netinet/in.h>
5373b4e3dcbSSimon L. B. Nielsen #        include <sys/time.h>
538db522d3aSSimon L. B. Nielsen #        if defined(NETWARE_CLIB)
539db522d3aSSimon L. B. Nielsen #          include <sys/bsdskt.h>
540db522d3aSSimon L. B. Nielsen #        else
5413b4e3dcbSSimon L. B. Nielsen #          include <sys/select.h>
542db522d3aSSimon L. B. Nielsen #        endif
5433b4e3dcbSSimon L. B. Nielsen #        define INVALID_SOCKET (int)(~0)
5443b4e3dcbSSimon L. B. Nielsen #      else
5453b4e3dcbSSimon L. B. Nielsen #        include <novsock2.h>
5463b4e3dcbSSimon L. B. Nielsen #      endif
5473b4e3dcbSSimon L. B. Nielsen #      define SSLeay_Write(a,b,c)   send((a),(b),(c),0)
5483b4e3dcbSSimon L. B. Nielsen #      define SSLeay_Read(a,b,c) recv((a),(b),(c),0)
5493b4e3dcbSSimon L. B. Nielsen #      define SHUTDOWN(fd)    { shutdown((fd),0); closesocket(fd); }
5503b4e3dcbSSimon L. B. Nielsen #      define SHUTDOWN2(fd)      { shutdown((fd),2); closesocket(fd); }
5513b4e3dcbSSimon L. B. Nielsen 
55274664626SKris Kennaway #  else
55374664626SKris Kennaway 
554f579bf8eSKris Kennaway #    ifndef NO_SYS_PARAM_H
55574664626SKris Kennaway #      include <sys/param.h>
55674664626SKris Kennaway #    endif
5575c87c606SMark Murray #    ifdef OPENSSL_SYS_VXWORKS
558c1803d78SJacques Vidrine #      include <time.h>
5595c87c606SMark Murray #    elif !defined(OPENSSL_SYS_MPE)
56074664626SKris Kennaway #      include <sys/time.h> /* Needed under linux for FD_XXX */
561ddd58736SKris Kennaway #    endif
56274664626SKris Kennaway 
56374664626SKris Kennaway #    include <netdb.h>
5645c87c606SMark Murray #    if defined(OPENSSL_SYS_VMS_NODECC)
56574664626SKris Kennaway #      include <socket.h>
56674664626SKris Kennaway #      include <in.h>
567de7cdddaSKris Kennaway #      include <inet.h>
56874664626SKris Kennaway #    else
56974664626SKris Kennaway #      include <sys/socket.h>
57074664626SKris Kennaway #      ifdef FILIO_H
57174664626SKris Kennaway #        include <sys/filio.h> /* Added for FIONBIO under unixware */
57274664626SKris Kennaway #      endif
57374664626SKris Kennaway #      include <netinet/in.h>
5741f13597dSJung-uk Kim #      if !defined(OPENSSL_SYS_BEOS_R5)
575de7cdddaSKris Kennaway #      include <arpa/inet.h>
57674664626SKris Kennaway #    endif
5771f13597dSJung-uk Kim #    endif
57874664626SKris Kennaway 
57974664626SKris Kennaway #    if defined(NeXT) || defined(_NEXT_SOURCE)
58074664626SKris Kennaway #      include <sys/fcntl.h>
58174664626SKris Kennaway #      include <sys/types.h>
58274664626SKris Kennaway #    endif
58374664626SKris Kennaway 
5845c87c606SMark Murray #    ifdef OPENSSL_SYS_AIX
58574664626SKris Kennaway #      include <sys/select.h>
58674664626SKris Kennaway #    endif
58774664626SKris Kennaway 
588ddd58736SKris Kennaway #    ifdef __QNX__
589ddd58736SKris Kennaway #      include <sys/select.h>
590ddd58736SKris Kennaway #    endif
591ddd58736SKris Kennaway 
59274664626SKris Kennaway #    if defined(sun)
59374664626SKris Kennaway #      include <sys/filio.h>
59474664626SKris Kennaway #    else
59574664626SKris Kennaway #      ifndef VMS
59674664626SKris Kennaway #        include <sys/ioctl.h>
59774664626SKris Kennaway #      else
59874664626SKris Kennaway 	 /* ioctl is only in VMS > 7.0 and when socketshr is not used */
59974664626SKris Kennaway #        if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000)
60074664626SKris Kennaway #          include <sys/ioctl.h>
60174664626SKris Kennaway #        endif
60274664626SKris Kennaway #      endif
60374664626SKris Kennaway #    endif
60474664626SKris Kennaway 
60574664626SKris Kennaway #    ifdef VMS
60674664626SKris Kennaway #      include <unixio.h>
60774664626SKris Kennaway #      if defined(TCPIP_TYPE_SOCKETSHR)
60874664626SKris Kennaway #        include <socketshr.h>
60974664626SKris Kennaway #      endif
61074664626SKris Kennaway #    endif
61174664626SKris Kennaway 
61274664626SKris Kennaway #    define SSLeay_Read(a,b,c)     read((a),(b),(c))
61374664626SKris Kennaway #    define SSLeay_Write(a,b,c)    write((a),(b),(c))
614f579bf8eSKris Kennaway #    define SHUTDOWN(fd)    { shutdown((fd),0); closesocket((fd)); }
615f579bf8eSKris Kennaway #    define SHUTDOWN2(fd)   { shutdown((fd),2); closesocket((fd)); }
6165c87c606SMark Murray #    ifndef INVALID_SOCKET
61774664626SKris Kennaway #    define INVALID_SOCKET	(-1)
6185c87c606SMark Murray #    endif /* INVALID_SOCKET */
61974664626SKris Kennaway #  endif
6201f13597dSJung-uk Kim 
6211f13597dSJung-uk Kim /* Some IPv6 implementations are broken, disable them in known bad
6221f13597dSJung-uk Kim  * versions.
6231f13597dSJung-uk Kim  */
6241f13597dSJung-uk Kim #  if !defined(OPENSSL_USE_IPV6)
6251f13597dSJung-uk Kim #    if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB)
6261f13597dSJung-uk Kim #      define OPENSSL_USE_IPV6 1
6271f13597dSJung-uk Kim #    else
6281f13597dSJung-uk Kim #      define OPENSSL_USE_IPV6 0
6291f13597dSJung-uk Kim #    endif
63074664626SKris Kennaway #  endif
63174664626SKris Kennaway 
632f579bf8eSKris Kennaway #endif
633f579bf8eSKris Kennaway 
634ddd58736SKris Kennaway #if defined(sun) && !defined(__svr4__) && !defined(__SVR4)
635a21b1b38SKris Kennaway   /* include headers first, so our defines don't break it */
636a21b1b38SKris Kennaway #include <stdlib.h>
637a21b1b38SKris Kennaway #include <string.h>
638ddd58736SKris Kennaway   /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */
639ddd58736SKris Kennaway # define memmove(s1,s2,n) bcopy((s2),(s1),(n))
640ddd58736SKris Kennaway # define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b)))
641ddd58736SKris Kennaway extern char *sys_errlist[]; extern int sys_nerr;
642ddd58736SKris Kennaway # define strerror(errnum) \
643ddd58736SKris Kennaway 	(((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum])
6443b4e3dcbSSimon L. B. Nielsen   /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */
6453b4e3dcbSSimon L. B. Nielsen #include "crypto/o_str.h"
6463b4e3dcbSSimon L. B. Nielsen # define memcmp OPENSSL_memcmp
647ddd58736SKris Kennaway #endif
648ddd58736SKris Kennaway 
6495c87c606SMark Murray #ifndef OPENSSL_EXIT
6505c87c606SMark Murray # if defined(MONOLITH) && !defined(OPENSSL_C)
6515c87c606SMark Murray #  define OPENSSL_EXIT(n) return(n)
6525c87c606SMark Murray # else
6535c87c606SMark Murray #  define OPENSSL_EXIT(n) do { EXIT(n); return(n); } while(0)
6545c87c606SMark Murray # endif
6555c87c606SMark Murray #endif
6565c87c606SMark Murray 
65774664626SKris Kennaway /***********************************************/
65874664626SKris Kennaway 
65974664626SKris Kennaway #define DG_GCC_BUG	/* gcc < 2.6.3 on DGUX */
66074664626SKris Kennaway 
66174664626SKris Kennaway #ifdef sgi
66274664626SKris Kennaway #define IRIX_CC_BUG	/* all version of IRIX I've tested (4.* 5.*) */
66374664626SKris Kennaway #endif
6645c87c606SMark Murray #ifdef OPENSSL_SYS_SNI
66574664626SKris Kennaway #define IRIX_CC_BUG	/* CDS++ up to V2.0Bsomething suffered from the same bug.*/
66674664626SKris Kennaway #endif
66774664626SKris Kennaway 
6686be8ae07SJacques Vidrine #if defined(OPENSSL_SYS_WINDOWS)
6696be8ae07SJacques Vidrine #  define strcasecmp _stricmp
6706be8ae07SJacques Vidrine #  define strncasecmp _strnicmp
6716be8ae07SJacques Vidrine #elif defined(OPENSSL_SYS_VMS)
6726be8ae07SJacques Vidrine /* VMS below version 7.0 doesn't have strcasecmp() */
6736be8ae07SJacques Vidrine #  include "o_str.h"
6746be8ae07SJacques Vidrine #  define strcasecmp OPENSSL_strcasecmp
6756be8ae07SJacques Vidrine #  define strncasecmp OPENSSL_strncasecmp
6763b4e3dcbSSimon L. B. Nielsen #  define OPENSSL_IMPLEMENTS_strncasecmp
6776be8ae07SJacques Vidrine #elif defined(OPENSSL_SYS_OS2) && defined(__EMX__)
6786be8ae07SJacques Vidrine #  define strcasecmp stricmp
6796be8ae07SJacques Vidrine #  define strncasecmp strnicmp
680db522d3aSSimon L. B. Nielsen #elif defined(OPENSSL_SYS_NETWARE)
681db522d3aSSimon L. B. Nielsen #  include <string.h>
682db522d3aSSimon L. B. Nielsen #  if defined(NETWARE_CLIB)
6833b4e3dcbSSimon L. B. Nielsen #    define strcasecmp stricmp
6843b4e3dcbSSimon L. B. Nielsen #    define strncasecmp strnicmp
685db522d3aSSimon L. B. Nielsen #  endif /* NETWARE_CLIB */
6866be8ae07SJacques Vidrine #endif
6876be8ae07SJacques Vidrine 
6885c87c606SMark Murray #if defined(OPENSSL_SYS_OS2) && defined(__EMX__)
6895c87c606SMark Murray # include <io.h>
6905c87c606SMark Murray # include <fcntl.h>
6915c87c606SMark Murray # define NO_SYSLOG
69274664626SKris Kennaway #endif
6935c87c606SMark Murray 
6945c87c606SMark Murray /* vxworks */
6955c87c606SMark Murray #if defined(OPENSSL_SYS_VXWORKS)
6965c87c606SMark Murray #include <ioLib.h>
6975c87c606SMark Murray #include <tickLib.h>
6985c87c606SMark Murray #include <sysLib.h>
6995c87c606SMark Murray 
7005c87c606SMark Murray #define TTY_STRUCT int
7015c87c606SMark Murray 
7025c87c606SMark Murray #define sleep(a) taskDelay((a) * sysClkRateGet())
7035c87c606SMark Murray 
7045c87c606SMark Murray #include <vxWorks.h>
7055c87c606SMark Murray #include <sockLib.h>
7065c87c606SMark Murray #include <taskLib.h>
7075c87c606SMark Murray 
7085c87c606SMark Murray #define getpid taskIdSelf
7095c87c606SMark Murray 
7105c87c606SMark Murray /* NOTE: these are implemented by helpers in database app!
7115c87c606SMark Murray  * if the database is not linked, we need to implement them
7125c87c606SMark Murray  * elswhere */
7135c87c606SMark Murray struct hostent *gethostbyname(const char *name);
7145c87c606SMark Murray struct hostent *gethostbyaddr(const char *addr, int length, int type);
7155c87c606SMark Murray struct servent *getservbyname(const char *name, const char *proto);
7165c87c606SMark Murray 
7175c87c606SMark Murray #endif
7185c87c606SMark Murray /* end vxworks */
71974664626SKris Kennaway 
7201f13597dSJung-uk Kim /* beos */
7211f13597dSJung-uk Kim #if defined(OPENSSL_SYS_BEOS_R5)
7221f13597dSJung-uk Kim #define SO_ERROR 0
7231f13597dSJung-uk Kim #define NO_SYS_UN
7241f13597dSJung-uk Kim #define IPPROTO_IP 0
7251f13597dSJung-uk Kim #include <OS.h>
7261f13597dSJung-uk Kim #endif
7271f13597dSJung-uk Kim 
7281f13597dSJung-uk Kim 
72974664626SKris Kennaway #ifdef  __cplusplus
73074664626SKris Kennaway }
73174664626SKris Kennaway #endif
73274664626SKris Kennaway 
73374664626SKris Kennaway #endif
73474664626SKris Kennaway 
735