diff options
Diffstat (limited to 'Cryptlib/OpenSSL/e_os.h')
| -rw-r--r-- | Cryptlib/OpenSSL/e_os.h | 122 |
1 files changed, 75 insertions, 47 deletions
diff --git a/Cryptlib/OpenSSL/e_os.h b/Cryptlib/OpenSSL/e_os.h index 4a85a9cd..45fef691 100644 --- a/Cryptlib/OpenSSL/e_os.h +++ b/Cryptlib/OpenSSL/e_os.h @@ -104,7 +104,6 @@ extern "C" { # ifndef MAC_OS_GUSI_SOURCE # define MAC_OS_pre_X # define NO_SYS_TYPES_H -typedef long ssize_t; # endif # define NO_SYS_PARAM_H # define NO_CHMOD @@ -118,7 +117,7 @@ typedef long ssize_t; The Microsoft section ********************************************************************/ /* - * The following is used becaue of the small stack in some Microsoft + * The following is used because of the small stack in some Microsoft * operating systems */ # if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) @@ -130,9 +129,6 @@ typedef long ssize_t; # if defined(OPENSSL_SYS_WIN32) && !defined(WIN32) # define WIN32 # endif -# if defined(OPENSSL_SYS_WIN16) && !defined(WIN16) -# define WIN16 -# endif # if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS) # define WINDOWS # endif @@ -187,6 +183,13 @@ typedef long ssize_t; # define closesocket(s) close(s) # define readsocket(s,b,n) read((s),(b),(n)) # define writesocket(s,b,n) write((s),(char *)(b),(n)) +# elif defined(OPENSSL_SYS_BEOS_R5) +# define get_last_socket_error() errno +# define clear_socket_error() errno=0 +# define FIONBIO SO_NONBLOCK +# define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) +# define readsocket(s,b,n) recv((s),(b),(n),0) +# define writesocket(s,b,n) send((s),(b),(n),0) # elif defined(OPENSSL_SYS_NETWARE) # if defined(NETWARE_BSDSOCK) # define get_last_socket_error() errno @@ -215,7 +218,7 @@ typedef long ssize_t; # define writesocket(s,b,n) write((s),(b),(n)) # endif -# ifdef WIN16 +# ifdef WIN16 /* never the case */ # define MS_CALLBACK _far _loadds # define MS_FAR _far # else @@ -261,23 +264,38 @@ typedef long ssize_t; /* * Defining _WIN32_WINNT here in e_os.h implies certain "discipline." * Most notably we ought to check for availability of each specific - * routine with GetProcAddress() and/or quard NT-specific calls with + * routine with GetProcAddress() and/or guard NT-specific calls with * GetVersion() < 0x80000000. One can argue that in latter "or" case * we ought to /DELAYLOAD some .DLLs in order to protect ourselves * against run-time link errors. This doesn't seem to be necessary, * because it turned out that already Windows 95, first non-NT Win32 * implementation, is equipped with at least NT 3.51 stubs, dummy * routines with same name, but which do nothing. Meaning that it's - * apparently appropriate to guard generic NT calls with GetVersion - * alone, while NT 4.0 and above calls ought to be additionally - * checked upon with GetProcAddress. + * apparently sufficient to guard "vanilla" NT calls with GetVersion + * alone, while NT 4.0 and above interfaces ought to be linked with + * GetProcAddress at run-time. */ # define _WIN32_WINNT 0x0400 # endif +# if !defined(OPENSSL_NO_SOCK) && (defined(_WIN32_WINNT) || defined(_WIN32_WCE)) + /* + * Just like defining _WIN32_WINNT including winsock2.h implies + * certain "discipline" for maintaining [broad] binary compatibility. + * As long as structures are invariant among Winsock versions, + * it's sufficient to check for specific Winsock2 API availability + * at run-time [DSO_global_lookup is recommended]... + */ +# include <winsock2.h> +# include <ws2tcpip.h> + /* yes, they have to be #included prior to <windows.h> */ +# endif # include <windows.h> # include <stdio.h> # include <stddef.h> # include <errno.h> +# if defined(_WIN32_WCE) && !defined(EACCES) +# define EACCES 13 +# endif # include <string.h> # ifdef _WIN64 # define strlen(s) _strlen31(s) @@ -299,8 +317,8 @@ static __inline unsigned int _strlen31(const char *str) # undef isupper # undef isxdigit # endif -# if defined(_MSC_VER) && !defined(_DLL) && defined(stdin) -# if _MSC_VER>=1300 +# if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(_DLL) && defined(stdin) +# if _MSC_VER>=1300 && _MSC_VER<1600 # undef stdin # undef stdout # undef stderr @@ -308,7 +326,7 @@ FILE *__iob_func(); # define stdin (&__iob_func()[0]) # define stdout (&__iob_func()[1]) # define stderr (&__iob_func()[2]) -# elif defined(I_CAN_LIVE_WITH_LNK4049) +# elif _MSC_VER<1300 && defined(I_CAN_LIVE_WITH_LNK4049) # undef stdin # undef stdout # undef stderr @@ -330,11 +348,9 @@ extern FILE *_imp___iob; # include <fcntl.h> # ifdef OPENSSL_SYS_WINCE -# include <winsock_extras.h> +# define OPENSSL_NO_POSIX_IO # endif -# define ssize_t long - # if defined (__BORLANDC__) # define _setmode setmode # define _O_TEXT O_TEXT @@ -343,12 +359,7 @@ extern FILE *_imp___iob; # define _kbhit kbhit # endif -# if defined(WIN16) && defined(SSLEAY) && defined(_WINEXITNOPERSIST) -# define EXIT(n) _wsetexit(_WINEXITNOPERSIST) -# define OPENSSL_EXIT(n) do { if (n == 0) EXIT(n); return(n); } while(0) -# else -# define EXIT(n) exit(n) -# endif +# define EXIT(n) exit(n) # define LIST_SEPARATOR_CHAR ';' # ifndef X_OK # define X_OK 0 @@ -434,7 +445,6 @@ extern FILE *_imp___iob; extern int GetThreadID(void); /* # include <conio.h> */ extern int kbhit(void); -extern void delay(unsigned milliseconds); # else # include <screen.h> # endif @@ -468,13 +478,14 @@ extern void delay(unsigned milliseconds); * -D_POSIX_SOURCE, which doesn't work for * us) */ # endif -# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) -# define ssize_t int /* ditto */ -# endif # ifdef OPENSSL_SYS_NEWS4 /* setvbuf is missing on mips-sony-bsd */ # define setvbuf(a, b, c, d) setbuffer((a), (b), (d)) typedef unsigned long clock_t; # endif +# ifdef OPENSSL_SYS_WIN32_CYGWIN +# include <io.h> +# include <fcntl.h> +# endif # define OPENSSL_CONF "openssl.cnf" # define SSLEAY_CONF OPENSSL_CONF @@ -490,6 +501,10 @@ typedef unsigned long clock_t; /*************/ +# if defined(OPENSSL_NO_SOCK) && !defined(OPENSSL_NO_DGRAM) +# define OPENSSL_NO_DGRAM +# endif + # ifdef USE_SOCKETS # if defined(WINDOWS) || defined(MSDOS) /* windows world */ @@ -500,8 +515,19 @@ typedef unsigned long clock_t; # define SHUTDOWN(fd) close(fd) # define SHUTDOWN2(fd) close(fd) # elif !defined(__DJGPP__) -# include <winsock.h> -extern HINSTANCE _hInstance; +# if defined(_WIN32_WCE) && _WIN32_WCE<410 +# define getservbyname _masked_declaration_getservbyname +# endif +# if !defined(IPPROTO_IP) + /* winsock[2].h was included already? */ +# include <winsock.h> +# endif +# ifdef getservbyname +# undef getservbyname + /* this is used to be wcecompat/include/winsock_extras.h */ +struct servent *PASCAL getservbyname(const char *, const char *); +# endif + # ifdef _WIN64 /* * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because @@ -575,7 +601,9 @@ extern HINSTANCE _hInstance; # include <sys/filio.h> /* Added for FIONBIO under unixware */ # endif # include <netinet/in.h> -# include <arpa/inet.h> +# if !defined(OPENSSL_SYS_BEOS_R5) +# include <arpa/inet.h> +# endif # endif # if defined(NeXT) || defined(_NEXT_SOURCE) @@ -619,12 +647,18 @@ extern HINSTANCE _hInstance; # define INVALID_SOCKET (-1) # endif /* INVALID_SOCKET */ # endif -# endif -# if defined(__ultrix) -# ifndef ssize_t -# define ssize_t int +/* + * Some IPv6 implementations are broken, disable them in known bad versions. + */ +# if !defined(OPENSSL_USE_IPV6) +# if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) +# define OPENSSL_USE_IPV6 1 +# else +# define OPENSSL_USE_IPV6 0 +# endif # endif + # endif # if defined(sun) && !defined(__svr4__) && !defined(__SVR4) @@ -653,20 +687,6 @@ extern int sys_nerr; /***********************************************/ -/* - * do we need to do this for getenv. Just define getenv for use under windows - */ - -# ifdef WIN16 -/* How to do this needs to be thought out a bit more.... */ -/* - * char *GETENV(char *); #define Getenv GETENV - */ -# define Getenv getenv -# else -# define Getenv getenv -# endif - # define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */ # ifdef sgi @@ -730,6 +750,14 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ +/* beos */ +# if defined(OPENSSL_SYS_BEOS_R5) +# define SO_ERROR 0 +# define NO_SYS_UN +# define IPPROTO_IP 0 +# include <OS.h> +# endif + # if !defined(inline) && !defined(__cplusplus) # if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L /* do nothing, inline works */ |
