1c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* e_os.h */ 2c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * All rights reserved. 4c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 5c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This package is an SSL implementation written 6c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * by Eric Young (eay@cryptsoft.com). 7c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The implementation was written so as to conform with Netscapes SSL. 8c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 9c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This library is free for commercial and non-commercial use as long as 10c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the following conditions are aheared to. The following conditions 11c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * apply to all code found in this distribution, be it the RC4, RSA, 12c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * included with this distribution is covered by the same copyright terms 14c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 16c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Copyright remains Eric Young's, and as such any Copyright notices in 17c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the code are not to be removed. 18c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * If this package is used in a product, Eric Young should be given attribution 19c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * as the author of the parts of the library used. 20c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This can be in the form of a textual message at program startup or 21c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * in documentation (online or textual) provided with the package. 22c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 23c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Redistribution and use in source and binary forms, with or without 24c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * modification, are permitted provided that the following conditions 25c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * are met: 26c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 1. Redistributions of source code must retain the copyright 27c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * notice, this list of conditions and the following disclaimer. 28c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 2. Redistributions in binary form must reproduce the above copyright 29c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * notice, this list of conditions and the following disclaimer in the 30c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * documentation and/or other materials provided with the distribution. 31c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 3. All advertising materials mentioning features or use of this software 32c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * must display the following acknowledgement: 33c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * "This product includes cryptographic software written by 34c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Eric Young (eay@cryptsoft.com)" 35c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The word 'cryptographic' can be left out if the rouines from the library 36c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * being used are not cryptographic related :-). 37c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 4. If you include any Windows specific code (or a derivative thereof) from 38c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the apps directory (application code) you must include an acknowledgement: 39c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 41c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * SUCH DAMAGE. 52c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 53c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The licence and distribution terms for any publically available version or 54c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * derivative of this code cannot be changed. i.e. this code cannot simply be 55c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * copied and put under another distribution licence 56c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * [including the GNU Public Licence.] 57c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 58c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 59c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef HEADER_E_OS_H 60c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define HEADER_E_OS_H 61c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 62c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/opensslconf.h> 63c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 64c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/e_os2.h> 65c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* <openssl/e_os2.h> contains what we can justify to make visible 66c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * to the outside; this file e_os.h is not part of the exported 67c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * interface. */ 68c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 69c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 70c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgextern "C" { 71c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 72c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 73c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Used to checking reference counts, most while doing perl5 stuff :-) */ 74c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef REF_PRINT 75c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#undef REF_PRINT 76c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a) 77c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 78c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 79c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef DEVRANDOM 80c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* set this to a comma-separated list of 'random' device files to try out. 81c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * My default, we will try to read at least one of these files */ 82c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom" 83c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 84c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef DEVRANDOM_EGD 85c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* set this to a comma-seperated list of 'egd' sockets to try out. These 86c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * sockets will be tried in the order listed in case accessing the device files 87c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * listed in DEVRANDOM did not return enough entropy. */ 88c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy" 89c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 90c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 91c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_VXWORKS) 92c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_PARAM_H 93c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_CHMOD 94c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYSLOG 95c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 96c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 97c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) 98c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if macintosh==1 99c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef MAC_OS_GUSI_SOURCE 100c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MAC_OS_pre_X 101c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_TYPES_H 102c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 103c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_PARAM_H 104c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_CHMOD 105c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYSLOG 106c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef DEVRANDOM 107c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define GETPID_IS_MEANINGLESS 108c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 109c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 110c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 111c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/******************************************************************** 112c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org The Microsoft section 113c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ********************************************************************/ 114480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org/* The following is used because of the small stack in some 115c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Microsoft operating systems */ 116c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) 117c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_STATIC static 118c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 119c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_STATIC 120c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 121c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 122c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_WIN32) && !defined(WIN32) 123c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define WIN32 124c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 125c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS) 126c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define WINDOWS 127c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 128c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_MSDOS) && !defined(MSDOS) 129c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MSDOS 130c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 131c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 132c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS) 133c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define GETPID_IS_MEANINGLESS 134c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 135c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 136c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef WIN32 137c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_sys_error() GetLastError() 138c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_sys_error() SetLastError(0) 139c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if !defined(WINNT) 140c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define WIN_CONSOLE_BUG 141c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 142c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 143c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_sys_error() errno 144c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_sys_error() errno=0 145c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 146c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 147c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(WINDOWS) 148c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() WSAGetLastError() 149c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() WSASetLastError(0) 150c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) recv((s),(b),(n),0) 151c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send((s),(b),(n),0) 152c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(__DJGPP__) 153c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define WATT32 154c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 155c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 156c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) close_s(s) 157c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) read_s(s,b,n) 158c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send(s,b,n,0) 159c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(MAC_OS_pre_X) 160c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 161c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 162c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) MacSocket_close(s) 163c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) MacSocket_recv((s),(b),(n),true) 164c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) MacSocket_send((s),(b),(n)) 165c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_VMS) 166c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 167c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 168c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define ioctlsocket(a,b,c) ioctl(a,b,c) 169c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) close(s) 170c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) recv((s),(b),(n),0) 171c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send((s),(b),(n),0) 172c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_VXWORKS) 173c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 174c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 175c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define ioctlsocket(a,b,c) ioctl((a),(b),(int)(c)) 176c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) close(s) 177c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) read((s),(b),(n)) 178c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) write((s),(char *)(b),(n)) 179480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#elif defined(OPENSSL_SYS_BEOS_R5) 180480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define get_last_socket_error() errno 181480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define clear_socket_error() errno=0 182480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define FIONBIO SO_NONBLOCK 183480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) 184480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define readsocket(s,b,n) recv((s),(b),(n),0) 185480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define writesocket(s,b,n) send((s),(b),(n),0) 186c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_NETWARE) 187c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(NETWARE_BSDSOCK) 188c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 189c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 190c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) close(s) 191c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define ioctlsocket(a,b,c) ioctl(a,b,c) 192c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(NETWARE_LIBC) 193c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) recv((s),(b),(n),0) 194c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send((s),(b),(n),0) 195c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 196c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) recv((s),(char*)(b),(n),0) 197c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send((s),(char*)(b),(n),0) 198c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 199c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 200c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() WSAGetLastError() 201c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() WSASetLastError(0) 202c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) recv((s),(b),(n),0) 203c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) send((s),(b),(n),0) 204c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 205c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 206c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define get_last_socket_error() errno 207c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define clear_socket_error() errno=0 208c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define ioctlsocket(a,b,c) ioctl(a,b,c) 209c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define closesocket(s) close(s) 210c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define readsocket(s,b,n) read((s),(b),(n)) 211c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define writesocket(s,b,n) write((s),(b),(n)) 212c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 213c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 214480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#ifdef WIN16 /* never the case */ 215c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_CALLBACK _far _loadds 216c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_FAR _far 217c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 218c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_CALLBACK 219c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define MS_FAR 220c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 221c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 222c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef OPENSSL_NO_STDIO 223c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef OPENSSL_NO_FP_API 224c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_NO_FP_API 225c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 226c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 227c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if (defined(WINDOWS) || defined(MSDOS)) 228c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 229c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef __DJGPP__ 230c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unistd.h> 231c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/stat.h> 232c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/socket.h> 233c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <tcp.h> 234c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <netdb.h> 235c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _setmode setmode 236c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_TEXT O_TEXT 237c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_BINARY O_BINARY 238c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef DEVRANDOM 239c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define DEVRANDOM "/dev/urandom\x24" 240c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif /* __DJGPP__ */ 241c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 242c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef S_IFDIR 243c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define S_IFDIR _S_IFDIR 244c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 245c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 246c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef S_IFMT 247c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define S_IFMT _S_IFMT 248c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 249c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 250c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if !defined(WINNT) && !defined(__DJGPP__) 251c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYSLOG 252c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 253c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_DIRENT 254c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 255c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef WINDOWS 256c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT) 257c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* 258c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Defining _WIN32_WINNT here in e_os.h implies certain "discipline." 259c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Most notably we ought to check for availability of each specific 260480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * routine with GetProcAddress() and/or guard NT-specific calls with 261c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * GetVersion() < 0x80000000. One can argue that in latter "or" case 262c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * we ought to /DELAYLOAD some .DLLs in order to protect ourselves 263c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * against run-time link errors. This doesn't seem to be necessary, 264c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * because it turned out that already Windows 95, first non-NT Win32 265c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * implementation, is equipped with at least NT 3.51 stubs, dummy 266c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * routines with same name, but which do nothing. Meaning that it's 267480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * apparently sufficient to guard "vanilla" NT calls with GetVersion 268480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * alone, while NT 4.0 and above interfaces ought to be linked with 269480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * GetProcAddress at run-time. 270c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 271c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _WIN32_WINNT 0x0400 272c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 273480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if !defined(OPENSSL_NO_SOCK) && defined(_WIN32_WINNT) 274480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* 275480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * Just like defining _WIN32_WINNT including winsock2.h implies 276480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * certain "discipline" for maintaining [broad] binary compatibility. 277480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * As long as structures are invariant among Winsock versions, 278480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * it's sufficient to check for specific Winsock2 API availability 279480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * at run-time [DSO_global_lookup is recommended]... 280480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org */ 281480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# include <winsock2.h> 282480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# include <ws2tcpip.h> 283480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* yes, they have to be #included prior to <windows.h> */ 284480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 285c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <windows.h> 286c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <stdio.h> 287c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <stddef.h> 288c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <errno.h> 289c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <string.h> 290c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef _WIN64 291c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strlen(s) _strlen31(s) 292c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* cut strings to 2GB */ 293c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstatic unsigned int _strlen31(const char *str) 294c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 295c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned int len=0; 296c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org while (*str && len<0x80000000U) str++, len++; 297c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org return len&0x7FFFFFFF; 298c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } 299c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 300c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <malloc.h> 301c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace) 302c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* compensate for bug in VC6 ctype.h */ 303c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef isspace 304c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef isdigit 305c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef isalnum 306c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef isupper 307c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef isxdigit 308c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 309c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(_MSC_VER) && !defined(_DLL) && defined(stdin) 310c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if _MSC_VER>=1300 311c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stdin 312c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stdout 313c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stderr 314c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org FILE *__iob_func(); 315c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stdin (&__iob_func()[0]) 316c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stdout (&__iob_func()[1]) 317c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stderr (&__iob_func()[2]) 318c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif defined(I_CAN_LIVE_WITH_LNK4049) 319c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stdin 320c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stdout 321c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef stderr 322c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib, 323c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * or in other words with /MD. Declaring implicit import, i.e. 324c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * with _imp_ prefix, works correctly with all compiler options, 325480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * but without /MD results in LINK warning LNK4049: 326480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * 'locally defined symbol "__iob" imported'. 327c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 328c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org extern FILE *_imp___iob; 329c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stdin (&_imp___iob[0]) 330c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stdout (&_imp___iob[1]) 331c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define stderr (&_imp___iob[2]) 332c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 333c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 334c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 335c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <io.h> 336c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <fcntl.h> 337c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 338c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_WINCE 339480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# define OPENSSL_NO_POSIX_IO 340c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 341c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 342c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined (__BORLANDC__) 343c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _setmode setmode 344c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_TEXT O_TEXT 345c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_BINARY O_BINARY 346c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _int64 __int64 347c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _kbhit kbhit 348c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 349c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 350480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# define EXIT(n) exit(n) 351c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define LIST_SEPARATOR_CHAR ';' 352c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef X_OK 353c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define X_OK 0 354c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 355c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef W_OK 356c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define W_OK 2 357c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 358c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef R_OK 359c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define R_OK 4 360c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 361c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_CONF "openssl.cnf" 362c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLEAY_CONF OPENSSL_CONF 363c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NUL_DEV "nul" 364c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define RFILE ".rnd" 365c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_WINCE 366c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define DEFAULT_HOME "" 367c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 368c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define DEFAULT_HOME "C:" 369c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 370c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 371480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#else /* The non-microsoft world */ 372c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 373c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_VMS 374c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define VMS 1 375c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* some programs don't include stdlib, so exit() and others give implicit 376c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org function warnings */ 377c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <stdlib.h> 378c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(__DECC) 379c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unistd.h> 380c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 381c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unixlib.h> 382c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 383c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_CONF "openssl.cnf" 384c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLEAY_CONF OPENSSL_CONF 385c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define RFILE ".rnd" 386c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define LIST_SEPARATOR_CHAR ',' 387c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NUL_DEV "NLA0:" 388c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* We don't have any well-defined random devices on VMS, yet... */ 389c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef DEVRANDOM 390c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* We need to do this since VMS has the following coding on status codes: 391c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 392c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ... 393c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org The important thing to know is that odd numbers are considered 394c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org good, while even ones are considered errors. 395c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org Bits 3-15: actual status number 396c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org Bits 16-27: facility number. 0 is considered "unknown" 397c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org Bits 28-31: control bits. If bit 28 is set, the shell won't try to 398c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org output the message (which, for random codes, just looks ugly) 399c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 400c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org So, what we do here is to change 0 to 1 to get the default success status, 401c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org and everything else is shifted up to fit into the status number field, and 402c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org the status is tagged as an error, which I believe is what is wanted here. 403c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org -- Richard Levitte 404c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 405c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define EXIT(n) do { int __VMS_EXIT = n; \ 406c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org if (__VMS_EXIT == 0) \ 407c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org __VMS_EXIT = 1; \ 408c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org else \ 409c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org __VMS_EXIT = (n << 3) | 2; \ 410c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org __VMS_EXIT |= 0x10000000; \ 411c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org exit(__VMS_EXIT); } while(0) 412c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_PARAM_H 413c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 414c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif defined(OPENSSL_SYS_NETWARE) 415c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <fcntl.h> 416c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unistd.h> 417c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_TYPES_H 418c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# undef DEVRANDOM 419c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef NETWARE_CLIB 420c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define getpid GetThreadID 421c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org extern int GetThreadID(void); 422c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* # include <conio.h> */ 423c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org extern int kbhit(void); 424c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 425c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <screen.h> 426c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 427c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYSLOG 428c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _setmode setmode 429c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _kbhit kbhit 430c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_TEXT O_TEXT 431c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define _O_BINARY O_BINARY 432c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_CONF "openssl.cnf" 433c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLEAY_CONF OPENSSL_CONF 434c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define RFILE ".rnd" 435c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define LIST_SEPARATOR_CHAR ';' 436c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define EXIT(n) { if (n) printf("ERROR: %d\n", (int)n); exit(n); } 437c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 438c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 439c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* !defined VMS */ 440c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_MPE 441c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYS_PARAM_H 442c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 443c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_UNISTD 444c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include OPENSSL_UNISTD 445c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 446c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unistd.h> 447c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 448c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef NO_SYS_TYPES_H 449c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/types.h> 450c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 451c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) 452c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP 453c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * (unless when compiling with -D_POSIX_SOURCE, 454c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * which doesn't work for us) */ 455c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 456c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */ 457c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define setvbuf(a, b, c, d) setbuffer((a), (b), (d)) 458c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org typedef unsigned long clock_t; 459c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 460480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# ifdef OPENSSL_SYS_WIN32_CYGWIN 461480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# include <io.h> 462480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# include <fcntl.h> 463480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 464c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 465c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_CONF "openssl.cnf" 466c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLEAY_CONF OPENSSL_CONF 467c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define RFILE ".rnd" 468c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define LIST_SEPARATOR_CHAR ':' 469c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NUL_DEV "/dev/null" 470c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define EXIT(n) exit(n) 471c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 472c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 473c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_getpid() getpid() 474c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 475c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 476c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 477c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 478c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/*************/ 479c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 480c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef USE_SOCKETS 481c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(WINDOWS) || defined(MSDOS) 482c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* windows world */ 483c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 484c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_NO_SOCK 485c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) (-1) 486c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) (-1) 487c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) close(fd) 488c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) close(fd) 489c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif !defined(__DJGPP__) 490480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if defined(_WIN32_WCE) && _WIN32_WCE<410 491480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# define getservbyname _masked_declaration_getservbyname 492480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 493480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if !defined(IPPROTO_IP) 494480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* winsock[2].h was included already? */ 495480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# include <winsock.h> 496480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 497480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# ifdef getservbyname 498480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# undef getservbyname 499480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* this is used to be wcecompat/include/winsock_extras.h */ 500480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org struct servent* PASCAL getservbyname(const char*,const char*); 501480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 502480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 503c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef _WIN64 504c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* 505c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because 506c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the value constitutes an index in per-process table of limited size 507c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * and not a real pointer. 508c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 509c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define socket(d,t,p) ((int)socket(d,t,p)) 510c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define accept(s,f,l) ((int)accept(s,f,l)) 511c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 512c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) send((a),(b),(c),0) 513c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 514c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 515c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 516c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 517c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) write_s(a,b,c,0) 518c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) read_s(a,b,c) 519c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) close_s(fd) 520c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) close_s(fd) 521c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 522c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 523c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif defined(MAC_OS_pre_X) 524c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 525c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include "MacSocket.h" 526c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) MacSocket_send((a),(b),(c)) 527c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) MacSocket_recv((a),(b),(c),true) 528c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) MacSocket_close(fd) 529c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) MacSocket_close(fd) 530c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 531c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif defined(OPENSSL_SYS_NETWARE) 532c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* NetWare uses the WinSock2 interfaces by default, but can be configured for BSD 533c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 534c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(NETWARE_BSDSOCK) 535c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/socket.h> 536c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <netinet/in.h> 537c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/time.h> 538c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(NETWARE_CLIB) 539c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/bsdskt.h> 540c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 541c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/select.h> 542c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 543c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define INVALID_SOCKET (int)(~0) 544c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 545c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <novsock2.h> 546c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 547c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) send((a),(b),(c),0) 548c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) recv((a),(b),(c),0) 549c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); } 550c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); } 551c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 552c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 553c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 554c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef NO_SYS_PARAM_H 555c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/param.h> 556c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 557c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_VXWORKS 558c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <time.h> 559c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# elif !defined(OPENSSL_SYS_MPE) 560c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/time.h> /* Needed under linux for FD_XXX */ 561c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 562c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 563c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <netdb.h> 564c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(OPENSSL_SYS_VMS_NODECC) 565c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <socket.h> 566c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <in.h> 567c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <inet.h> 568c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 569c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/socket.h> 570c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef FILIO_H 571c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/filio.h> /* Added for FIONBIO under unixware */ 572c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 573c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <netinet/in.h> 574480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if !defined(OPENSSL_SYS_BEOS_R5) 575c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <arpa/inet.h> 576c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 577480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 578c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 579c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(NeXT) || defined(_NEXT_SOURCE) 580c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/fcntl.h> 581c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/types.h> 582c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 583c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 584c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef OPENSSL_SYS_AIX 585c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/select.h> 586c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 587c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 588c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef __QNX__ 589c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/select.h> 590c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 591c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 592c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(sun) 593c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/filio.h> 594c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 595c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef VMS 596c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/ioctl.h> 597c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 598c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* ioctl is only in VMS > 7.0 and when socketshr is not used */ 599c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000) 600c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <sys/ioctl.h> 601c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 602c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 603c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 604c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 605c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifdef VMS 606c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <unixio.h> 607c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(TCPIP_TYPE_SOCKETSHR) 608c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <socketshr.h> 609c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 610c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 611c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 612c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Read(a,b,c) read((a),(b),(c)) 613c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SSLeay_Write(a,b,c) write((a),(b),(c)) 614c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); } 615c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); } 616c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# ifndef INVALID_SOCKET 617c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define INVALID_SOCKET (-1) 618c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif /* INVALID_SOCKET */ 619c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 620480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 621480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org/* Some IPv6 implementations are broken, disable them in known bad 622480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org * versions. 623480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org */ 624480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if !defined(OPENSSL_USE_IPV6) 625480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) 626480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# define OPENSSL_USE_IPV6 1 627480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# else 628480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# define OPENSSL_USE_IPV6 0 629480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 630480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org# endif 631480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 632c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 633c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 634c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(sun) && !defined(__svr4__) && !defined(__SVR4) 635c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* include headers first, so our defines don't break it */ 636c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <stdlib.h> 637c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <string.h> 638c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */ 639c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define memmove(s1,s2,n) bcopy((s2),(s1),(n)) 640c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b))) 641c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgextern char *sys_errlist[]; extern int sys_nerr; 642c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strerror(errnum) \ 643c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org (((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum]) 644c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */ 645c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include "crypto/o_str.h" 646c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define memcmp OPENSSL_memcmp 647c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 648c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 649c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_EXIT 650c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(MONOLITH) && !defined(OPENSSL_C) 651c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_EXIT(n) return(n) 652c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# else 653c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_EXIT(n) do { EXIT(n); return(n); } while(0) 654c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif 655c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 656c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 657c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/***********************************************/ 658c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 659c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */ 660c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 661c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef sgi 662c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define IRIX_CC_BUG /* all version of IRIX I've tested (4.* 5.*) */ 663c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 664c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef OPENSSL_SYS_SNI 665c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define IRIX_CC_BUG /* CDS++ up to V2.0Bsomething suffered from the same bug.*/ 666c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 667c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 668c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_WINDOWS) 669c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strcasecmp _stricmp 670c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strncasecmp _strnicmp 671c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_VMS) 672c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* VMS below version 7.0 doesn't have strcasecmp() */ 673c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include "o_str.h" 674c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strcasecmp OPENSSL_strcasecmp 675c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strncasecmp OPENSSL_strncasecmp 676c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define OPENSSL_IMPLEMENTS_strncasecmp 677c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_OS2) && defined(__EMX__) 678c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strcasecmp stricmp 679c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strncasecmp strnicmp 680c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#elif defined(OPENSSL_SYS_NETWARE) 681c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <string.h> 682c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# if defined(NETWARE_CLIB) 683c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strcasecmp stricmp 684c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define strncasecmp strnicmp 685c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# endif /* NETWARE_CLIB */ 686c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 687c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 688c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_OS2) && defined(__EMX__) 689c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <io.h> 690c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# include <fcntl.h> 691c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org# define NO_SYSLOG 692c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 693c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 694c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* vxworks */ 695c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#if defined(OPENSSL_SYS_VXWORKS) 696c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <ioLib.h> 697c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <tickLib.h> 698c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <sysLib.h> 699c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 700c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define TTY_STRUCT int 701c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 702c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define sleep(a) taskDelay((a) * sysClkRateGet()) 703c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 704c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <vxWorks.h> 705c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <sockLib.h> 706c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <taskLib.h> 707c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 708c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define getpid taskIdSelf 709c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 710c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* NOTE: these are implemented by helpers in database app! 711c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * if the database is not linked, we need to implement them 712c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * elswhere */ 713c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct hostent *gethostbyname(const char *name); 714c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct hostent *gethostbyaddr(const char *addr, int length, int type); 715c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct servent *getservbyname(const char *name, const char *proto); 716c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 717c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 718c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* end vxworks */ 719c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 720480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org/* beos */ 721480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#if defined(OPENSSL_SYS_BEOS_R5) 722480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define SO_ERROR 0 723480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define NO_SYS_UN 724480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define IPPROTO_IP 0 725480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#include <OS.h> 726480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#endif 727480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 728480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 729c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 730c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} 731c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 732c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 733c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 734c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 735