diff options
author | Ulf Möller <ulf@openssl.org> | 2006-04-11 21:34:21 +0000 |
---|---|---|
committer | Ulf Möller <ulf@openssl.org> | 2006-04-11 21:34:21 +0000 |
commit | 4700aea951dcba9b1e3b724bf4d8f0c712578892 (patch) | |
tree | a30eb63c83db7085b9067633de5391267ce74881 /apps/s_server.c | |
parent | 60cdb821db3403481c891b570d163d28f041ec02 (diff) | |
download | openssl-4700aea951dcba9b1e3b724bf4d8f0c712578892.tar.gz |
Add BeOS support.
PR: 1312
Submitted by: Oliver Tappe <zooey@hirschkaefer.de>
Reviewed by: Ulf Moeller
Diffstat (limited to 'apps/s_server.c')
-rw-r--r-- | apps/s_server.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/apps/s_server.c b/apps/s_server.c index 9982d6ac7e..69a2f6caf4 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -193,6 +193,10 @@ typedef unsigned int u_int; #undef FIONBIO #endif +#if defined(OPENSSL_SYS_BEOS_R5) +#include <fcntl.h> +#endif + #ifndef OPENSSL_NO_RSA static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength); #endif @@ -1511,7 +1515,7 @@ static int sv_body(char *hostname, int s, unsigned char *context) unsigned long l; SSL *con=NULL; BIO *sbio; -#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) +#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5) struct timeval tv; #endif @@ -1616,7 +1620,7 @@ static int sv_body(char *hostname, int s, unsigned char *context) if (!read_from_sslcon) { FD_ZERO(&readfds); -#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) +#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_BEOS_R5) FD_SET(fileno(stdin),&readfds); #endif FD_SET(s,&readfds); @@ -1638,6 +1642,17 @@ static int sv_body(char *hostname, int s, unsigned char *context) if((i < 0) || (!i && !_kbhit() ) )continue; if(_kbhit()) read_from_terminal = 1; +#elif defined(OPENSSL_SYS_BEOS_R5) + /* Under BeOS-R5 the situation is similar to DOS */ + tv.tv_sec = 1; + tv.tv_usec = 0; + (void)fcntl(fileno(stdin), F_SETFL, O_NONBLOCK); + i=select(width,(void *)&readfds,NULL,NULL,&tv); + if ((i < 0) || (!i && read(fileno(stdin), buf, 0) < 0)) + continue; + if (read(fileno(stdin), buf, 0) >= 0) + read_from_terminal = 1; + (void)fcntl(fileno(stdin), F_SETFL, 0); #else i=select(width,(void *)&readfds,NULL,NULL,NULL); if (i <= 0) continue; |