From b751a2b9c49e48352952cb7d72e1d784f80a8585 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 3 Nov 1998 20:03:31 +0000 Subject: [PATCH] the prompt is expanded before tgetpass is called --- tgetpass.c | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/tgetpass.c b/tgetpass.c index d417b8ca1..a3aae51d2 100644 --- a/tgetpass.c +++ b/tgetpass.c @@ -95,11 +95,9 @@ static char rcsid[] = "$Id$"; * and input will time out based on the value of timeout. */ -char * tgetpass(prompt, timeout, user, host) +char * tgetpass(prompt, timeout) const char *prompt; int timeout; - char *user; - char *host; { #ifdef HAVE_TERMIOS_H struct termios term; @@ -121,7 +119,6 @@ char * tgetpass(prompt, timeout, user, host) static char buf[_PASSWD_LEN + 1]; fd_set *readfds; struct timeval tv; - char *p; /* * mask out SIGINT and SIGTSTP, should probably just catch and deal. @@ -144,30 +141,12 @@ char * tgetpass(prompt, timeout, user, host) output = stderr; } else { output = input; + setbuf(output, NULL); } - /* - * print the prompt - */ - if (prompt) { - p = (char *) prompt; - do { - /* expand %u -> username, %h -> host */ - switch (*p) { - case '%': if (user && *(p+1) == 'u') { - (void) fputs(user, output); - p++; - break; - } else if (host && *(p+1) == 'h') { - (void) fputs(host, output); - p++; - break; - } - - default: (void) fputc(*p, output); - } - } while (*(++p)); - } + /* print the prompt */ + if (prompt) + fputs(prompt, output); /* rewind if necesary */ if (input == output) { -- 2.40.0