summaryrefslogtreecommitdiffstats
path: root/drivers/tty/vt
diff options
context:
space:
mode:
authorJiri Slaby (SUSE) <jirislaby@kernel.org>2024-02-02 07:56:04 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-02-06 15:37:39 +0100
commit798d8b1cfecc45ede0d32ee1375bae3c39649d7d (patch)
tree9cda27a4f253b63ef7046fbdb44ee2f073293c96 /drivers/tty/vt
parenttty: vt: handle CSI+[ inside preexisting switch-case (diff)
downloadlinux-798d8b1cfecc45ede0d32ee1375bae3c39649d7d.tar.xz
linux-798d8b1cfecc45ede0d32ee1375bae3c39649d7d.zip
tty: vt: add new helper for reseting vc parameters
The code to reset the vc parameter parsing is repeated on two locations. Create a helper vc_reset_params() and use it on both of them. And instead of a 'for' loop to clear the array of parameters, use simpler memset(). Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org> Link: https://lore.kernel.org/r/20240202065608.14019-19-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/vt')
-rw-r--r--drivers/tty/vt/vt.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 4d020a9967a2..b0f691d79bf2 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -2548,6 +2548,12 @@ static void csi_ECMA(struct tty_struct *tty, struct vc_data *vc, u8 c)
}
+static void vc_reset_params(struct vc_data *vc)
+{
+ memset(vc->vc_par, 0, sizeof(vc->vc_par));
+ vc->vc_npar = 0;
+}
+
/* console_lock is held */
static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, u8 c)
{
@@ -2568,9 +2574,7 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, u8 c)
return;
case ESnonstd: /* ESC ] aka OSC */
if (c=='P') { /* palette escape sequence */
- for (vc->vc_npar = 0; vc->vc_npar < NPAR; vc->vc_npar++)
- vc->vc_par[vc->vc_npar] = 0;
- vc->vc_npar = 0;
+ vc_reset_params(vc);
vc->vc_state = ESpalette;
return;
} else if (c=='R') { /* reset palette */
@@ -2599,9 +2603,8 @@ static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, u8 c)
vc->vc_state = ESnormal;
return;
case ESsquare: /* ESC [ aka CSI, parameters or modifiers expected */
- for (vc->vc_npar = 0; vc->vc_npar < NPAR; vc->vc_npar++)
- vc->vc_par[vc->vc_npar] = 0;
- vc->vc_npar = 0;
+ vc_reset_params(vc);
+
vc->vc_state = ESgetpars;
switch (c) {
case '[': /* Function key */