mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
tty: vt: fix up tabstops properly
commit f1869a890c upstream.
Tabs on a console with long lines do not wrap properly, so correctly
account for the line length when computing the tab placement location.
Reported-by: James Holderness <j4_james@hotmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5c955c3cfb
commit
3832d40ef2
@@ -1725,7 +1725,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear)
|
||||
default_attr(vc);
|
||||
update_attr(vc);
|
||||
|
||||
vc->vc_tab_stop[0] = 0x01010100;
|
||||
vc->vc_tab_stop[0] =
|
||||
vc->vc_tab_stop[1] =
|
||||
vc->vc_tab_stop[2] =
|
||||
vc->vc_tab_stop[3] =
|
||||
@@ -1769,7 +1769,7 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c)
|
||||
vc->vc_pos -= (vc->vc_x << 1);
|
||||
while (vc->vc_x < vc->vc_cols - 1) {
|
||||
vc->vc_x++;
|
||||
if (vc->vc_tab_stop[vc->vc_x >> 5] & (1 << (vc->vc_x & 31)))
|
||||
if (vc->vc_tab_stop[7 & (vc->vc_x >> 5)] & (1 << (vc->vc_x & 31)))
|
||||
break;
|
||||
}
|
||||
vc->vc_pos += (vc->vc_x << 1);
|
||||
@@ -1829,7 +1829,7 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c)
|
||||
lf(vc);
|
||||
return;
|
||||
case 'H':
|
||||
vc->vc_tab_stop[vc->vc_x >> 5] |= (1 << (vc->vc_x & 31));
|
||||
vc->vc_tab_stop[7 & (vc->vc_x >> 5)] |= (1 << (vc->vc_x & 31));
|
||||
return;
|
||||
case 'Z':
|
||||
respond_ID(tty);
|
||||
@@ -2022,7 +2022,7 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c)
|
||||
return;
|
||||
case 'g':
|
||||
if (!vc->vc_par[0])
|
||||
vc->vc_tab_stop[vc->vc_x >> 5] &= ~(1 << (vc->vc_x & 31));
|
||||
vc->vc_tab_stop[7 & (vc->vc_x >> 5)] &= ~(1 << (vc->vc_x & 31));
|
||||
else if (vc->vc_par[0] == 3) {
|
||||
vc->vc_tab_stop[0] =
|
||||
vc->vc_tab_stop[1] =
|
||||
|
||||
Reference in New Issue
Block a user