summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/boot/efi/sub.c6
-rw-r--r--sys/src/boot/pc/sub.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/src/boot/efi/sub.c b/sys/src/boot/efi/sub.c
index c4ab44512..1359b199c 100644
--- a/sys/src/boot/efi/sub.c
+++ b/sys/src/boot/efi/sub.c
@@ -110,13 +110,15 @@ readline(void *f, char buf[64])
if(f == nil){
while((*p = getc()) == 0)
;
+ if(p == buf && (*p == '\b' || strchr(white, *p) != nil))
+ continue;
putc(*p);
if(*p == '\r')
putc('\n');
- else if(*p == '\b' && p > buf){
+ else if(*p == '\b'){
+ p--;
putc(' ');
putc('\b');
- p--;
continue;
}
}else if(read(f, p, 1) <= 0)
diff --git a/sys/src/boot/pc/sub.c b/sys/src/boot/pc/sub.c
index caa919d98..8d69ddc77 100644
--- a/sys/src/boot/pc/sub.c
+++ b/sys/src/boot/pc/sub.c
@@ -133,13 +133,15 @@ readline(void *f, char buf[64])
if(f == nil){
while((*p = getc()) == 0)
;
+ if(p == buf && (*p == '\b' || strchr(white, *p) != nil))
+ continue;
putc(*p);
if(*p == '\r')
putc('\n');
- else if(*p == '\b' && p > buf){
+ else if(*p == '\b'){
+ p--;
putc(' ');
putc('\b');
- p--;
continue;
}
}else if(read(f, p, 1) <= 0)