Commit 09e7f9f6 authored by Jiri Slaby (SUSE)'s avatar Jiri Slaby (SUSE) Committed by Greg Kroah-Hartman

tty: vt: define an enum for CSI+m codes

It's always confusing to read all those case 0:, case 1: etc. in csi_*
handlers. Define enum entries for all those constants in CSI+m and use
them in csi_m().
Signed-off-by: default avatar"Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Tested-by: Helge Deller <deller@gmx.de> # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-10-jirislaby@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d4c0c481
...@@ -1676,6 +1676,39 @@ static int vc_t416_color(struct vc_data *vc, int i, ...@@ -1676,6 +1676,39 @@ static int vc_t416_color(struct vc_data *vc, int i,
return i; return i;
} }
enum {
CSI_m_DEFAULT = 0,
CSI_m_BOLD = 1,
CSI_m_HALF_BRIGHT = 2,
CSI_m_ITALIC = 3,
CSI_m_UNDERLINE = 4,
CSI_m_BLINK = 5,
CSI_m_REVERSE = 7,
CSI_m_PRI_FONT = 10,
CSI_m_ALT_FONT1 = 11,
CSI_m_ALT_FONT2 = 12,
CSI_m_DOUBLE_UNDERLINE = 21,
CSI_m_NORMAL_INTENSITY = 22,
CSI_m_NO_ITALIC = 23,
CSI_m_NO_UNDERLINE = 24,
CSI_m_NO_BLINK = 25,
CSI_m_NO_REVERSE = 27,
CSI_m_FG_COLOR_BEG = 30,
CSI_m_FG_COLOR_END = 37,
CSI_m_FG_COLOR = 38,
CSI_m_DEFAULT_FG_COLOR = 39,
CSI_m_BG_COLOR_BEG = 40,
CSI_m_BG_COLOR_END = 47,
CSI_m_BG_COLOR = 48,
CSI_m_DEFAULT_BG_COLOR = 49,
CSI_m_BRIGHT_FG_COLOR_BEG = 90,
CSI_m_BRIGHT_FG_COLOR_END = 97,
CSI_m_BRIGHT_FG_COLOR_OFF = CSI_m_BRIGHT_FG_COLOR_BEG - CSI_m_FG_COLOR_BEG,
CSI_m_BRIGHT_BG_COLOR_BEG = 100,
CSI_m_BRIGHT_BG_COLOR_END = 107,
CSI_m_BRIGHT_BG_COLOR_OFF = CSI_m_BRIGHT_BG_COLOR_BEG - CSI_m_BG_COLOR_BEG,
};
/* console_lock is held */ /* console_lock is held */
static void csi_m(struct vc_data *vc) static void csi_m(struct vc_data *vc)
{ {
...@@ -1683,33 +1716,33 @@ static void csi_m(struct vc_data *vc) ...@@ -1683,33 +1716,33 @@ static void csi_m(struct vc_data *vc)
for (i = 0; i <= vc->vc_npar; i++) for (i = 0; i <= vc->vc_npar; i++)
switch (vc->vc_par[i]) { switch (vc->vc_par[i]) {
case 0: /* all attributes off */ case CSI_m_DEFAULT: /* all attributes off */
default_attr(vc); default_attr(vc);
break; break;
case 1: case CSI_m_BOLD:
vc->state.intensity = VCI_BOLD; vc->state.intensity = VCI_BOLD;
break; break;
case 2: case CSI_m_HALF_BRIGHT:
vc->state.intensity = VCI_HALF_BRIGHT; vc->state.intensity = VCI_HALF_BRIGHT;
break; break;
case 3: case CSI_m_ITALIC:
vc->state.italic = true; vc->state.italic = true;
break; break;
case 21: case CSI_m_DOUBLE_UNDERLINE:
/* /*
* No console drivers support double underline, so * No console drivers support double underline, so
* convert it to a single underline. * convert it to a single underline.
*/ */
case 4: case CSI_m_UNDERLINE:
vc->state.underline = true; vc->state.underline = true;
break; break;
case 5: case CSI_m_BLINK:
vc->state.blink = true; vc->state.blink = true;
break; break;
case 7: case CSI_m_REVERSE:
vc->state.reverse = true; vc->state.reverse = true;
break; break;
case 10: /* ANSI X3.64-1979 (SCO-ish?) case CSI_m_PRI_FONT: /* ANSI X3.64-1979 (SCO-ish?)
* 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.
*/ */
...@@ -1717,7 +1750,7 @@ static void csi_m(struct vc_data *vc) ...@@ -1717,7 +1750,7 @@ static void csi_m(struct vc_data *vc)
vc->vc_disp_ctrl = 0; vc->vc_disp_ctrl = 0;
vc->vc_toggle_meta = 0; vc->vc_toggle_meta = 0;
break; break;
case 11: /* ANSI X3.64-1979 (SCO-ish?) case CSI_m_ALT_FONT1: /* ANSI X3.64-1979 (SCO-ish?)
* Select first alternate font, lets chars < 32 be * Select first alternate font, lets chars < 32 be
* displayed as ROM chars. * displayed as ROM chars.
*/ */
...@@ -1725,7 +1758,7 @@ static void csi_m(struct vc_data *vc) ...@@ -1725,7 +1758,7 @@ static void csi_m(struct vc_data *vc)
vc->vc_disp_ctrl = 1; vc->vc_disp_ctrl = 1;
vc->vc_toggle_meta = 0; vc->vc_toggle_meta = 0;
break; break;
case 12: /* ANSI X3.64-1979 (SCO-ish?) case CSI_m_ALT_FONT2: /* ANSI X3.64-1979 (SCO-ish?)
* Select second alternate font, toggle high bit * Select second alternate font, toggle high bit
* before displaying as ROM char. * before displaying as ROM char.
*/ */
...@@ -1733,47 +1766,54 @@ static void csi_m(struct vc_data *vc) ...@@ -1733,47 +1766,54 @@ static void csi_m(struct vc_data *vc)
vc->vc_disp_ctrl = 1; vc->vc_disp_ctrl = 1;
vc->vc_toggle_meta = 1; vc->vc_toggle_meta = 1;
break; break;
case 22: case CSI_m_NORMAL_INTENSITY:
vc->state.intensity = VCI_NORMAL; vc->state.intensity = VCI_NORMAL;
break; break;
case 23: case CSI_m_NO_ITALIC:
vc->state.italic = false; vc->state.italic = false;
break; break;
case 24: case CSI_m_NO_UNDERLINE:
vc->state.underline = false; vc->state.underline = false;
break; break;
case 25: case CSI_m_NO_BLINK:
vc->state.blink = false; vc->state.blink = false;
break; break;
case 27: case CSI_m_NO_REVERSE:
vc->state.reverse = false; vc->state.reverse = false;
break; break;
case 38: case CSI_m_FG_COLOR:
i = vc_t416_color(vc, i, rgb_foreground); i = vc_t416_color(vc, i, rgb_foreground);
break; break;
case 48: case CSI_m_BG_COLOR:
i = vc_t416_color(vc, i, rgb_background); i = vc_t416_color(vc, i, rgb_background);
break; break;
case 39: case CSI_m_DEFAULT_FG_COLOR:
vc->state.color = (vc->vc_def_color & 0x0f) | vc->state.color = (vc->vc_def_color & 0x0f) |
(vc->state.color & 0xf0); (vc->state.color & 0xf0);
break; break;
case 49: case CSI_m_DEFAULT_BG_COLOR:
vc->state.color = (vc->vc_def_color & 0xf0) | vc->state.color = (vc->vc_def_color & 0xf0) |
(vc->state.color & 0x0f); (vc->state.color & 0x0f);
break; break;
default: default:
if (vc->vc_par[i] >= 90 && vc->vc_par[i] <= 107) { if (vc->vc_par[i] >= CSI_m_BRIGHT_FG_COLOR_BEG &&
if (vc->vc_par[i] < 100) vc->vc_par[i] <= CSI_m_BRIGHT_BG_COLOR_END) {
if (vc->vc_par[i] < CSI_m_BRIGHT_BG_COLOR_BEG)
vc->state.intensity = VCI_BOLD; vc->state.intensity = VCI_BOLD;
vc->vc_par[i] -= 60; vc->vc_par[i] -= CSI_m_BRIGHT_FG_COLOR_OFF;
} }
if (vc->vc_par[i] >= 30 && vc->vc_par[i] <= 37) if (vc->vc_par[i] >= CSI_m_FG_COLOR_BEG &&
vc->state.color = color_table[vc->vc_par[i] - 30] vc->vc_par[i] <= CSI_m_FG_COLOR_END) {
| (vc->state.color & 0xf0); vc->vc_par[i] -= CSI_m_FG_COLOR_BEG;
else if (vc->vc_par[i] >= 40 && vc->vc_par[i] <= 47) vc->state.color = color_table[vc->vc_par[i]] |
vc->state.color = (color_table[vc->vc_par[i] - 40] << 4) (vc->state.color & 0xf0);
| (vc->state.color & 0x0f); } else if (vc->vc_par[i] >= CSI_m_BG_COLOR_BEG &&
vc->vc_par[i] <= CSI_m_BG_COLOR_END) {
vc->vc_par[i] -= CSI_m_BG_COLOR_BEG;
vc->state.color = (color_table[vc->vc_par[i]] << 4) |
(vc->state.color & 0x0f);
}
break; break;
} }
update_attr(vc); update_attr(vc);
......
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