diff options
-rw-r--r-- | src/cmd/hush/hush.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/hush/hush.c b/src/cmd/hush/hush.c index ade7b4e..bd6ca6f 100644 --- a/src/cmd/hush/hush.c +++ b/src/cmd/hush/hush.c @@ -72,6 +72,18 @@ read_input(char *buf, size_t maxlen) continue; } + /* Don't overwrite prompt */ + if (c == '\b' && i == 0) { + continue; + } + + /* Is this a backspace? */ + if (c == '\b' && i > 0) { + buf[--i] = '\0'; + write(STDOUT_FILENO, &c, 1); + continue; + } + if (c != '\n' && i < maxlen) { buf[i++] = c; write(STDOUT_FILENO, &c, 1); |