9boot: don't let user erase the prompt (thanks mischief)
This commit is contained in:
parent
4080322dc9
commit
ed41dd5b28
2 changed files with 8 additions and 4 deletions
|
@ -110,13 +110,15 @@ readline(void *f, char buf[64])
|
||||||
if(f == nil){
|
if(f == nil){
|
||||||
while((*p = getc()) == 0)
|
while((*p = getc()) == 0)
|
||||||
;
|
;
|
||||||
|
if(p == buf && (*p == '\b' || strchr(white, *p) != nil))
|
||||||
|
continue;
|
||||||
putc(*p);
|
putc(*p);
|
||||||
if(*p == '\r')
|
if(*p == '\r')
|
||||||
putc('\n');
|
putc('\n');
|
||||||
else if(*p == '\b' && p > buf){
|
else if(*p == '\b'){
|
||||||
|
p--;
|
||||||
putc(' ');
|
putc(' ');
|
||||||
putc('\b');
|
putc('\b');
|
||||||
p--;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}else if(read(f, p, 1) <= 0)
|
}else if(read(f, p, 1) <= 0)
|
||||||
|
|
|
@ -133,13 +133,15 @@ readline(void *f, char buf[64])
|
||||||
if(f == nil){
|
if(f == nil){
|
||||||
while((*p = getc()) == 0)
|
while((*p = getc()) == 0)
|
||||||
;
|
;
|
||||||
|
if(p == buf && (*p == '\b' || strchr(white, *p) != nil))
|
||||||
|
continue;
|
||||||
putc(*p);
|
putc(*p);
|
||||||
if(*p == '\r')
|
if(*p == '\r')
|
||||||
putc('\n');
|
putc('\n');
|
||||||
else if(*p == '\b' && p > buf){
|
else if(*p == '\b'){
|
||||||
|
p--;
|
||||||
putc(' ');
|
putc(' ');
|
||||||
putc('\b');
|
putc('\b');
|
||||||
p--;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}else if(read(f, p, 1) <= 0)
|
}else if(read(f, p, 1) <= 0)
|
||||||
|
|
Loading…
Reference in a new issue