Borland C++ 5.5 does not use underscored _ftime and _timeb, therefore
code in ./crypto/bio/bss_dgram.c and ./ssl/d1_lib.c breaks. The quick
hack to fix this would be to add defines in e_os.h in the __BORLANDC__
block:
--- e_os.h.orig Mon May 31 14:18:08 2010
+++ e_os.h Tue Jan 11 12:41:04 2011
@@ -348,6 +348,8 @@
# define _O_BINARY O_BINARY
# define _int64 __int64
# define _kbhit kbhit
+# define _ftime ftime
+# define _timeb timeb
# endif
# define EXIT(n) exit(n)
but I'd suggest to go another route and clean up the code in
./crypto/bio/bss_dgram.c and ./ssl/d1_lib.c a bit:
--- e_os.h.orig Mon May 31 14:18:08 2010
+++ e_os.h Tue Jan 11 12:51:05 2011
@@ -345,12 +345,15 @@
# if defined (__BORLANDC__)
# define _setmode setmode
# define _O_TEXT O_TEXT
# define _O_BINARY O_BINARY
# define _int64 __int64
# define _kbhit kbhit
+# else
+# define ftime _ftime
+# define timeb _timeb
# endif
# define EXIT(n) exit(n)
# define LIST_SEPARATOR_CHAR ';'
# ifndef X_OK
# define X_OK 0
#############################################################
--- crypto/bio/bss_dgram.c.orig Thu Jan 07 11:44:21 2010
+++ crypto/bio/bss_dgram.c Tue Jan 11 12:54:43 2011
@@ -814,12 +814,7 @@
static void get_current_time(struct timeval *t)
{
-#ifdef OPENSSL_SYS_WIN32
- struct _timeb tb;
- _ftime(&tb);
- t->tv_sec = (long)tb.time;
- t->tv_usec = (long)tb.millitm * 1000;
-#elif defined(OPENSSL_SYS_VMS)
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
struct timeb tb;
ftime(&tb);
t->tv_sec = (long)tb.time;
#############################################################
--- ssl/d1_lib.c.orig Tue Apr 06 13:29:21 2010
+++ ssl/d1_lib.c Tue Jan 11 12:56:21 2011
@@ -364,12 +364,7 @@
static void get_current_time(struct timeval *t)
{
-#ifdef OPENSSL_SYS_WIN32
- struct _timeb tb;
- _ftime(&tb);
- t->tv_sec = (long)tb.time;
- t->tv_usec = (long)tb.millitm * 1000;
-#elif defined(OPENSSL_SYS_VMS)
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
struct timeb tb;
ftime(&tb);
t->tv_sec = (long)tb.time;
attached patch is against OpenSSL 1.0.0c.
--- e_os.h.orig Mon May 31 14:18:08 2010
+++ e_os.h Tue Jan 11 12:51:05 2011
@@ -345,12 +345,15 @@
# if defined (__BORLANDC__)
# define _setmode setmode
# define _O_TEXT O_TEXT
# define _O_BINARY O_BINARY
# define _int64 __int64
# define _kbhit kbhit
+# else
+# define ftime _ftime
+# define timeb _timeb
# endif
# define EXIT(n) exit(n)
# define LIST_SEPARATOR_CHAR ';'
# ifndef X_OK
# define X_OK 0
#############################################################
--- crypto/bio/bss_dgram.c.orig Thu Jan 07 11:44:21 2010
+++ crypto/bio/bss_dgram.c Tue Jan 11 12:54:43 2011
@@ -814,12 +814,7 @@
static void get_current_time(struct timeval *t)
{
-#ifdef OPENSSL_SYS_WIN32
- struct _timeb tb;
- _ftime(&tb);
- t->tv_sec = (long)tb.time;
- t->tv_usec = (long)tb.millitm * 1000;
-#elif defined(OPENSSL_SYS_VMS)
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
struct timeb tb;
ftime(&tb);
t->tv_sec = (long)tb.time;
#############################################################
--- ssl/d1_lib.c.orig Tue Apr 06 13:29:21 2010
+++ ssl/d1_lib.c Tue Jan 11 12:56:21 2011
@@ -364,12 +364,7 @@
static void get_current_time(struct timeval *t)
{
-#ifdef OPENSSL_SYS_WIN32
- struct _timeb tb;
- _ftime(&tb);
- t->tv_sec = (long)tb.time;
- t->tv_usec = (long)tb.millitm * 1000;
-#elif defined(OPENSSL_SYS_VMS)
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
struct timeb tb;
ftime(&tb);
t->tv_sec = (long)tb.time;