Here are some patches for MSDOS and djgpp using Watt-32 tcp/ip stack.
Patch against snapshot 11-Nov 2002.
1. sock_init() renamed to ssl_sock_init() in ./apps/s_socket.c due
to name-clash with Watt-32.
2. rand() renamed to Rand() in ./crypto/bn/divtest.c due to name-clash
with <stdlib.h>
3. Added calls to dbug_init()/sock_init() in some demo programs.
4. Changed cflags/lflags in configure. Watt-32 install root now taken from $WATT_ROOT.
-------------------------------------------
diff -B -H -u3 -r ./apps/s_client.c ./patch/apps/s_client.c
--- ./apps/s_client.c Tue Jul 16 07:00:18 2002
+++ ./patch/apps/s_client.c Tue Nov 12 18:06:32 2002
@@ -746,8 +746,8 @@
goto shut;
}
}
-#ifdef OPENSSL_SYS_WINDOWS
- /* Assume Windows can always write */
+#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS)
+ /* Assume Windows/DOS can always write */
else if (!ssl_pending && write_tty)
#else
else if (!ssl_pending && FD_ISSET(fileno(stdout),&writefds))
diff -B -H -u3 -r ./apps/s_server.c ./patch/apps/s_server.c
--- ./apps/s_server.c Thu Aug 15 15:00:20 2002
+++ ./patch/apps/s_server.c Tue Nov 12 18:02:08 2002
@@ -1473,8 +1473,8 @@
else
{
BIO_printf(bio_s_out,"read R BLOCK\n");
-#ifndef OPENSSL_SYS_MSDOS
- sleep(1);
+#if !defined(OPENSSL_SYS_MSDOS) && !defined(__DJGPP__)
+ sleep(1);
#endif
continue;
}
diff -B -H -u3 -r ./apps/s_socket.c ./patch/apps/s_socket.c
--- ./apps/s_socket.c Tue Feb 20 18:00:10 2001
+++ ./patch/apps/s_socket.c Thu Sep 13 08:23:08 2002
@@ -85,7 +85,7 @@
#ifdef OPENSSL_SYS_WINDOWS
static void sock_cleanup(void);
#endif
-static int sock_init(void);
+static int ssl_sock_init(void);
static int init_client_ip(int *sock,unsigned char ip[4], int port);
static int init_server(int *sock, int port);
static int init_server_long(int *sock, int port,char *ip);
@@ -146,9 +146,16 @@
}
#endif
-static int sock_init(void)
+static int ssl_sock_init(void)
{
-#ifdef OPENSSL_SYS_WINDOWS
+#ifdef WATT32
+ extern int _watt_do_exit;
+ _watt_do_exit = 0;
+ dbug_init();
+ if (sock_init())
+ return (0);
+
+#elif defined(OPENSSL_SYS_WINDOWS)
if (!wsa_init_done)
{
int err;
@@ -196,7 +203,7 @@
struct sockaddr_in them;
int s,i;
- if (!sock_init()) return(0);
+ if (!ssl_sock_init()) return(0);
memset((char *)&them,0,sizeof(them));
them.sin_family=AF_INET;
@@ -261,7 +268,7 @@
struct sockaddr_in server;
int s= -1,i;
- if (!sock_init()) return(0);
+ if (!ssl_sock_init()) return(0);
memset((char *)&server,0,sizeof(server));
server.sin_family=AF_INET;
@@ -318,7 +325,7 @@
int len;
/* struct linger ling; */
- if (!sock_init()) return(0);
+ if (!ssl_sock_init()) return(0);
#ifndef OPENSSL_SYS_WINDOWS
redoit:
@@ -448,7 +455,7 @@
{ /* do a gethostbyname */
struct hostent *he;
- if (!sock_init()) return(0);
+ if (!ssl_sock_init()) return(0);
he=GetHostByName(str);
if (he == NULL)
diff -B -H -u3 -r ./configur ./patch/configur
--- ./configur Tue Nov 12 17:56:10 2002
+++ ./patch/configur Tue Nov 12 18:00:44 2002
@@ -521,7 +521,7 @@
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486
-Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des}
${x86_gcc_opts}:${x86_out_asm}:win32:cygwin-shared:::.dll",
# DJGPP
-"DJGPP",
"gcc:-I/dev/env/DJDIR/watt32/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2
-Wall:::MSDOS:-L/dev/env/DJDIR/watt32/lib -lwatt:BN_L
LONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::",
+"DJGPP",
"gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2
-Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG
${x86_gcc_des} ${x86_gcc_opts}::::::::::",
# Ultrix from Bernhard Simon <[EMAIL PROTECTED]>
"ultrix-cc","cc:-std1 -O -Olimit 1000 -DL_ENDIAN::(unknown):::::::",
diff -B -H -u3 -r ./crypto/bio/b_sock.c ./patch/crypto/bio/b_sock.c
--- ./crypto/bio/b_sock.c Thu Jun 13 21:00:34 2002
+++ ./patch/crypto/bio/b_sock.c Mon Jun 17 11:24:28 2002
@@ -463,7 +463,14 @@
}
}
#endif /* OPENSSL_SYS_WINDOWS */
- return(1);
+
+#ifdef WATT32
+ extern int _watt_do_exit;
+ _watt_do_exit = 0; /* don't make sock_init() call exit() */
+ if (sock_init())
+ return (-1);
+#endif
+ return(1);
}
void BIO_sock_cleanup(void)
diff -B -H -u3 -r ./crypto/bio/bss_log.c ./patch/crypto/bio/bss_log.c
--- ./crypto/bio/bss_log.c Thu Feb 14 16:00:44 2002
+++ ./patch/crypto/bio/bss_log.c Tue Nov 12 18:04:32 2002
@@ -77,7 +77,7 @@
# include <starlet.h>
#elif defined(__ultrix)
# include <sys/syslog.h>
-#elif !defined(MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && !defined(NO_SYSLOG) /* Unix
*/
+#elif (!defined(MSDOS) || defined(WATT32)) && !defined(OPENSSL_SYS_VXWORKS) &&
+!defined(NO_SYSLOG)
# include <syslog.h>
#endif
@@ -373,11 +373,15 @@
{
}
-#else /* Unix */
+#else /* Unix/Watt32 */
static void xopenlog(BIO* bp, char* name, int level)
{
- openlog(name, LOG_PID|LOG_CONS, level);
+#ifdef WATT32 /* djgpp/DOS */
+ openlog(name, LOG_PID|LOG_CONS|LOG_NDELAY, level);
+#else
+ openlog(name, LOG_PID|LOG_CONS, level);
+#endif
}
static void xsyslog(BIO *bp, int priority, const char *string)
diff -B -H -u3 -r ./crypto/bio/bss_sock.c ./patch/crypto/bio/bss_sock.c
--- ./crypto/bio/bss_sock.c Tue Feb 20 09:00:38 2001
+++ ./patch/crypto/bio/bss_sock.c Wed Feb 21 10:27:04 2001
@@ -64,6 +64,12 @@
#include "cryptlib.h"
#include <openssl/bio.h>
+#ifdef WATT32
+#define sock_write SockWrite /* Watt-32 uses same names */
+#define sock_read SockRead
+#define sock_puts SockPuts
+#endif
+
static int sock_write(BIO *h, const char *buf, int num);
static int sock_read(BIO *h, char *buf, int size);
static int sock_puts(BIO *h, const char *str);
diff -B -H -u3 -r ./crypto/bn/divtest.c ./patch/crypto/bn/divtest.c
--- ./crypto/bn/divtest.c Sun Feb 27 23:00:38 2000
+++ ./patch/crypto/bn/divtest.c Thu Mar 14 08:25:26 2002
@@ -1,7 +1,7 @@
#include <openssl/bn.h>
#include <openssl/rand.h>
-static int rand(n)
+static int Rand(n)
{
unsigned char x[2];
RAND_pseudo_bytes(x,2);
@@ -26,8 +26,8 @@
BN_CTX *ctx=BN_CTX_new();
for(;;) {
- BN_pseudo_rand(a,rand(),0,0);
- BN_pseudo_rand(b,rand(),0,0);
+ BN_pseudo_rand(a,Rand(),0,0);
+ BN_pseudo_rand(b,Rand(),0,0);
if (BN_is_zero(b)) continue;
BN_RECP_CTX_set(recp,b,ctx);
diff -B -H -u3 -r ./demos/bio/saccept.c ./patch/demos/bio/saccept.c
--- ./demos/bio/saccept.c Fri Feb 4 15:00:26 2000
+++ ./patch/demos/bio/saccept.c Thu Sep 13 08:24:26 2001
@@ -45,6 +45,11 @@
SSL_load_error_strings();
+#ifdef WATT32
+ dbug_init();
+ sock_init();
+#endif
+
/* Add ciphers and message digests */
OpenSSL_add_ssl_algorithms();
diff -B -H -u3 -r ./demos/bio/sconnect.c ./patch/demos/bio/sconnect.c
--- ./demos/bio/sconnect.c Fri Feb 4 15:00:26 2000
+++ ./patch/demos/bio/sconnect.c Thu Sep 13 08:24:10 2001
@@ -32,6 +32,10 @@
else
host=argv[1];
+#ifdef WATT32
+ dbug_init();
+ sock_init();
+#endif
/* Lets get nice error messages */
SSL_load_error_strings();
diff -B -H -u3 -r ./e_os.h ./patch/e_os.h
--- ./e_os.h Wed Oct 9 14:00:26 2002
+++ ./patch/e_os.h Tue Nov 12 18:01:26 2002
@@ -154,6 +154,13 @@
#define readsocket(s,b,n) recv((s),(b),(n),0)
#define writesocket(s,b,n) send((s),(b),(n),0)
#define EADDRINUSE WSAEADDRINUSE
+#elif defined(__DJGPP__)
+#define WATT32
+#define get_last_socket_error() errno
+#define clear_socket_error() errno=0
+#define closesocket(s) close_s(s)
+#define readsocket(s,b,n) read_s(s,b,n)
+#define writesocket(s,b,n) send(s,b,n,0)
#elif defined(MAC_OS_pre_X)
#define get_last_socket_error() errno
#define clear_socket_error() errno=0
@@ -207,7 +214,7 @@
# define S_IFMT _S_IFMT
# endif
-# if !defined(WINNT)
+# if !defined(WINNT) && !defined(__DJGPP__)
# define NO_SYSLOG
# endif
# define NO_DIRENT
@@ -344,7 +351,7 @@
/*************/
#ifdef USE_SOCKETS
-# if (defined(WINDOWS) || defined(MSDOS)) && !defined(__DJGPP__)
+# if defined(WINDOWS) || defined(MSDOS)
/* windows world */
# ifdef OPENSSL_NO_SOCK
@@ -352,13 +359,18 @@
# define SSLeay_Read(a,b,c) (-1)
# define SHUTDOWN(fd) close(fd)
# define SHUTDOWN2(fd) close(fd)
-# else
+# elif defined(WINDOWS)
# include <winsock.h>
extern HINSTANCE _hInstance;
# 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); }
# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); }
+# elif defined(__DJGPP__)
+# define SSLeay_Write(a,b,c) write_s(a,b,c,0)
+# define SSLeay_Read(a,b,c) read_s(a,b,c)
+# define SHUTDOWN(fd) close_s(fd)
+# define SHUTDOWN2(fd) close_s(fd)
# endif
# elif defined(MAC_OS_pre_X)
--------------------------------------------------------------------------
Gisle V.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]