vt: switch G0/1_charset to an array
authorJiri Slaby <jslaby@suse.cz>
Mon, 15 Jun 2020 07:48:37 +0000 (09:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 24 Jun 2020 15:08:31 +0000 (17:08 +0200)
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>
drivers/tty/vt/vt.c
include/linux/console_struct.h

index 729c7c8..4e79cda 100644 (file)
@@ -1743,9 +1743,7 @@ static void csi_m(struct vc_data *vc)
                          * Select primary font, don't display control chars if
                          * defined, don't set bit 8 on output.
                          */
-                       vc->vc_translate = set_translate(vc->state.charset == 0
-                                       ? vc->state.G0_charset
-                                       : vc->state.G1_charset, vc);
+                       vc->vc_translate = set_translate(vc->state.Gx_charset[vc->state.charset], vc);
                        vc->vc_disp_ctrl = 0;
                        vc->vc_toggle_meta = 0;
                        break;
@@ -2041,8 +2039,8 @@ static void restore_cur(struct vc_data *vc)
        memcpy(&vc->state, &vc->saved_state, sizeof(vc->state));
 
        gotoxy(vc, vc->state.x, vc->state.y);
-       vc->vc_translate = set_translate(vc->state.charset ? vc->state.G1_charset :
-                       vc->state.G0_charset, vc);
+       vc->vc_translate = set_translate(vc->state.Gx_charset[vc->state.charset],
+                       vc);
        update_attr(vc);
        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_priv             = EPecma;
        vc->vc_translate        = set_translate(LAT1_MAP, vc);
-       vc->state.G0_charset    = LAT1_MAP;
-       vc->state.G1_charset    = GRAF_MAP;
+       vc->state.Gx_charset[0] = LAT1_MAP;
+       vc->state.Gx_charset[1] = GRAF_MAP;
        vc->state.charset       = 0;
        vc->vc_need_wrap        = 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)
 {
-       unsigned char *charset = which == 0 ? &vc->state.G0_charset :
-               &vc->state.G1_charset;
+       unsigned char *charset = &vc->state.Gx_charset[which];
 
        switch (c) {
        case '0':
@@ -2168,12 +2165,12 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c)
                return;
        case 14:
                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;
                return;
        case 15:
                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;
                return;
        case 24: case 26:
index fa1abff..623e866 100644 (file)
@@ -34,8 +34,7 @@ enum vc_intensity {
  * @x: cursor's x-position
  * @y: cursor's y-position
  * @color: foreground & background colors
- * @G0_charset: what's G0 slot set to (like GRAF_MAP, LAT1_MAP)
- * @G1_charset: what's G1 slot set to (like GRAF_MAP, LAT1_MAP)
+ * @Gx_charset: what's G0/G1 slot set to (like GRAF_MAP, LAT1_MAP)
  * @charset: what character set to use (0=G0 or 1=G1)
  * @intensity: see enum vc_intensity for values
  * @reverse: reversed foreground/background colors
@@ -48,8 +47,7 @@ struct vc_state {
 
        unsigned char   color;
 
-       unsigned char   G0_charset;
-       unsigned char   G1_charset;
+       unsigned char   Gx_charset[2];
        unsigned int    charset         : 1;
 
        /* attribute flags */