chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e6402d1
)
ask-password: also accept Backspace as first keypress as silent mode switch
author
Lennart Poettering
<lennart@poettering.net>
Tue, 29 Mar 2011 16:32:46 +0000
(18:32 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Tue, 29 Mar 2011 16:32:46 +0000
(18:32 +0200)
src/ask-password-api.c
patch
|
blob
|
history
diff --git
a/src/ask-password-api.c
b/src/ask-password-api.c
index cb0559065d8ed4808ede95a3fd3d7e07d896823a..da967ab7a1a638b10163fef471755a2652809d05 100644
(file)
--- 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;
struct pollfd pollfd[2];
bool reset_tty = false;
bool silent_mode = false;
+ bool dirty = false;
enum {
POLL_TTY,
POLL_INOTIFY
enum {
POLL_TTY,
POLL_INOTIFY
@@
-182,6
+183,17
@@
int ask_password_tty(
backspace_chars(ttyfd, 1);
p--;
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);
} 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;
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 {
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);
if (!silent_mode && ttyfd >= 0)
loop_write(ttyfd, "*", 1, false);
+
+ dirty = true;
}
}
}
}