aboutsummaryrefslogtreecommitdiffstats
path: root/src/passphrase.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/passphrase.c')
-rw-r--r--src/passphrase.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/passphrase.c b/src/passphrase.c
index 43f1431..94922e4 100644
--- a/src/passphrase.c
+++ b/src/passphrase.c
@@ -64,6 +64,18 @@ char* passphrase_read(void)
break;
if (c != 0)
{
+#ifdef PASSPHRASE_STAR
+ if ((c == 8) || (c == 127))
+ {
+ if (len == 0)
+ continue;
+ printf("\033[D \033[D");
+ fflush(stdout);
+ *(rc + --len) = 0;
+ continue;
+ }
+ putchar('*');
+#endif
*(rc + len++) = c;
if (len == size)
if ((rc = realloc(rc, (size <<= 1L) * sizeof(char))) == NULL)
@@ -92,6 +104,9 @@ void passphrase_disable_echo(void)
tcgetattr(STDIN_FILENO, &stty);
saved_stty = stty;
stty.c_lflag &= ~ECHO;
+#ifdef PASSPHRASE_STAR
+ stty.c_lflag &= ~ICANON;
+#endif
tcsetattr(STDIN_FILENO, TCSAFLUSH, &stty);
#endif
}