Commit b70ec4d9 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman

vt: switch G0/1_charset to an array

Declare Gx_charset[2] instead of G0_charset and G1_charset. It makes
the code simpler (without ternary operators).
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20200615074910.19267-5-jslaby@suse.czSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b4d92b65
...@@ -1743,9 +1743,7 @@ static void csi_m(struct vc_data *vc) ...@@ -1743,9 +1743,7 @@ static void csi_m(struct vc_data *vc)
* Select primary font, don't display control chars if * Select primary font, don't display control chars if
* defined, don't set bit 8 on output. * defined, don't set bit 8 on output.
*/ */
vc->vc_translate = set_translate(vc->state.charset == 0 vc->vc_translate = set_translate(vc->state.Gx_charset[vc->state.charset], vc);
? vc->state.G0_charset
: vc->state.G1_charset, vc);
vc->vc_disp_ctrl = 0; vc->vc_disp_ctrl = 0;
vc->vc_toggle_meta = 0; vc->vc_toggle_meta = 0;
break; break;
...@@ -2041,8 +2039,8 @@ static void restore_cur(struct vc_data *vc) ...@@ -2041,8 +2039,8 @@ static void restore_cur(struct vc_data *vc)
memcpy(&vc->state, &vc->saved_state, sizeof(vc->state)); memcpy(&vc->state, &vc->saved_state, sizeof(vc->state));
gotoxy(vc, vc->state.x, vc->state.y); gotoxy(vc, vc->state.x, vc->state.y);
vc->vc_translate = set_translate(vc->state.charset ? vc->state.G1_charset : vc->vc_translate = set_translate(vc->state.Gx_charset[vc->state.charset],
vc->state.G0_charset, vc); vc);
update_attr(vc); update_attr(vc);
vc->vc_need_wrap = 0; vc->vc_need_wrap = 0;
} }
...@@ -2059,8 +2057,8 @@ static void reset_terminal(struct vc_data *vc, int do_clear) ...@@ -2059,8 +2057,8 @@ static void reset_terminal(struct vc_data *vc, int do_clear)
vc->vc_state = ESnormal; vc->vc_state = ESnormal;
vc->vc_priv = EPecma; vc->vc_priv = EPecma;
vc->vc_translate = set_translate(LAT1_MAP, vc); vc->vc_translate = set_translate(LAT1_MAP, vc);
vc->state.G0_charset = LAT1_MAP; vc->state.Gx_charset[0] = LAT1_MAP;
vc->state.G1_charset = GRAF_MAP; vc->state.Gx_charset[1] = GRAF_MAP;
vc->state.charset = 0; vc->state.charset = 0;
vc->vc_need_wrap = 0; vc->vc_need_wrap = 0;
vc->vc_report_mouse = 0; vc->vc_report_mouse = 0;
...@@ -2105,8 +2103,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear) ...@@ -2105,8 +2103,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear)
static void vc_setGx(struct vc_data *vc, unsigned int which, int c) static void vc_setGx(struct vc_data *vc, unsigned int which, int c)
{ {
unsigned char *charset = which == 0 ? &vc->state.G0_charset : unsigned char *charset = &vc->state.Gx_charset[which];
&vc->state.G1_charset;
switch (c) { switch (c) {
case '0': case '0':
...@@ -2168,12 +2165,12 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c) ...@@ -2168,12 +2165,12 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c)
return; return;
case 14: case 14:
vc->state.charset = 1; vc->state.charset = 1;
vc->vc_translate = set_translate(vc->state.G1_charset, vc); vc->vc_translate = set_translate(vc->state.Gx_charset[1], vc);
vc->vc_disp_ctrl = 1; vc->vc_disp_ctrl = 1;
return; return;
case 15: case 15:
vc->state.charset = 0; vc->state.charset = 0;
vc->vc_translate = set_translate(vc->state.G0_charset, vc); vc->vc_translate = set_translate(vc->state.Gx_charset[0], vc);
vc->vc_disp_ctrl = 0; vc->vc_disp_ctrl = 0;
return; return;
case 24: case 26: case 24: case 26:
......
...@@ -34,8 +34,7 @@ enum vc_intensity { ...@@ -34,8 +34,7 @@ enum vc_intensity {
* @x: cursor's x-position * @x: cursor's x-position
* @y: cursor's y-position * @y: cursor's y-position
* @color: foreground & background colors * @color: foreground & background colors
* @G0_charset: what's G0 slot set to (like GRAF_MAP, LAT1_MAP) * @Gx_charset: what's G0/G1 slot set to (like GRAF_MAP, LAT1_MAP)
* @G1_charset: what's G1 slot set to (like GRAF_MAP, LAT1_MAP)
* @charset: what character set to use (0=G0 or 1=G1) * @charset: what character set to use (0=G0 or 1=G1)
* @intensity: see enum vc_intensity for values * @intensity: see enum vc_intensity for values
* @reverse: reversed foreground/background colors * @reverse: reversed foreground/background colors
...@@ -48,8 +47,7 @@ struct vc_state { ...@@ -48,8 +47,7 @@ struct vc_state {
unsigned char color; unsigned char color;
unsigned char G0_charset; unsigned char Gx_charset[2];
unsigned char G1_charset;
unsigned int charset : 1; unsigned int charset : 1;
/* attribute flags */ /* attribute flags */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment