diff options
Diffstat (limited to 'stage3/main.c')
-rw-r--r-- | stage3/main.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/stage3/main.c b/stage3/main.c index c8ff971..30f1bbd 100644 --- a/stage3/main.c +++ b/stage3/main.c @@ -33,13 +33,18 @@ void keyboard_handler() char c = keymap[e->data.scancode]; if (c != '\0') { - print_char(c); - - if (c == '\n') { + if (c == '\b') { + if (buffer.len > 0) { + print_char(c); + buffer.len--; + } + } else if (c == '\n') { + print_char(c); shell_run_cmd(buffer); buffer.len = 0; print(S("$ ")); } else { + print_char(c); if (buffer.len == cap) buffer.data = realloc(buffer.data, cap = cap ? cap*2 : 1); buffer.data[buffer.len++] = c; |