aboutsummaryrefslogtreecommitdiffstats
path: root/e_os.h
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2005-07-05 11:44:45 +0000
committerAndy Polyakov <appro@openssl.org>2005-07-05 11:44:45 +0000
commit1875e6db29fb832d3cac101024ccb1f690b35028 (patch)
tree21b9c820ea71319acbe4cf985219cffea69e9d86 /e_os.h
parent0962fbbf98bfb4ef060dc6a54d11636f01706cd0 (diff)
downloadopenssl-1875e6db29fb832d3cac101024ccb1f690b35028.tar.gz
Pull up Win64 support from 0.9.8.
Diffstat (limited to 'e_os.h')
-rw-r--r--e_os.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/e_os.h b/e_os.h
index 0b2b1cca67..965d1aa8d7 100644
--- a/e_os.h
+++ b/e_os.h
@@ -266,6 +266,16 @@ 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>
# endif
# include <io.h>
@@ -426,6 +436,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); }