e_os.h revision e45f106cb6b47af1f21efe76e933bdea2f5dd1ca
1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* e_os.h */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_E_OS_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_E_OS_H
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/opensslconf.h>
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h>
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* <openssl/e_os2.h> contains what we can justify to make visible
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * to the outside; this file e_os.h is not part of the exported
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * interface. */
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Used to checking reference counts, most while doing perl5 stuff :-) */
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef REF_PRINT
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef REF_PRINT
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define REF_PRINT(a,b)	fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef DEVRANDOM
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* set this to a comma-separated list of 'random' device files to try out.
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * My default, we will try to read at least one of these files */
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom"
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef DEVRANDOM_EGD
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* set this to a comma-seperated list of 'egd' sockets to try out. These
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * sockets will be tried in the order listed in case accessing the device files
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * listed in DEVRANDOM did not return enough entropy. */
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VXWORKS)
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_SYS_PARAM_H
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_CHMOD
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_SYSLOG
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC)
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if macintosh==1
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef MAC_OS_GUSI_SOURCE
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define MAC_OS_pre_X
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NO_SYS_TYPES_H
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     typedef long ssize_t;
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_SYS_PARAM_H
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_CHMOD
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_SYSLOG
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  undef  DEVRANDOM
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define GETPID_IS_MEANINGLESS
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/********************************************************************
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project The Microsoft section
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ********************************************************************/
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following is used becaue of the small stack in some
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Microsoft operating systems */
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32)
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_STATIC	static
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_STATIC
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WIN32) && !defined(WIN32)
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define WIN32
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WIN16) && !defined(WIN16)
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define WIN16
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS)
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define WINDOWS
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_MSDOS) && !defined(MSDOS)
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MSDOS
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS)
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define GETPID_IS_MEANINGLESS
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef WIN32
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_sys_error()	GetLastError()
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_sys_error()	SetLastError(0)
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(WINNT)
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define WIN_CONSOLE_BUG
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_sys_error()	errno
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_sys_error()	errno=0
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(WINDOWS)
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	WSAGetLastError()
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	WSASetLastError(0)
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)	recv((s),(b),(n),0)
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)	send((s),(b),(n),0)
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define EADDRINUSE		WSAEADDRINUSE
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(__DJGPP__)
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define WATT32
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	errno
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	errno=0
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)		close_s(s)
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)	read_s(s,b,n)
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)	send(s,b,n,0)
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(MAC_OS_pre_X)
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	errno
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	errno=0
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)		MacSocket_close(s)
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)	MacSocket_recv((s),(b),(n),true)
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)	MacSocket_send((s),(b),(n))
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_VMS)
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error() errno
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()    errno=0
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ioctlsocket(a,b,c)      ioctl(a,b,c)
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)          close(s)
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)       recv((s),(b),(n),0)
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)      send((s),(b),(n),0)
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_VXWORKS)
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	errno
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	errno=0
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ioctlsocket(a,b,c)	    ioctl((a),(b),(int)(c))
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)		    close(s)
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)	    read((s),(b),(n))
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)	    write((s),(char *)(b),(n))
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_NETWARE)
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(NETWARE_BSDSOCK)
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error() errno
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()    errno=0
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)          close(s)
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ioctlsocket(a,b,c)      ioctl(a,b,c)
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(NETWARE_LIBC)
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)       recv((s),(b),(n),0)
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)      send((s),(b),(n),0)
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)       recv((s),(char*)(b),(n),0)
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)      send((s),(char*)(b),(n),0)
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	WSAGetLastError()
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	WSASetLastError(0)
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)		recv((s),(b),(n),0)
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)		send((s),(b),(n),0)
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define get_last_socket_error()	errno
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define clear_socket_error()	errno=0
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ioctlsocket(a,b,c)	ioctl(a,b,c)
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define closesocket(s)		close(s)
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define readsocket(s,b,n)	read((s),(b),(n))
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define writesocket(s,b,n)	write((s),(b),(n))
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef WIN16
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_CALLBACK	_far _loadds
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_FAR	_far
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_CALLBACK
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define MS_FAR
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_NO_STDIO
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  undef OPENSSL_NO_FP_API
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_NO_FP_API
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if (defined(WINDOWS) || defined(MSDOS))
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifdef __DJGPP__
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <unistd.h>
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <sys/stat.h>
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <sys/socket.h>
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <tcp.h>
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <netdb.h>
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _setmode setmode
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_TEXT O_TEXT
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_BINARY O_BINARY
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    undef DEVRANDOM
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define DEVRANDOM "/dev/urandom\x24"
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif /* __DJGPP__ */
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef S_IFDIR
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define S_IFDIR	_S_IFDIR
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef S_IFMT
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define S_IFMT	_S_IFMT
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if !defined(WINNT) && !defined(__DJGPP__)
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NO_SYSLOG
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NO_DIRENT
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifdef WINDOWS
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT)
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       /*
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* Defining _WIN32_WINNT here in e_os.h implies certain "discipline."
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* Most notably we ought to check for availability of each specific
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* routine with GetProcAddress() and/or quard NT-specific calls with
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* GetVersion() < 0x80000000. One can argue that in latter "or" case
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* we ought to /DELAYLOAD some .DLLs in order to protect ourselves
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* against run-time link errors. This doesn't seem to be necessary,
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* because it turned out that already Windows 95, first non-NT Win32
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* implementation, is equipped with at least NT 3.51 stubs, dummy
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* routines with same name, but which do nothing. Meaning that it's
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* apparently appropriate to guard generic NT calls with GetVersion
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* alone, while NT 4.0 and above calls ought to be additionally
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	* checked upon with GetProcAddress.
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	*/
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define _WIN32_WINNT 0x0400
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <windows.h>
272e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#    include <stdio.h>
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <stddef.h>
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <errno.h>
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <string.h>
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef _WIN64
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define strlen(s) _strlen31(s)
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* cut strings to 2GB */
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic unsigned int _strlen31(const char *str)
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned int len=0;
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	while (*str && len<0x80000000U) str++, len++;
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return len&0x7FFFFFFF;
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <malloc.h>
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace)
288e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu       /* compensate for bug in VC6 ctype.h */
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      undef isspace
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      undef isdigit
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      undef isalnum
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      undef isupper
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      undef isxdigit
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
295e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#    if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)
296e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#      if _MSC_VER>=1300
297e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stdin
298e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stdout
299e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stderr
300e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu         FILE *__iob_func();
301e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stdin  (&__iob_func()[0])
302e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stdout (&__iob_func()[1])
303e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stderr (&__iob_func()[2])
304e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#      elif defined(I_CAN_LIVE_WITH_LNK4049)
305e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stdin
306e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stdout
307e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        undef stderr
308e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu         /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib,
309e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu          * or in other words with /MD. Declaring implicit import, i.e.
310e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu          * with _imp_ prefix, works correctly with all compiler options,
311e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu          * but without /MD results in LINK warning LNK4049:
312e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu          * 'locally defined symbol "__iob" imported'.
313e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu          */
314e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu         extern FILE *_imp___iob;
315e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stdin  (&_imp___iob[0])
316e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stdout (&_imp___iob[1])
317e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#        define stderr (&_imp___iob[2])
318e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#      endif
319e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu#    endif
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  include <io.h>
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  include <fcntl.h>
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifdef OPENSSL_SYS_WINCE
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <winsock_extras.h>
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define ssize_t long
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined (__BORLANDC__)
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _setmode setmode
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_TEXT O_TEXT
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_BINARY O_BINARY
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _int64 __int64
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _kbhit kbhit
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(WIN16) && defined(SSLEAY) && defined(_WINEXITNOPERSIST)
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define EXIT(n) _wsetexit(_WINEXITNOPERSIST)
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define OPENSSL_EXIT(n) do { if (n == 0) EXIT(n); return(n); } while(0)
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  else
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define EXIT(n) exit(n)
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define LIST_SEPARATOR_CHAR ';'
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef X_OK
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define X_OK	0
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef W_OK
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define W_OK	2
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef R_OK
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define R_OK	4
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_CONF	"openssl.cnf"
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define SSLEAY_CONF	OPENSSL_CONF
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define NUL_DEV	"nul"
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define RFILE		".rnd"
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifdef OPENSSL_SYS_WINCE
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define DEFAULT_HOME  ""
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  else
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define DEFAULT_HOME  "C:"
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /* The non-microsoft world world */
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifdef OPENSSL_SYS_VMS
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define VMS 1
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* some programs don't include stdlib, so exit() and others give implicit
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     function warnings */
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <stdlib.h>
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(__DECC)
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <unistd.h>
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <unixlib.h>
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define OPENSSL_CONF	"openssl.cnf"
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLEAY_CONF		OPENSSL_CONF
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define RFILE		".rnd"
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define LIST_SEPARATOR_CHAR ','
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NUL_DEV		"NLA0:"
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* We don't have any well-defined random devices on VMS, yet... */
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    undef DEVRANDOM
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* We need to do this since VMS has the following coding on status codes:
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ...
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project               The important thing to know is that odd numbers are considered
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	       good, while even ones are considered errors.
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     Bits 3-15: actual status number
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     Bits 16-27: facility number.  0 is considered "unknown"
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     Bits 28-31: control bits.  If bit 28 is set, the shell won't try to
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                 output the message (which, for random codes, just looks ugly)
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     So, what we do here is to change 0 to 1 to get the default success status,
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     and everything else is shifted up to fit into the status number field, and
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     the status is tagged as an error, which I believe is what is wanted here.
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     -- Richard Levitte
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  */
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define EXIT(n)		do { int __VMS_EXIT = n; \
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                                     if (__VMS_EXIT == 0) \
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				       __VMS_EXIT = 1; \
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				     else \
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				       __VMS_EXIT = (n << 3) | 2; \
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                                     __VMS_EXIT |= 0x10000000; \
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				     exit(__VMS_EXIT); } while(0)
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NO_SYS_PARAM_H
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  elif defined(OPENSSL_SYS_NETWARE)
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <fcntl.h>
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <unistd.h>
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NO_SYS_TYPES_H
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    undef  DEVRANDOM
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef NETWARE_CLIB
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define getpid GetThreadID
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       extern int GetThreadID(void);
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* #      include <conio.h> */
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       extern int kbhit(void);
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       extern void delay(unsigned milliseconds);
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <screen.h>
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NO_SYSLOG
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _setmode setmode
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _kbhit kbhit
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_TEXT O_TEXT
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define _O_BINARY O_BINARY
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define OPENSSL_CONF   "openssl.cnf"
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLEAY_CONF    OPENSSL_CONF
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define RFILE    ".rnd"
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define LIST_SEPARATOR_CHAR ';'
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define EXIT(n)  { if (n) printf("ERROR: %d\n", (int)n); exit(n); }
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  else
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     /* !defined VMS */
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_SYS_MPE
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define NO_SYS_PARAM_H
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_UNISTD
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include OPENSSL_UNISTD
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <unistd.h>
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifndef NO_SYS_TYPES_H
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/types.h>
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(NeXT) || defined(OPENSSL_SYS_NEWS4)
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                         * (unless when compiling with -D_POSIX_SOURCE,
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                         * which doesn't work for us) */
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS)
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define ssize_t int /* ditto */
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define setvbuf(a, b, c, d) setbuffer((a), (b), (d))
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       typedef unsigned long clock_t;
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define OPENSSL_CONF	"openssl.cnf"
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLEAY_CONF		OPENSSL_CONF
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define RFILE		".rnd"
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define LIST_SEPARATOR_CHAR ':'
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define NUL_DEV		"/dev/null"
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define EXIT(n)		exit(n)
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define SSLeay_getpid()	getpid()
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*************/
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef USE_SOCKETS
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(WINDOWS) || defined(MSDOS)
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      /* windows world */
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_NO_SOCK
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Write(a,b,c)	(-1)
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Read(a,b,c)	(-1)
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN(fd)		close(fd)
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN2(fd)		close(fd)
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    elif !defined(__DJGPP__)
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <winsock.h>
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern HINSTANCE _hInstance;
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      ifdef _WIN64
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the value constitutes an index in per-process table of limited size
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and not a real pointer.
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        define socket(d,t,p)	((int)socket(d,t,p))
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        define accept(s,f,l)	((int)accept(s,f,l))
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      endif
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Write(a,b,c)	send((a),(b),(c),0)
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Read(a,b,c)	recv((a),(b),(c),0)
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN(fd)		{ shutdown((fd),0); closesocket(fd); }
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN2(fd)		{ shutdown((fd),2); closesocket(fd); }
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Write(a,b,c)	write_s(a,b,c,0)
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Read(a,b,c)	read_s(a,b,c)
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN(fd)		close_s(fd)
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN2(fd)		close_s(fd)
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  elif defined(MAC_OS_pre_X)
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include "MacSocket.h"
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLeay_Write(a,b,c)		MacSocket_send((a),(b),(c))
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLeay_Read(a,b,c)		MacSocket_recv((a),(b),(c),true)
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SHUTDOWN(fd)		MacSocket_close(fd)
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SHUTDOWN2(fd)		MacSocket_close(fd)
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  elif defined(OPENSSL_SYS_NETWARE)
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project         /* NetWare uses the WinSock2 interfaces by default, but can be configured for BSD
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project         */
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      if defined(NETWARE_BSDSOCK)
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <sys/socket.h>
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <netinet/in.h>
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <sys/time.h>
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        if defined(NETWARE_CLIB)
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#          include <sys/bsdskt.h>
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        else
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#          include <sys/select.h>
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        endif
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        define INVALID_SOCKET (int)(~0)
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      else
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <novsock2.h>
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      endif
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Write(a,b,c)   send((a),(b),(c),0)
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SSLeay_Read(a,b,c) recv((a),(b),(c),0)
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN(fd)    { shutdown((fd),0); closesocket(fd); }
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      define SHUTDOWN2(fd)      { shutdown((fd),2); closesocket(fd); }
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  else
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifndef NO_SYS_PARAM_H
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/param.h>
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_SYS_VXWORKS
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <time.h>
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    elif !defined(OPENSSL_SYS_MPE)
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/time.h> /* Needed under linux for FD_XXX */
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    include <netdb.h>
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(OPENSSL_SYS_VMS_NODECC)
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <socket.h>
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <in.h>
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <inet.h>
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/socket.h>
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      ifdef FILIO_H
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <sys/filio.h> /* Added for FIONBIO under unixware */
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      endif
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <netinet/in.h>
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <arpa/inet.h>
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(NeXT) || defined(_NEXT_SOURCE)
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/fcntl.h>
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/types.h>
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef OPENSSL_SYS_AIX
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/select.h>
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef __QNX__
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/select.h>
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    if defined(sun)
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <sys/filio.h>
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    else
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      ifndef VMS
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <sys/ioctl.h>
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      else
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 /* ioctl is only in VMS > 7.0 and when socketshr is not used */
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000)
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#          include <sys/ioctl.h>
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        endif
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      endif
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifdef VMS
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      include <unixio.h>
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      if defined(TCPIP_TYPE_SOCKETSHR)
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#        include <socketshr.h>
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#      endif
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLeay_Read(a,b,c)     read((a),(b),(c))
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SSLeay_Write(a,b,c)    write((a),(b),(c))
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SHUTDOWN(fd)    { shutdown((fd),0); closesocket((fd)); }
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define SHUTDOWN2(fd)   { shutdown((fd),2); closesocket((fd)); }
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    ifndef INVALID_SOCKET
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define INVALID_SOCKET	(-1)
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    endif /* INVALID_SOCKET */
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__ultrix)
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef ssize_t
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define ssize_t int
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(sun) && !defined(__svr4__) && !defined(__SVR4)
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* include headers first, so our defines don't break it */
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdlib.h>
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string.h>
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define memmove(s1,s2,n) bcopy((s2),(s1),(n))
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b)))
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern char *sys_errlist[]; extern int sys_nerr;
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define strerror(errnum) \
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	(((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum])
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "crypto/o_str.h"
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define memcmp OPENSSL_memcmp
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_EXIT
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(MONOLITH) && !defined(OPENSSL_C)
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_EXIT(n) return(n)
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_EXIT(n) do { EXIT(n); return(n); } while(0)
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/***********************************************/
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* do we need to do this for getenv.
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Just define getenv for use under windows */
635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef WIN16
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* How to do this needs to be thought out a bit more.... */
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*char *GETENV(char *);
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define Getenv	GETENV*/
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define Getenv	getenv
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define Getenv getenv
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DG_GCC_BUG	/* gcc < 2.6.3 on DGUX */
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef sgi
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define IRIX_CC_BUG	/* all version of IRIX I've tested (4.* 5.*) */
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_SNI
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define IRIX_CC_BUG	/* CDS++ up to V2.0Bsomething suffered from the same bug.*/
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WINDOWS)
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strcasecmp _stricmp
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strncasecmp _strnicmp
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_VMS)
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* VMS below version 7.0 doesn't have strcasecmp() */
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  include "o_str.h"
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strcasecmp OPENSSL_strcasecmp
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strncasecmp OPENSSL_strncasecmp
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_IMPLEMENTS_strncasecmp
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_OS2) && defined(__EMX__)
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strcasecmp stricmp
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define strncasecmp strnicmp
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_NETWARE)
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  include <string.h>
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(NETWARE_CLIB)
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define strcasecmp stricmp
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#    define strncasecmp strnicmp
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif /* NETWARE_CLIB */
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_OS2) && defined(__EMX__)
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# include <io.h>
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# include <fcntl.h>
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define NO_SYSLOG
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* vxworks */
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VXWORKS)
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <ioLib.h>
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <tickLib.h>
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sysLib.h>
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define TTY_STRUCT int
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define sleep(a) taskDelay((a) * sysClkRateGet())
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <vxWorks.h>
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sockLib.h>
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <taskLib.h>
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define getpid taskIdSelf
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* NOTE: these are implemented by helpers in database app!
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * if the database is not linked, we need to implement them
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * elswhere */
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct hostent *gethostbyname(const char *name);
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct hostent *gethostbyaddr(const char *addr, int length, int type);
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct servent *getservbyname(const char *name, const char *proto);
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* end vxworks */
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
712