diff options
Diffstat (limited to 'crypt/mygetpass.c.texi')
-rw-r--r-- | crypt/mygetpass.c.texi | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/crypt/mygetpass.c.texi b/crypt/mygetpass.c.texi new file mode 100644 index 0000000..717d214 --- /dev/null +++ b/crypt/mygetpass.c.texi @@ -0,0 +1,25 @@ +#include <termios.h> +#include <stdio.h> + +ssize_t +my_getpass (char **lineptr, size_t *n, FILE *stream) +@{ + struct termios old, new; + int nread; + + /* @r{Turn echoing off and fail if we can't.} */ + if (tcgetattr (fileno (stream), &old) != 0) + return -1; + new = old; + new.c_lflag &= ~ECHO; + if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) + return -1; + + /* @r{Read the password.} */ + nread = getline (lineptr, n, stream); + + /* @r{Restore terminal.} */ + (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); + + return nread; +@} |