- while (count < len) {
- pwait(&lx_reader);
-
- if (ttychr < 0x1B) {
- // ASCII control codes
- switch (ttychr) {
- case TCINTR:
- fifo_clear(&console->input);
- return 0;
- case TCBS:
- if (fifo_backone(&console->input)) {
- console_write_char(ttychr);
- }
- continue;
- case TCLF:
- case TCCR:
- goto proceed;
- default:
- break;
- }
- print_control_code(ttychr);
- continue;
- }
-
- proceed:
- console_write_char(ttychr);
- if (!fifo_putone(&console->input, ttychr) || ttychr == '\n') {
- break;
- }
- }