Solaris x86_64 /usr/ccs/bin/as support.
[openssl.git] / e_os.h
diff --git a/e_os.h b/e_os.h
index aae3c79b84ee63df4fe37c0b15a548f3fdeeb3ce..0b2b1cca67e5b0aa78c68eb39fbf8a4a4423f8de 100644 (file)
--- a/e_os.h
+++ b/e_os.h
@@ -181,6 +181,19 @@ extern "C" {
 #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_NETWARE)
+#if defined(NETWARE_BSDSOCK)
+#define get_last_socket_error() errno
+#define clear_socket_error()    errno=0
+#define closesocket(s)          close(s)
+#define readsocket(s,b,n)       recv((s),(b),(n),0)
+#define writesocket(s,b,n)      send((s),(b),(n),0)
+#else
+#define get_last_socket_error()        WSAGetLastError()
+#define clear_socket_error()   WSASetLastError(0)
+#define readsocket(s,b,n)              recv((s),(b),(n),0)
+#define writesocket(s,b,n)             send((s),(b),(n),0)
+#endif
 #else
 #define get_last_socket_error()        errno
 #define clear_socket_error()   errno=0
@@ -214,6 +227,8 @@ extern "C" {
 #    define _setmode setmode
 #    define _O_TEXT O_TEXT
 #    define _O_BINARY O_BINARY
+#    undef DEVRANDOM
+#    define DEVRANDOM "/dev/urandom\x24"
 #  endif /* __DJGPP__ */
 
 #  ifndef S_IFDIR
@@ -230,6 +245,23 @@ extern "C" {
 #  define NO_DIRENT
 
 #  ifdef WINDOWS
+#    ifndef _WIN32_WINNT
+       /*
+       * 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
+       * 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.
+       */
+#      define _WIN32_WINNT 0x0400
+#    endif
 #    include <windows.h>
 #    include <stddef.h>
 #    include <errno.h>
@@ -414,11 +446,15 @@ extern HINSTANCE _hInstance;
 #    define SHUTDOWN2(fd)              MacSocket_close(fd)
 
 #  elif defined(OPENSSL_SYS_NETWARE)
-         /* NetWare uses the WinSock2 interfaces
+         /* NetWare uses the WinSock2 interfaces by default, but can be configured for BSD
          */
-#      if defined(NETWARE_CLIB)
-#        include <ws2nlm.h>
-#      elif defined(NETWARE_LIBC)
+#      if defined(NETWARE_BSDSOCK)
+#        include <sys/socket.h>
+#        include <netinet/in.h>
+#        include <sys/time.h>
+#        include <sys/select.h>
+#        define INVALID_SOCKET (int)(~0)
+#      else
 #        include <novsock2.h>
 #      endif
 #      define SSLeay_Write(a,b,c)   send((a),(b),(c),0)
@@ -548,9 +584,10 @@ extern char *sys_errlist[]; extern int sys_nerr;
 #  define strncasecmp _strnicmp
 #elif defined(OPENSSL_SYS_VMS)
 /* VMS below version 7.0 doesn't have strcasecmp() */
-#  include <openssl/o_str.h>
+#  include "o_str.h"
 #  define strcasecmp OPENSSL_strcasecmp
 #  define strncasecmp OPENSSL_strncasecmp
+#  define OPENSSL_IMPLEMENTS_strncasecmp
 #elif defined(OPENSSL_SYS_OS2) && defined(__EMX__)
 #  define strcasecmp stricmp
 #  define strncasecmp strnicmp