version 1.6, 1999/11/24 00:26:03 |
version 1.7, 1999/11/24 19:53:50 |
|
|
kill(getpid(), sig); |
kill(getpid(), sig); |
} |
} |
|
|
/* Reads a passphrase from /dev/tty with echo turned off. Returns the |
/* |
passphrase (allocated with xmalloc). Exits if EOF is encountered. |
* Reads a passphrase from /dev/tty with echo turned off. Returns the |
The passphrase if read from stdin if from_stdin is true (as is the |
* passphrase (allocated with xmalloc). Exits if EOF is encountered. The |
case with ssh-keygen). */ |
* passphrase if read from stdin if from_stdin is true (as is the case with |
|
* ssh-keygen). |
|
*/ |
|
|
char * |
char * |
read_passphrase(const char *prompt, int from_stdin) |
read_passphrase(const char *prompt, int from_stdin) |
|
|
if (from_stdin) |
if (from_stdin) |
f = stdin; |
f = stdin; |
else { |
else { |
/* Read the passphrase from /dev/tty to make it possible |
/* |
to ask it even when stdin has been redirected. */ |
* Read the passphrase from /dev/tty to make it possible to |
|
* ask it even when stdin has been redirected. |
|
*/ |
f = fopen("/dev/tty", "r"); |
f = fopen("/dev/tty", "r"); |
if (!f) { |
if (!f) { |
/* No controlling terminal and no DISPLAY. Nowhere to read. */ |
/* No controlling terminal and no DISPLAY. Nowhere to read. */ |
|
|
*strchr(buf, '\n') = 0; |
*strchr(buf, '\n') = 0; |
/* Allocate a copy of the passphrase. */ |
/* Allocate a copy of the passphrase. */ |
cp = xstrdup(buf); |
cp = xstrdup(buf); |
/* Clear the buffer so we don\'t leave copies of the passphrase |
/* |
laying around. */ |
* Clear the buffer so we don\'t leave copies of the passphrase |
|
* laying around. |
|
*/ |
memset(buf, 0, sizeof(buf)); |
memset(buf, 0, sizeof(buf)); |
/* Print a newline since the prompt probably didn\'t have one. */ |
/* Print a newline since the prompt probably didn\'t have one. */ |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |