Index: openssl/e_os.h |
=================================================================== |
--- openssl/e_os.h (revision 105093) |
+++ openssl/e_os.h (working copy) |
@@ -112,7 +112,7 @@ |
/******************************************************************** |
The Microsoft section |
********************************************************************/ |
-/* The following is used becaue of the small stack in some |
+/* The following is used because of the small stack in some |
* Microsoft operating systems */ |
#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) |
# define MS_STATIC static |
@@ -123,9 +123,6 @@ |
#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 |
@@ -180,6 +177,13 @@ |
#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 |
@@ -208,7 +212,7 @@ |
#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 |
@@ -254,19 +258,31 @@ |
/* |
* 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) |
+ /* |
+ * 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> |
@@ -307,8 +323,8 @@ |
/* pre-1300 has __p__iob(), but it's available only in msvcrt.lib, |
* or in other words with /MD. Declaring implicit import, i.e. |
* with _imp_ prefix, works correctly with all compiler options, |
- * but without /MD results in LINK warning LNK4049: |
- * 'locally defined symbol "__iob" imported'. |
+ * but without /MD results in LINK warning LNK4049: |
+ * 'locally defined symbol "__iob" imported'. |
*/ |
extern FILE *_imp___iob; |
# define stdin (&_imp___iob[0]) |
@@ -321,7 +337,7 @@ |
# include <fcntl.h> |
# ifdef OPENSSL_SYS_WINCE |
-# include <winsock_extras.h> |
+# define OPENSSL_NO_POSIX_IO |
# endif |
# define ssize_t long |
@@ -334,12 +350,7 @@ |
# 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 |
@@ -360,7 +371,7 @@ |
# define DEFAULT_HOME "C:" |
# endif |
-#else /* The non-microsoft world world */ |
+#else /* The non-microsoft world */ |
# ifdef OPENSSL_SYS_VMS |
# define VMS 1 |
@@ -413,7 +424,6 @@ |
extern int GetThreadID(void); |
/* # include <conio.h> */ |
extern int kbhit(void); |
- extern void delay(unsigned milliseconds); |
# else |
# include <screen.h> |
# endif |
@@ -453,6 +463,10 @@ |
# 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 |
@@ -479,8 +493,19 @@ |
# 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 |
@@ -552,8 +577,10 @@ |
# include <sys/filio.h> /* Added for FIONBIO under unixware */ |
# endif |
# include <netinet/in.h> |
+# if !defined(OPENSSL_SYS_BEOS_R5) |
# include <arpa/inet.h> |
# endif |
+# endif |
# if defined(NeXT) || defined(_NEXT_SOURCE) |
# include <sys/fcntl.h> |
@@ -596,6 +623,18 @@ |
# define INVALID_SOCKET (-1) |
# endif /* INVALID_SOCKET */ |
# endif |
+ |
+/* 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(__ultrix) |
@@ -629,18 +668,6 @@ |
/***********************************************/ |
-/* 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 |
@@ -702,6 +729,15 @@ |
#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 |
+ |
+ |
#ifdef __cplusplus |
} |
#endif |