diff options
| -rw-r--r-- | sys/src/boot/pc/sub.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/src/boot/pc/sub.c b/sys/src/boot/pc/sub.c index 91b407e02..70138377a 100644 --- a/sys/src/boot/pc/sub.c +++ b/sys/src/boot/pc/sub.c @@ -105,7 +105,7 @@ readline(void *f, char buf[64]) do{ if(!f) putc('>'); - while(p < buf + 64-1){ + for(;;){ if(!f){ putc(*p = getc()); if(*p == '\r') @@ -116,10 +116,18 @@ readline(void *f, char buf[64]) } }else if(read(f, p, 1) <= 0) return 0; - if(p == buf && strchr(white, *p)) - continue; if(strchr(crnl, *p)) break; + if(p == buf && strchr(white, *p)) + continue; /* whitespace on start of line */ + if(p >= buf + 64-1){ + if(!f){ + putc('\b'); + putc(' '); + putc('\b'); + } + continue; /* line full do not advance */ + } p++; } while(p > buf && strchr(white, p[-1])) |
