aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--getpass.c183
1 files changed, 89 insertions, 94 deletions
diff --git a/getpass.c b/getpass.c
index e942f26c..c2f8d140 100644
--- a/getpass.c
+++ b/getpass.c
@@ -22,8 +22,6 @@
#endif
#include "fetchmail.h"
-extern int optind;
-
#define INPUT_BUF_SIZE PASSWORDLEN
#if defined(HAVE_TERMIOS_H) && defined(HAVE_TCSETATTR)
@@ -60,86 +58,83 @@ void save_tty_state();
void disable_tty_echo();
void restore_tty_state();
-char *
-getpassword(prompt)
+char *getpassword(prompt)
char *prompt;
{
-
#if !(defined(HAVE_TCSETATTR) || defined(HAVE_TERMIO_H) || defined(HAVE_STTY))
#if defined(HAVE_GETPASS)
- char *getpass();
- return getpass(prompt);
+ char *getpass();
+ return getpass(prompt);
#else
- fputs("ERROR: no support for getpassword() routine\n",stderr);
- exit(1);
+ fputs("ERROR: no support for getpassword() routine\n",stderr);
+ exit(1);
#endif
#endif /* !(defined(HAVE_TCSETATTR) || ... */
- register char *p;
- register c;
- FILE *fi;
- static char pbuf[INPUT_BUF_SIZE];
- RETSIGTYPE (*sig)();
- RETSIGTYPE sigint_handler();
- int istty=tcgetpgrp(0)!=-1;
-
- /* get the file descriptor for the input device */
-
- if(istty)
- {
- if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL)
- fi = stdin;
+ register char *p;
+ register c;
+ FILE *fi;
+ static char pbuf[INPUT_BUF_SIZE];
+ RETSIGTYPE (*sig)();
+ RETSIGTYPE sigint_handler();
+ int istty = (tcgetpgrp(0) != -1);
+
+ /* get the file descriptor for the input device */
+
+ if (istty)
+ {
+ if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL)
+ fi = stdin;
+ else
+ setbuf(fi, (char *)NULL);
+ }
else
- setbuf(fi, (char *)NULL);
- }
- else
- fi=stdin;
-
- /* store descriptor for the tty */
- ttyfd = fileno(fi);
-
- if(istty)
- {
- /* preserve tty state before turning off echo */
- save_tty_state();
-
- /* now that we have the current tty state, we can catch SIGINT and
- exit gracefully */
- sig = signal(SIGINT, sigint_handler);
-
- /* turn off echo on the tty */
- disable_tty_echo();
- }
-
- /* display the prompt and get the input string */
- if(istty)
- fprintf(stderr, "%s", prompt); fflush(stderr);
- for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) {
- if (p < &pbuf[INPUT_BUF_SIZE - 1])
- *p++ = c;
- }
- *p = '\0';
-
- /* write a newline so cursor won't appear to hang */
- if(fi!=stdin)
- {
- fprintf(stderr, "\n"); fflush(stderr);
- }
- if(istty)
- {
- /* restore previous state of the tty */
- restore_tty_state();
-
- /* restore previous state of SIGINT */
- signal(SIGINT, sig);
- }
- if (fi != stdin)
- fclose(fi);
-
- return(pbuf);
-
+ fi = stdin;
+
+ /* store descriptor for the tty */
+ ttyfd = fileno(fi);
+
+ if (istty)
+ {
+ /* preserve tty state before turning off echo */
+ save_tty_state();
+
+ /* now that we have the current tty state, we can catch SIGINT and
+ exit gracefully */
+ sig = signal(SIGINT, sigint_handler);
+
+ /* turn off echo on the tty */
+ disable_tty_echo();
+
+ /* display the prompt and get the input string */
+ fprintf(stderr, "%s", prompt);
+ }
+
+ for (p = pbuf; (c = getc(fi))!='\n' && c!=EOF;)
+ {
+ if (p < &pbuf[INPUT_BUF_SIZE - 1])
+ *p++ = c;
+ }
+ *p = '\0';
+
+ /* write a newline so cursor won't appear to hang */
+ if (fi != stdin)
+ fprintf(stderr, "\n");
+
+ if (istty)
+ {
+ /* restore previous state of the tty */
+ restore_tty_state();
+
+ /* restore previous state of SIGINT */
+ signal(SIGINT, sig);
+ }
+ if (fi != stdin)
+ fclose(fi);
+
+ return(pbuf);
}
@@ -147,15 +142,15 @@ void
save_tty_state ()
{
#if defined(HAVE_TCSETATTR)
- tcgetattr(ttyfd, &termb);
- flags = termb.c_lflag;
+ tcgetattr(ttyfd, &termb);
+ flags = termb.c_lflag;
#else
#if defined(HAVE_TERMIO_H)
- ioctl(ttyfd, TCGETA, (char *) &termb);
- flags = termb.c_lflag;
+ ioctl(ttyfd, TCGETA, (char *) &termb);
+ flags = termb.c_lflag;
#else /* we HAVE_STTY */
- gtty(ttyfd, &ttyb);
- flags = ttyb.sg_flags;
+ gtty(ttyfd, &ttyb);
+ flags = ttyb.sg_flags;
#endif
#endif
}
@@ -164,17 +159,17 @@ save_tty_state ()
void
disable_tty_echo()
{
- /* turn off echo on the tty */
+ /* turn off echo on the tty */
#if defined(HAVE_TCSETATTR)
- termb.c_lflag &= ~ECHO;
- tcsetattr(ttyfd, TCSAFLUSH, &termb);
+ termb.c_lflag &= ~ECHO;
+ tcsetattr(ttyfd, TCSAFLUSH, &termb);
#else
#if defined(HAVE_TERMIO_H)
- termb.c_lflag &= ~ECHO;
- ioctl(ttyfd, TCSETA, (char *) &termb);
+ termb.c_lflag &= ~ECHO;
+ ioctl(ttyfd, TCSETA, (char *) &termb);
#else /* we HAVE_STTY */
- ttyb.sg_flags &= ~ECHO;
- stty(ttyfd, &ttyb);
+ ttyb.sg_flags &= ~ECHO;
+ stty(ttyfd, &ttyb);
#endif
#endif
}
@@ -184,24 +179,24 @@ disable_tty_echo()
void
restore_tty_state()
{
- /* restore previous tty echo state */
+ /* restore previous tty echo state */
#if defined(HAVE_TCSETATTR)
- termb.c_lflag = flags;
- tcsetattr(ttyfd, TCSAFLUSH, &termb);
+ termb.c_lflag = flags;
+ tcsetattr(ttyfd, TCSAFLUSH, &termb);
#else
#if defined(HAVE_TERMIO_H)
- termb.c_lflag = flags;
- ioctl(ttyfd, TCSETA, (char *) &termb);
+ termb.c_lflag = flags;
+ ioctl(ttyfd, TCSETA, (char *) &termb);
#else /* we HAVE_STTY */
- ttyb.sg_flags = flags;
- stty(ttyfd, &ttyb);
+ ttyb.sg_flags = flags;
+ stty(ttyfd, &ttyb);
#endif
#endif
}
-RETSIGTYPE sigint_handler ()
+RETSIGTYPE sigint_handler()
{
- restore_tty_state();
- error(1, 0, "\nCaught signal... bailing out.");
+ restore_tty_state();
+ error(1, 0, "\nCaught signal... bailing out.");
}