diff options
author | Ted Unangst <tedu@cvs.openbsd.org> | 2014-04-16 17:55:35 +0000 |
---|---|---|
committer | Ted Unangst <tedu@cvs.openbsd.org> | 2014-04-16 17:55:35 +0000 |
commit | 9ab4809580b391dea1b34188e11aaf17179922ef (patch) | |
tree | 6b2289522ffbecb0274991d6c094e7ab51c3b24b /lib/libcrypto/ui | |
parent | 6d793391d85600ca2e80272be42c3b08c3525e6c (diff) |
whack the ifdef pinata:
OPENSSL_SYSNAME_VXWORKS
OPENSSL_SYS_VMS
OPENSSL_SYS_MSDOS
OPENSSL_UNISTD
OPENSSL_SYS_WIN16
WIN_CONSOLE_BUG
OPENSSL_SYS_WINCE
SGTTY
OPENSSL_SYS_MACINTOSH_CLASSIC
MAC_OS_GUSI_SOURCE
OPENSSL_SYS_NETWARE
OPENSSL_SYS_SUNOS
__DJGPP__
OPENSSL_SYS_BEOS
OPENSSL_SYS_WIN32
Diffstat (limited to 'lib/libcrypto/ui')
-rw-r--r-- | lib/libcrypto/ui/ui_openssl.c | 265 |
1 files changed, 5 insertions, 260 deletions
diff --git a/lib/libcrypto/ui/ui_openssl.c b/lib/libcrypto/ui/ui_openssl.c index a38c7581e6a..6000c24b1cf 100644 --- a/lib/libcrypto/ui/ui_openssl.c +++ b/lib/libcrypto/ui/ui_openssl.c @@ -117,31 +117,12 @@ #include <openssl/e_os2.h> -/* need for #define _POSIX_C_SOURCE arises whenever you pass -ansi to gcc - * [maybe others?], because it masks interfaces not discussed in standard, - * sigaction and fileno included. -pedantic would be more appropriate for - * the intended purposes, but we can't prevent users from adding -ansi. - */ -#if defined(OPENSSL_SYSNAME_VXWORKS) -#include <sys/types.h> -#endif - -#if !defined(_POSIX_C_SOURCE) && defined(OPENSSL_SYS_VMS) -#ifndef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 2 -#endif -#endif #include <signal.h> #include <stdio.h> #include <string.h> #include <errno.h> -#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) -# ifdef OPENSSL_UNISTD -# include OPENSSL_UNISTD -# else -# include <unistd.h> -# endif +#include <unistd.h> /* If unistd.h defines _POSIX_VERSION, we conclude that we * are on a POSIX system and have sigaction and termios. */ # if defined(_POSIX_VERSION) @@ -152,74 +133,21 @@ # endif # endif -#endif -#ifdef WIN16TTY -# undef OPENSSL_SYS_WIN16 -# undef WIN16 -# undef _WINDOWS -# include <graph.h> -#endif - -/* 06-Apr-92 Luke Brennan Support for VMS */ #include "ui_locl.h" #include "cryptlib.h" -#ifdef OPENSSL_SYS_VMS /* prototypes for sys$whatever */ -# include <starlet.h> -# ifdef __DECC -# pragma message disable DOLLARID -# endif -#endif - -#ifdef WIN_CONSOLE_BUG -# include <windows.h> -#ifndef OPENSSL_SYS_WINCE -# include <wincon.h> -#endif -#endif - /* There are 5 types of terminal interface supported, * TERMIO, TERMIOS, VMS, MSDOS and SGTTY */ -#if defined(__sgi) && !defined(TERMIOS) -# define TERMIOS -# undef TERMIO -# undef SGTTY -#endif - -#if defined(linux) && !defined(TERMIO) -# undef TERMIOS -# define TERMIO -# undef SGTTY -#endif - #ifdef _LIBC # undef TERMIOS # define TERMIO # undef SGTTY #endif -#if !defined(TERMIO) && !defined(TERMIOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(MAC_OS_GUSI_SOURCE) -# undef TERMIOS -# undef TERMIO -# define SGTTY -#endif - -#if defined(OPENSSL_SYS_VXWORKS) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - -#if defined(OPENSSL_SYS_NETWARE) -#undef TERMIOS -#undef TERMIO -#undef SGTTY -#endif - #ifdef TERMIOS # include <termios.h> # define TTY_STRUCT struct termios @@ -236,46 +164,7 @@ # define TTY_set(tty,data) ioctl(tty,TCSETA,data) #endif -#ifdef SGTTY -# include <sgtty.h> -# define TTY_STRUCT struct sgttyb -# define TTY_FLAGS sg_flags -# define TTY_get(tty,data) ioctl(tty,TIOCGETP,data) -# define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) -#endif - -#if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_SUNOS) # include <sys/ioctl.h> -#endif - -#ifdef OPENSSL_SYS_MSDOS -# include <conio.h> -#endif - -#ifdef OPENSSL_SYS_VMS -# include <ssdef.h> -# include <iodef.h> -# include <ttdef.h> -# include <descrip.h> -struct IOSB { - short iosb$w_value; - short iosb$w_count; - long iosb$l_info; - }; -#endif - -#ifdef OPENSSL_SYS_SUNOS - typedef int sig_atomic_t; -#endif - -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(MAC_OS_GUSI_SOURCE) || defined(OPENSSL_SYS_NETWARE) -/* - * This one needs work. As a matter of fact the code is unoperational - * and this is only a trick to get it compiled. - * <appro@fy.chalmers.se> - */ -# define TTY_STRUCT int -#endif #ifndef NX509_SIG # define NX509_SIG 32 @@ -289,30 +178,15 @@ static struct sigaction savsig[NX509_SIG]; static void (*savsig[NX509_SIG])(int ); #endif -#ifdef OPENSSL_SYS_VMS -static struct IOSB iosb; -static $DESCRIPTOR(terminal,"TT"); -static long tty_orig[3], tty_new[3]; /* XXX Is there any guarantee that this will always suffice for the actual structures? */ -static long status; -static unsigned short channel = 0; -#else -#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__) static TTY_STRUCT tty_orig,tty_new; -#endif -#endif static FILE *tty_in, *tty_out; static int is_a_tty; /* Declare static functions */ -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) static int read_till_nl(FILE *); static void recsig(int); static void pushsig(void); static void popsig(void); -#endif -#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16) -static int noecho_fgets(char *buf, int size, FILE *tty); -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl); static int read_string(UI *ui, UI_STRING *uis); @@ -396,7 +270,6 @@ static int read_string(UI *ui, UI_STRING *uis) } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to read a string without echoing */ static int read_till_nl(FILE *in) { @@ -411,7 +284,6 @@ static int read_till_nl(FILE *in) } static volatile sig_atomic_t intr_signal; -#endif static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) { @@ -419,7 +291,6 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) int ok; char result[BUFSIZ]; int maxsize = BUFSIZ-1; -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) char *p; intr_signal=0; @@ -434,17 +305,7 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) ps=2; result[0]='\0'; -#ifdef OPENSSL_SYS_MSDOS - if (!echo) - { - noecho_fgets(result,maxsize,tty_in); - p=result; /* FIXME: noecho_fgets doesn't return errors */ - } - else - p=fgets(result,maxsize,tty_in); -#else p=fgets(result,maxsize,tty_in); -#endif if(!p) goto error; if (feof(tty_in)) goto error; @@ -469,9 +330,6 @@ error: if (ps >= 1) popsig(); -#else - ok=1; -#endif OPENSSL_cleanse(result,BUFSIZ); return ok; @@ -484,47 +342,26 @@ static int open_console(UI *ui) CRYPTO_w_lock(CRYPTO_LOCK_UI); is_a_tty = 1; -#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS) - tty_in=stdin; - tty_out=stderr; -#else -# ifdef OPENSSL_SYS_MSDOS -# define DEV_TTY "con" -# else # define DEV_TTY "/dev/tty" -# endif if ((tty_in=fopen(DEV_TTY,"r")) == NULL) tty_in=stdin; if ((tty_out=fopen(DEV_TTY,"w")) == NULL) tty_out=stderr; -#endif -#if defined(TTY_get) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_get) if (TTY_get(fileno(tty_in),&tty_orig) == -1) { -#ifdef ENOTTY if (errno == ENOTTY) is_a_tty=0; else -#endif -#ifdef EINVAL /* Ariel Glenn ariel@columbia.edu reports that solaris * can return EINVAL instead. This should be ok */ if (errno == EINVAL) is_a_tty=0; else -#endif return 0; } #endif -#ifdef OPENSSL_SYS_VMS - status = sys$assign(&terminal,&channel,0,0); - if (status != SS$_NORMAL) - return 0; - status=sys$qiow(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; -#endif return 1; } @@ -535,40 +372,24 @@ static int noecho_console(UI *ui) tty_new.TTY_FLAGS &= ~ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; #endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] | TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; -#endif return 1; } static int echo_console(UI *ui) { -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig)); tty_new.TTY_FLAGS |= ECHO; #endif -#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS) +#if defined(TTY_set) if (is_a_tty && (TTY_set(fileno(tty_in),&tty_new) == -1)) return 0; #endif -#ifdef OPENSSL_SYS_VMS - tty_new[0] = tty_orig[0]; - tty_new[1] = tty_orig[1] & ~TT$M_NOECHO; - tty_new[2] = tty_orig[2]; - status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); - if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) - return 0; -#endif return 1; } @@ -576,22 +397,16 @@ static int close_console(UI *ui) { if (tty_in != stdin) fclose(tty_in); if (tty_out != stderr) fclose(tty_out); -#ifdef OPENSSL_SYS_VMS - status = sys$dassgn(channel); -#endif CRYPTO_w_unlock(CRYPTO_LOCK_UI); return 1; } -#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) /* Internal functions to handle signals and act on them */ static void pushsig(void) { -#ifndef OPENSSL_SYS_WIN32 int i; -#endif #ifdef SIGACTION struct sigaction sa; @@ -599,14 +414,6 @@ static void pushsig(void) sa.sa_handler=recsig; #endif -#ifdef OPENSSL_SYS_WIN32 - savsig[SIGABRT]=signal(SIGABRT,recsig); - savsig[SIGFPE]=signal(SIGFPE,recsig); - savsig[SIGILL]=signal(SIGILL,recsig); - savsig[SIGINT]=signal(SIGINT,recsig); - savsig[SIGSEGV]=signal(SIGSEGV,recsig); - savsig[SIGTERM]=signal(SIGTERM,recsig); -#else for (i=1; i<NX509_SIG; i++) { #ifdef SIGUSR1 @@ -627,7 +434,6 @@ static void pushsig(void) savsig[i]=signal(i,recsig); #endif } -#endif #ifdef SIGWINCH signal(SIGWINCH,SIG_DFL); @@ -636,83 +442,22 @@ static void pushsig(void) static void popsig(void) { -#ifdef OPENSSL_SYS_WIN32 - signal(SIGABRT,savsig[SIGABRT]); - signal(SIGFPE,savsig[SIGFPE]); - signal(SIGILL,savsig[SIGILL]); - signal(SIGINT,savsig[SIGINT]); - signal(SIGSEGV,savsig[SIGSEGV]); - signal(SIGTERM,savsig[SIGTERM]); -#else int i; for (i=1; i<NX509_SIG; i++) { -#ifdef SIGUSR1 if (i == SIGUSR1) continue; -#endif -#ifdef SIGUSR2 if (i == SIGUSR2) continue; -#endif #ifdef SIGACTION sigaction(i,&savsig[i],NULL); #else signal(i,savsig[i]); #endif } -#endif } static void recsig(int i) { intr_signal=i; } -#endif - -/* Internal functions specific for Windows */ -#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) -static int noecho_fgets(char *buf, int size, FILE *tty) - { - int i; - char *p; - - p=buf; - for (;;) - { - if (size == 0) - { - *p='\0'; - break; - } - size--; -#ifdef WIN16TTY - i=_inchar(); -#elif defined(_WIN32) - i=_getch(); -#else - i=getch(); -#endif - if (i == '\r') i='\n'; - *(p++)=i; - if (i == '\n') - { - *p='\0'; - break; - } - } -#ifdef WIN_CONSOLE_BUG -/* Win95 has several evil console bugs: one of these is that the - * last character read using getch() is passed to the next read: this is - * usually a CR so this can be trouble. No STDIO fix seems to work but - * flushing the console appears to do the trick. - */ - { - HANDLE inh; - inh = GetStdHandle(STD_INPUT_HANDLE); - FlushConsoleInputBuffer(inh); - } -#endif - return(strlen(buf)); - } -#endif |