| Index: fusl/src/legacy/getpass.c
|
| diff --git a/fusl/src/legacy/getpass.c b/fusl/src/legacy/getpass.c
|
| index 15ab9851e8f886d52187cf8910619b08f63cb5bc..1c1c831d2a833514b680d2dc6ff61f75cf199e74 100644
|
| --- a/fusl/src/legacy/getpass.c
|
| +++ b/fusl/src/legacy/getpass.c
|
| @@ -5,36 +5,37 @@
|
| #include <fcntl.h>
|
| #include <string.h>
|
|
|
| -char *getpass(const char *prompt)
|
| -{
|
| - int fd;
|
| - struct termios s, t;
|
| - ssize_t l;
|
| - static char password[128];
|
| -
|
| - if ((fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_CLOEXEC)) < 0) return 0;
|
| -
|
| - tcgetattr(fd, &t);
|
| - s = t;
|
| - t.c_lflag &= ~(ECHO|ISIG);
|
| - t.c_lflag |= ICANON;
|
| - t.c_iflag &= ~(INLCR|IGNCR);
|
| - t.c_iflag |= ICRNL;
|
| - tcsetattr(fd, TCSAFLUSH, &t);
|
| - tcdrain(fd);
|
| -
|
| - dprintf(fd, "%s", prompt);
|
| -
|
| - l = read(fd, password, sizeof password);
|
| - if (l >= 0) {
|
| - if (l > 0 && password[l-1] == '\n') l--;
|
| - password[l] = 0;
|
| - }
|
| -
|
| - tcsetattr(fd, TCSAFLUSH, &s);
|
| -
|
| - dprintf(fd, "\n");
|
| - close(fd);
|
| -
|
| - return l<0 ? 0 : password;
|
| +char* getpass(const char* prompt) {
|
| + int fd;
|
| + struct termios s, t;
|
| + ssize_t l;
|
| + static char password[128];
|
| +
|
| + if ((fd = open("/dev/tty", O_RDWR | O_NOCTTY | O_CLOEXEC)) < 0)
|
| + return 0;
|
| +
|
| + tcgetattr(fd, &t);
|
| + s = t;
|
| + t.c_lflag &= ~(ECHO | ISIG);
|
| + t.c_lflag |= ICANON;
|
| + t.c_iflag &= ~(INLCR | IGNCR);
|
| + t.c_iflag |= ICRNL;
|
| + tcsetattr(fd, TCSAFLUSH, &t);
|
| + tcdrain(fd);
|
| +
|
| + dprintf(fd, "%s", prompt);
|
| +
|
| + l = read(fd, password, sizeof password);
|
| + if (l >= 0) {
|
| + if (l > 0 && password[l - 1] == '\n')
|
| + l--;
|
| + password[l] = 0;
|
| + }
|
| +
|
| + tcsetattr(fd, TCSAFLUSH, &s);
|
| +
|
| + dprintf(fd, "\n");
|
| + close(fd);
|
| +
|
| + return l < 0 ? 0 : password;
|
| }
|
|
|