diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-03-29 18:32:46 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-03-29 18:32:46 +0200 |
commit | 441dfe092acb0f283f7712a80e144b4392b526a0 (patch) | |
tree | d3c6c601895bfb13c04646182fbe3b6eb2f146f9 /src/ask-password-api.c | |
parent | e6402d1077499d741ea747bbaaba51856d00219b (diff) |
ask-password: also accept Backspace as first keypress as silent mode switch
Diffstat (limited to 'src/ask-password-api.c')
-rw-r--r-- | src/ask-password-api.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ask-password-api.c b/src/ask-password-api.c index cb0559065d..da967ab7a1 100644 --- a/src/ask-password-api.c +++ b/src/ask-password-api.c @@ -61,6 +61,7 @@ int ask_password_tty( struct pollfd pollfd[2]; bool reset_tty = false; bool silent_mode = false; + bool dirty = false; enum { POLL_TTY, POLL_INOTIFY @@ -182,6 +183,17 @@ int ask_password_tty( backspace_chars(ttyfd, 1); p--; + } else if (!dirty && !silent_mode) { + + silent_mode = true; + + /* There are two ways to enter silent + * mode. Either by pressing backspace + * as first key (and only as first key), + * or ... */ + if (ttyfd >= 0) + loop_write(ttyfd, "(no echo) ", 10, false); + } else if (ttyfd >= 0) loop_write(ttyfd, "\a", 1, false); @@ -190,6 +202,8 @@ int ask_password_tty( backspace_chars(ttyfd, p); silent_mode = true; + /* ... or by pressing TAB at any time. */ + if (ttyfd >= 0) loop_write(ttyfd, "(no echo) ", 10, false); } else { @@ -197,6 +211,8 @@ int ask_password_tty( if (!silent_mode && ttyfd >= 0) loop_write(ttyfd, "*", 1, false); + + dirty = true; } } |