summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-10 22:34:20 -0400
committerIan Moffett <ian@osmora.org>2025-10-10 22:34:20 -0400
commite9d5ccc0131ba96981d1b070f6054bafcc6c2d1f (patch)
treedc39a8e6dea29f2207dbb7b5d930f5c61c1d913c
parentd594e7264d740e5a316260e9408d6ab51b6adea9 (diff)
cmd: hush: Handle backspace on input
Signed-off-by: Ian Moffett <ian@osmora.org>
-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);