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 | |
| parent | e6402d1077499d741ea747bbaaba51856d00219b (diff) | |
ask-password: also accept Backspace as first keypress as silent mode switch
| -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;                  }          } | 
