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: Jiri Slaby <jslaby@suse.cz> Link: https://lore.kernel.org/r/20200615074910.19267-5-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
b4d92b6575
commit
b70ec4d97f
@@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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 {
|
|||||||
* @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 {
|
|||||||
|
|
||||||
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 */
|
||||||
|
Reference in New Issue
Block a user