提交 51e5133d 编写于 作者: R Richard Levitte

Refactor to avoid unnecessary preprocessor logic

Reviewed-by: NAndy Polyakov <appro@openssl.org>
Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 c7bdb6a3
...@@ -2300,6 +2300,36 @@ int app_isdir(const char *name) ...@@ -2300,6 +2300,36 @@ int app_isdir(const char *name)
#endif #endif
/* raw_read|write section */ /* raw_read|write section */
#if defined(__VMS)
# include "vms_term_sock.h"
static int stdin_sock = -1;
static void close_stdin_sock(void)
{
TerminalSocket (TERM_SOCK_DELETE, &stdin_sock);
}
int fileno_stdin(void)
{
if (stdin_sock == -1) {
TerminalSocket(TERM_SOCK_CREATE, &stdin_sock);
atexit(close_stdin_sock);
}
return stdin_sock;
}
#else
int fileno_stdin(void)
{
return fileno(stdin);
}
#endif
int fileno_stdout(void)
{
return fileno(stdout);
}
#if defined(_WIN32) && defined(STD_INPUT_HANDLE) #if defined(_WIN32) && defined(STD_INPUT_HANDLE)
int raw_read_stdin(void *buf, int siz) int raw_read_stdin(void *buf, int siz)
{ {
...@@ -2309,10 +2339,15 @@ int raw_read_stdin(void *buf, int siz) ...@@ -2309,10 +2339,15 @@ int raw_read_stdin(void *buf, int siz)
else else
return (-1); return (-1);
} }
#elif defined(__VMS)
int raw_read_stdin(void *buf, int siz)
{
return recv(fileno_stdin(), buf, siz, 0);
}
#else #else
int raw_read_stdin(void *buf, int siz) int raw_read_stdin(void *buf, int siz)
{ {
return read(fileno(stdin), buf, siz); return read(fileno_stdin(), buf, siz);
} }
#endif #endif
...@@ -2328,7 +2363,7 @@ int raw_write_stdout(const void *buf, int siz) ...@@ -2328,7 +2363,7 @@ int raw_write_stdout(const void *buf, int siz)
#else #else
int raw_write_stdout(const void *buf, int siz) int raw_write_stdout(const void *buf, int siz)
{ {
return write(fileno(stdout), buf, siz); return write(fileno_stdout(), buf, siz);
} }
#endif #endif
......
...@@ -549,6 +549,8 @@ void store_setup_crl_download(X509_STORE *st); ...@@ -549,6 +549,8 @@ void store_setup_crl_download(X509_STORE *st);
int app_isdir(const char *); int app_isdir(const char *);
int app_access(const char *, int flag); int app_access(const char *, int flag);
int fileno_stdin(void);
int fileno_stdout(void);
int raw_read_stdin(void *, int); int raw_read_stdin(void *, int);
int raw_write_stdout(const void *, int); int raw_write_stdout(const void *, int);
......
...@@ -43,9 +43,6 @@ ...@@ -43,9 +43,6 @@
#ifndef OPENSSL_NO_SOCK #ifndef OPENSSL_NO_SOCK
#ifdef OPENSSL_SYS_VMS
# include "vms_term_sock.h"
#endif
/* /*
* With IPv6, it looks like Digital has mixed up the proper order of * With IPv6, it looks like Digital has mixed up the proper order of
* recursive header file inclusion, resulting in the compiler complaining * recursive header file inclusion, resulting in the compiler complaining
...@@ -861,10 +858,6 @@ int s_client_main(int argc, char **argv) ...@@ -861,10 +858,6 @@ int s_client_main(int argc, char **argv)
int c_nbio = 0, c_msg = 0, c_ign_eof = 0, c_brief = 0; int c_nbio = 0, c_msg = 0, c_ign_eof = 0, c_brief = 0;
int c_tlsextdebug = 0, c_status_req = 0; int c_tlsextdebug = 0, c_status_req = 0;
BIO *bio_c_msg = NULL; BIO *bio_c_msg = NULL;
#if defined(OPENSSL_SYS_VMS)
int stdin_sock;
TerminalSocket(TERM_SOCK_CREATE, &stdin_sock);
#endif
FD_ZERO(&readfds); FD_ZERO(&readfds);
FD_ZERO(&writefds); FD_ZERO(&writefds);
...@@ -1828,14 +1821,11 @@ int s_client_main(int argc, char **argv) ...@@ -1828,14 +1821,11 @@ int s_client_main(int argc, char **argv)
SSL_set_connect_state(con); SSL_set_connect_state(con);
/* ok, lets connect */ /* ok, lets connect */
#if defined(OPENSSL_SYS_VMS) if (fileno_stdin() > SSL_get_fd(con))
if (stdin_sock > SSL_get_fd(con)) width = fileno_stdin() + 1;
width = stdin_sock + 1;
else else
width = SSL_get_fd(con) + 1; width = SSL_get_fd(con) + 1;
#else
width = SSL_get_fd(con) + 1;
#endif
read_tty = 1; read_tty = 1;
write_tty = 0; write_tty = 0;
tty_on = 0; tty_on = 0;
...@@ -2162,14 +2152,11 @@ int s_client_main(int argc, char **argv) ...@@ -2162,14 +2152,11 @@ int s_client_main(int argc, char **argv)
* and EOF satisfies that. To avoid a CPU-hogging loop, * and EOF satisfies that. To avoid a CPU-hogging loop,
* set the flag so we exit. * set the flag so we exit.
*/ */
#if defined(OPENSSL_SYS_VMS)
if (read_tty && !at_eof)
openssl_fdset(stdin_sock, &readfds);
#else
if (read_tty && !at_eof) if (read_tty && !at_eof)
openssl_fdset(fileno(stdin), &readfds); openssl_fdset(fileno_stdin(), &readfds);
#if !defined(OPENSSL_SYS_VMS)
if (write_tty) if (write_tty)
openssl_fdset(fileno(stdout), &writefds); openssl_fdset(fileno_stdout(), &writefds);
#endif #endif
} }
if (read_ssl) if (read_ssl)
...@@ -2300,7 +2287,7 @@ int s_client_main(int argc, char **argv) ...@@ -2300,7 +2287,7 @@ int s_client_main(int argc, char **argv)
/* Assume Windows/DOS/BeOS can always write */ /* Assume Windows/DOS/BeOS can always write */
else if (!ssl_pending && write_tty) else if (!ssl_pending && write_tty)
#else #else
else if (!ssl_pending && FD_ISSET(fileno(stdout), &writefds)) else if (!ssl_pending && FD_ISSET(fileno_stdout(), &writefds))
#endif #endif
{ {
#ifdef CHARSET_EBCDIC #ifdef CHARSET_EBCDIC
...@@ -2388,21 +2375,14 @@ int s_client_main(int argc, char **argv) ...@@ -2388,21 +2375,14 @@ int s_client_main(int argc, char **argv)
/* OPENSSL_SYS_MSDOS includes OPENSSL_SYS_WINDOWS */ /* OPENSSL_SYS_MSDOS includes OPENSSL_SYS_WINDOWS */
#if defined(OPENSSL_SYS_MSDOS) #if defined(OPENSSL_SYS_MSDOS)
else if (has_stdin_waiting()) else if (has_stdin_waiting())
#elif defined(OPENSSL_SYS_VMS)
else if (FD_ISSET(stdin_sock, &readfds))
#else #else
else if (FD_ISSET(fileno(stdin), &readfds)) else if (FD_ISSET(fileno_stdin(), &readfds))
#endif #endif
{ {
if (crlf) { if (crlf) {
int j, lf_num; int j, lf_num;
#if defined(OPENSSL_SYS_VMS)
i = recv(stdin_sock, cbuf, BUFSIZZ / 2, 0);
#else
i = raw_read_stdin(cbuf, BUFSIZZ / 2); i = raw_read_stdin(cbuf, BUFSIZZ / 2);
#endif
lf_num = 0; lf_num = 0;
/* both loops are skipped when i <= 0 */ /* both loops are skipped when i <= 0 */
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
...@@ -2417,13 +2397,8 @@ int s_client_main(int argc, char **argv) ...@@ -2417,13 +2397,8 @@ int s_client_main(int argc, char **argv)
} }
} }
assert(lf_num == 0); assert(lf_num == 0);
} else { } else
#if defined(OPENSSL_SYS_VMS)
i = recv(stdin_sock, cbuf, BUFSIZZ, 0);
#else
i = raw_read_stdin(cbuf, BUFSIZZ); i = raw_read_stdin(cbuf, BUFSIZZ);
#endif
}
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS)
if (i == 0) if (i == 0)
at_eof = 1; at_eof = 1;
...@@ -2508,9 +2483,6 @@ int s_client_main(int argc, char **argv) ...@@ -2508,9 +2483,6 @@ int s_client_main(int argc, char **argv)
bio_c_out = NULL; bio_c_out = NULL;
BIO_free(bio_c_msg); BIO_free(bio_c_msg);
bio_c_msg = NULL; bio_c_msg = NULL;
#if defined(OPENSSL_SYS_VMS)
TerminalSocket(TERM_SOCK_DELETE, &stdin_sock);
#endif
return (ret); return (ret);
} }
......
...@@ -90,11 +90,6 @@ typedef unsigned int u_int; ...@@ -90,11 +90,6 @@ typedef unsigned int u_int;
#include <openssl/ebcdic.h> #include <openssl/ebcdic.h>
#endif #endif
#ifdef OPENSSL_SYS_VMS
# include "vms_term_sock.h"
#endif
static int not_resumable_sess_cb(SSL *s, int is_forward_secure); static int not_resumable_sess_cb(SSL *s, int is_forward_secure);
static int sv_body(int s, int stype, unsigned char *context); static int sv_body(int s, int stype, unsigned char *context);
static int www_body(int s, int stype, unsigned char *context); static int www_body(int s, int stype, unsigned char *context);
...@@ -2012,10 +2007,6 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2012,10 +2007,6 @@ static int sv_body(int s, int stype, unsigned char *context)
#else #else
struct timeval *timeoutp; struct timeval *timeoutp;
#endif #endif
#if defined(OPENSSL_SYS_VMS)
int stdin_sock;
TerminalSocket (TERM_SOCK_CREATE, &stdin_sock);
#endif
buf = app_malloc(bufsize, "server buffer"); buf = app_malloc(bufsize, "server buffer");
if (s_nbio) { if (s_nbio) {
...@@ -2116,15 +2107,10 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2116,15 +2107,10 @@ static int sv_body(int s, int stype, unsigned char *context)
SSL_set_tlsext_debug_arg(con, bio_s_out); SSL_set_tlsext_debug_arg(con, bio_s_out);
} }
if (fileno_stdin() > s)
#if defined(OPENSSL_SYS_VMS) width = fileno_stdin() + 1;
if (stdin_sock > s)
width = stdin_sock + 1;
else else
width = s + 1; width = s + 1;
#else
width = s + 1;
#endif
for (;;) { for (;;) {
int read_from_terminal; int read_from_terminal;
int read_from_sslcon; int read_from_sslcon;
...@@ -2136,11 +2122,7 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2136,11 +2122,7 @@ static int sv_body(int s, int stype, unsigned char *context)
if (!read_from_sslcon) { if (!read_from_sslcon) {
FD_ZERO(&readfds); FD_ZERO(&readfds);
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS)
# if defined(OPENSSL_SYS_VMS) openssl_fdset(fileno_stdin(), &readfds);
openssl_fdset(stdin_sock, &readfds);
# else
openssl_fdset(fileno(stdin), &readfds);
# endif
#endif #endif
openssl_fdset(s, &readfds); openssl_fdset(s, &readfds);
/* /*
...@@ -2180,11 +2162,7 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2180,11 +2162,7 @@ static int sv_body(int s, int stype, unsigned char *context)
if (i <= 0) if (i <= 0)
continue; continue;
# if defined(OPENSSL_SYS_VMS) if (FD_ISSET(fileno_stdin(), &readfds))
if (FD_ISSET(stdin_sock, &readfds))
# else
if (FD_ISSET(fileno(stdin), &readfds))
# endif
read_from_terminal = 1; read_from_terminal = 1;
#endif #endif
if (FD_ISSET(s, &readfds)) if (FD_ISSET(s, &readfds))
...@@ -2194,11 +2172,7 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2194,11 +2172,7 @@ static int sv_body(int s, int stype, unsigned char *context)
if (s_crlf) { if (s_crlf) {
int j, lf_num; int j, lf_num;
#if defined(OPENSSL_SYS_VMS)
i=recv(stdin_sock, buf, bufsize / 2, 0);
#else
i = raw_read_stdin(buf, bufsize / 2); i = raw_read_stdin(buf, bufsize / 2);
#endif
lf_num = 0; lf_num = 0;
/* both loops are skipped when i <= 0 */ /* both loops are skipped when i <= 0 */
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
...@@ -2213,13 +2187,9 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2213,13 +2187,9 @@ static int sv_body(int s, int stype, unsigned char *context)
} }
} }
assert(lf_num == 0); assert(lf_num == 0);
} else { } else
#if defined(OPENSSL_SYS_VMS)
i = recv(stdin_sock, buf, bufsize, 0);
#else
i = raw_read_stdin(buf, bufsize); i = raw_read_stdin(buf, bufsize);
#endif
}
if (!s_quiet && !s_brief) { if (!s_quiet && !s_brief) {
if ((i <= 0) || (buf[0] == 'Q')) { if ((i <= 0) || (buf[0] == 'Q')) {
BIO_printf(bio_s_out, "DONE\n"); BIO_printf(bio_s_out, "DONE\n");
...@@ -2433,9 +2403,6 @@ static int sv_body(int s, int stype, unsigned char *context) ...@@ -2433,9 +2403,6 @@ static int sv_body(int s, int stype, unsigned char *context)
OPENSSL_clear_free(buf, bufsize); OPENSSL_clear_free(buf, bufsize);
if (ret >= 0) if (ret >= 0)
BIO_printf(bio_s_out, "ACCEPT\n"); BIO_printf(bio_s_out, "ACCEPT\n");
#if defined(OPENSSL_SYS_VMS)
TerminalSocket (TERM_SOCK_DELETE, &stdin_sock);
#endif
(void)BIO_flush(bio_s_out); (void)BIO_flush(bio_s_out);
return (ret); return (ret);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册