2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-31 06:15:37 +00:00

the prompt is expanded before tgetpass is called

This commit is contained in:
Todd C. Miller
1998-11-03 20:03:31 +00:00
parent 1548a20d9a
commit b751a2b9c4

View File

@@ -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) {