diff options
author | Jiri Slaby <jslaby@suse.cz> | 2020-06-15 09:48:48 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-06-24 17:08:32 +0200 |
commit | a4236348f4ada19e7f88b631149561bbec275d75 (patch) | |
tree | f114520641a277b773a5efb5bb7f4f19944827c8 /drivers/tty/vt | |
parent | vt: move rescan_last_byte label earlier (diff) | |
download | linux-a4236348f4ada19e7f88b631149561bbec275d75.tar.xz linux-a4236348f4ada19e7f88b631149561bbec275d75.zip |
vc: move translation out of do_con_write
Now that we reordered the code and the label, we can eliminate the
translation into a separate function. We call it vc_translate here.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20200615074910.19267-16-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/vt')
-rw-r--r-- | drivers/tty/vt/vt.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 93ad7e004900..0f61dc360067 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -2658,6 +2658,19 @@ need_more_bytes: return -1; } +static int vc_translate(struct vc_data *vc, int *c, bool *rescan) +{ + /* Do no translation at all in control states */ + if (vc->vc_state != ESnormal) + return *c; + + if (vc->vc_utf && !vc->vc_disp_ctrl) + return *c = vc_translate_unicode(vc, *c, rescan); + + /* no utf or alternate charset mode */ + return vc_translate_ascii(vc, *c); +} + static inline unsigned char vc_invert_attr(const struct vc_data *vc) { if (!vc->vc_can_do_color) @@ -2726,16 +2739,9 @@ rescan_last_byte: inverse = false; width = 1; - /* Do no translation at all in control states */ - if (vc->vc_state != ESnormal) { - tc = c; - } else if (vc->vc_utf && !vc->vc_disp_ctrl) { - tc = c = vc_translate_unicode(vc, c, &rescan); - if (tc == -1) - continue; - } else { /* no utf or alternate charset mode */ - tc = vc_translate_ascii(vc, c); - } + tc = vc_translate(vc, &c, &rescan); + if (tc == -1) + continue; param.c = tc; if (atomic_notifier_call_chain(&vt_notifier_list, VT_PREWRITE, |