Fix ECHOE/ICANON behavior with erase

This commit is contained in:
Mark
2020-07-23 17:38:16 +03:00
parent 5fae591f40
commit 461effbfd1
+10 -17
View File
@@ -46,26 +46,19 @@ ssize_t line_read(struct chrdev *chr, void *buf, size_t pos, size_t lim) {
}
}
// TODO: ICANON
if (c == '\033') {
if (rem >= 2) {
*wr++ = '^';
*wr++ = '[';
}
rem -= 2;
rd += 2;
continue;
}
if (c == '\b' && (chr->tc.c_lflag & ECHOE)) {
if (c == '\b') {
if (rd) {
tty_puts(chr, "\033[D \033[D");
if (chr->tc.c_lflag & ECHOE) {
tty_puts(chr, "\033[D \033[D");
}
--wr;
++rem;
--rd;
if (chr->tc.c_iflag & ICANON) {
--wr;
++rem;
--rd;
continue;
}
}
continue;
}
*wr++ = c;