summaryrefslogtreecommitdiff
path: root/lib/libcrypto/ui
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2014-04-16 17:55:35 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2014-04-16 17:55:35 +0000
commit9ab4809580b391dea1b34188e11aaf17179922ef (patch)
tree6b2289522ffbecb0274991d6c094e7ab51c3b24b /lib/libcrypto/ui
parent6d793391d85600ca2e80272be42c3b08c3525e6c (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.c265
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