Update README.FIPS to reflect changes.
[oweals/openssl.git] / e_os.h
diff --git a/e_os.h b/e_os.h
index 4d5e9f92a6ae3d99076b22dc858960e91721325b..ab3c539eab869ede1bb2b075f948d38d27dada76 100644 (file)
--- a/e_os.h
+++ b/e_os.h
@@ -227,6 +227,7 @@ extern "C" {
 #    define _setmode setmode
 #    define _O_TEXT O_TEXT
 #    define _O_BINARY O_BINARY
+#    undef DEVRANDOM
 #    define DEVRANDOM "/dev/urandom\x24"
 #  endif /* __DJGPP__ */
 
@@ -244,7 +245,7 @@ extern "C" {
 #  define NO_DIRENT
 
 #  ifdef WINDOWS
-#    ifndef _WIN32_WINNT
+#    if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT)
        /*
        * Defining _WIN32_WINNT here in e_os.h implies certain "discipline."
        * Most notably we ought to check for availability of each specific
@@ -265,7 +266,25 @@ extern "C" {
 #    include <stddef.h>
 #    include <errno.h>
 #    include <string.h>
+#    ifdef _WIN64
+#      define strlen(s) _strlen31(s)
+/* cut strings to 2GB */
+static unsigned int _strlen31(const char *str)
+       {
+       unsigned int len=0;
+       while (*str && len<0x80000000U) str++, len++;
+       return len&0x7FFFFFFF;
+       }
+#    endif
 #    include <malloc.h>
+#    if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace)
+       /* compensate for bug is VC6 ctype.h */
+#      undef isspace
+#      undef isdigit
+#      undef isalnum
+#      undef isupper
+#      undef isxdigit
+#    endif
 #  endif
 #  include <io.h>
 #  include <fcntl.h>
@@ -425,6 +444,15 @@ extern "C" {
 #    elif !defined(__DJGPP__)
 #      include <winsock.h>
 extern HINSTANCE _hInstance;
+#      ifdef _WIN64
+/*
+ * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because
+ * the value constitutes an index in per-process table of limited size
+ * and not a real pointer.
+ */
+#        define socket(d,t,p)  ((int)socket(d,t,p))
+#        define accept(s,f,l)  ((int)accept(s,f,l))
+#      endif
 #      define SSLeay_Write(a,b,c)      send((a),(b),(c),0)
 #      define SSLeay_Read(a,b,c)       recv((a),(b),(c),0)
 #      define SHUTDOWN(fd)             { shutdown((fd),0); closesocket(fd); }
@@ -545,6 +573,9 @@ extern HINSTANCE _hInstance;
 extern char *sys_errlist[]; extern int sys_nerr;
 # define strerror(errnum) \
        (((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum])
+  /* Being signed SunOS 4.x memcpy breaks ASN1_OBJECT table lookup */
+#include "crypto/o_str.h"
+# define memcmp OPENSSL_memcmp
 #endif
 
 #ifndef OPENSSL_EXIT