aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/n_tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/n_tty.c')
-rw-r--r--drivers/char/n_tty.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c
index a223823544bf..30b0426b3788 100644
--- a/drivers/char/n_tty.c
+++ b/drivers/char/n_tty.c
@@ -351,10 +351,12 @@ static int do_output_char(unsigned char c, struct tty_struct *tty, int space)
351 tty->column--; 351 tty->column--;
352 break; 352 break;
353 default: 353 default:
354 if (O_OLCUC(tty)) 354 if (!iscntrl(c)) {
355 c = toupper(c); 355 if (O_OLCUC(tty))
356 if (!iscntrl(c) && !is_continuation(c, tty)) 356 c = toupper(c);
357 tty->column++; 357 if (!is_continuation(c, tty))
358 tty->column++;
359 }
358 break; 360 break;
359 } 361 }
360 362
@@ -425,7 +427,9 @@ static ssize_t process_output_block(struct tty_struct *tty,
425 nr = space; 427 nr = space;
426 428
427 for (i = 0, cp = buf; i < nr; i++, cp++) { 429 for (i = 0, cp = buf; i < nr; i++, cp++) {
428 switch (*cp) { 430 unsigned char c = *cp;
431
432 switch (c) {
429 case '\n': 433 case '\n':
430 if (O_ONLRET(tty)) 434 if (O_ONLRET(tty))
431 tty->column = 0; 435 tty->column = 0;
@@ -447,10 +451,12 @@ static ssize_t process_output_block(struct tty_struct *tty,
447 tty->column--; 451 tty->column--;
448 break; 452 break;
449 default: 453 default:
450 if (O_OLCUC(tty)) 454 if (!iscntrl(c)) {
451 goto break_out; 455 if (O_OLCUC(tty))
452 if (!iscntrl(*cp)) 456 goto break_out;
453 tty->column++; 457 if (!is_continuation(c, tty))
458 tty->column++;
459 }
454 break; 460 break;
455 } 461 }
456 } 462 }