X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=getpass.c;h=c1624299eb43d75a494420ce7694c83aa0f93903;hb=98cfcef26048bba06975e68a1aad05a8bac0d65d;hp=12f58627545daadd0c1522f5d44fa68ef138b2cb;hpb=d57b00768a8fa44d1e1c5f758440edabfa488baf;p=~andy%2Ffetchmail diff --git a/getpass.c b/getpass.c index 12f58627..c1624299 100644 --- a/getpass.c +++ b/getpass.c @@ -18,61 +18,26 @@ #include #include #include -#if defined(HAVE_UNISTD_H) #include -#endif #include "fetchmail.h" -#include "i18n.h" +#include "gettext.h" #define INPUT_BUF_SIZE PASSWORDLEN -#if defined(HAVE_TERMIOS_H) && defined(HAVE_TCSETATTR) -# include -#else -#if defined(HAVE_TERMIO_H) -# include -# include -#else -#if defined(HAVE_SGTTY_H) -# include -#endif -#endif -#endif +#include static int ttyfd; -#if defined(HAVE_TCSETATTR) - static struct termios termb; - static tcflag_t flags; -#else -#if defined(HAVE_TERMIO_H) - static struct termio termb; - static unsigned short flags; -#else -#if defined(HAVE_STTY) - static struct sgttyb ttyb; - static int flags; -#endif -#endif -#endif +static struct termios termb; +static tcflag_t flags; static void save_tty_state(void); static void disable_tty_echo(void); static void restore_tty_state(void); -static RETSIGTYPE sigint_handler(int); +static void sigint_handler(int); -char *fm_getpassword(prompt) -char *prompt; +char *fm_getpassword(char *prompt) { -#if !(defined(HAVE_TCSETATTR) || defined(HAVE_TERMIO_H) || defined(HAVE_STTY)) -#if defined(HAVE_GETPASS) - char *getpass(); - return getpass(prompt); -#else - fputs(GT_("ERROR: no support for getpassword() routine\n"),stderr); - exit(1); -#endif -#else register char *p; register int c; FILE *fi; @@ -134,60 +99,29 @@ char *prompt; fclose(fi); /* not checking should be safe, file mode was "r" */ return(pbuf); -#endif /* !(defined(HAVE_TCSETATTR) || ... */ } static void save_tty_state (void) { -#if defined(HAVE_TCSETATTR) tcgetattr(ttyfd, &termb); flags = termb.c_lflag; -#else -#if defined(HAVE_TERMIO_H) - ioctl(ttyfd, TCGETA, (char *) &termb); - flags = termb.c_lflag; -#else /* we HAVE_STTY */ - gtty(ttyfd, &ttyb); - flags = ttyb.sg_flags; -#endif -#endif } static void disable_tty_echo(void) { /* turn off echo on the tty */ -#if defined(HAVE_TCSETATTR) termb.c_lflag &= ~ECHO; tcsetattr(ttyfd, TCSAFLUSH, &termb); -#else -#if defined(HAVE_TERMIO_H) - termb.c_lflag &= ~ECHO; - ioctl(ttyfd, TCSETA, (char *) &termb); -#else /* we HAVE_STTY */ - ttyb.sg_flags &= ~ECHO; - stty(ttyfd, &ttyb); -#endif -#endif } static void restore_tty_state(void) { /* restore previous tty echo state */ -#if defined(HAVE_TCSETATTR) termb.c_lflag = flags; tcsetattr(ttyfd, TCSAFLUSH, &termb); -#else -#if defined(HAVE_TERMIO_H) - termb.c_lflag = flags; - ioctl(ttyfd, TCSETA, (char *) &termb); -#else /* we HAVE_STTY */ - ttyb.sg_flags = flags; - stty(ttyfd, &ttyb); -#endif -#endif } -static RETSIGTYPE sigint_handler(int signum) +static void sigint_handler(int signum) { (void)signum; restore_tty_state();