summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd/hush/hush.c12
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);