shell 支持退格
This commit is contained in:
parent
a41bd3ef2e
commit
32db19a03c
@ -54,15 +54,25 @@ char *readline(const char *prompt)
|
|||||||
c = getch();
|
c = getch();
|
||||||
if (c < 0)
|
if (c < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
buf[complement_time++] = c;
|
|
||||||
printf("%c", c);
|
|
||||||
if (c == '\r') {
|
if (c == '\r') {
|
||||||
|
// 回车
|
||||||
usys_putc('\n');
|
usys_putc('\n');
|
||||||
break;
|
break;
|
||||||
|
} else if (c == '\b' || c == 127) {
|
||||||
|
// 退格
|
||||||
|
if (i > 0) {
|
||||||
|
i--;
|
||||||
|
usys_putc('\b');
|
||||||
|
usys_putc(' ');
|
||||||
|
usys_putc('\b');
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
usys_putc(c);
|
||||||
}
|
}
|
||||||
|
buf[i++] = c;
|
||||||
}
|
}
|
||||||
|
buf[i] = '\0';
|
||||||
buf[complement_time - 1] = '\0';
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user