We continue cleaning up do_con_write. This (hopefully) makes the
inversion code obvious.

Signed-off-by: Jiri Slaby <jsl...@suse.cz>
---
 drivers/tty/vt/vt.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 5004242d601b..bf171bb1d2fd 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -2658,6 +2658,21 @@ static int vc_translate_unicode(struct vc_data *vc, int 
c, bool *rescan)
        return -1;
 }
 
+static inline unsigned char vc_invert_attr(const struct vc_data *vc)
+{
+       if (!vc->vc_can_do_color)
+               return vc->vc_attr ^ 0x08;
+
+       if (vc->vc_hi_font_mask == 0x100)
+               return   (vc->vc_attr & 0x11) |
+                       ((vc->vc_attr & 0xe0) >> 4) |
+                       ((vc->vc_attr & 0x0e) << 4);
+
+       return   (vc->vc_attr & 0x88) |
+               ((vc->vc_attr & 0x70) >> 4) |
+               ((vc->vc_attr & 0x07) << 4);
+}
+
 /* acquires console_lock */
 static int do_con_write(struct tty_struct *tty, const unsigned char *buf, int 
count)
 {
@@ -2776,14 +2791,7 @@ static int do_con_write(struct tty_struct *tty, const 
unsigned char *buf, int co
                        if (!inverse) {
                                vc_attr = vc->vc_attr;
                        } else {
-                               /* invert vc_attr */
-                               if (!vc->vc_can_do_color) {
-                                       vc_attr = (vc->vc_attr) ^ 0x08;
-                               } else if (vc->vc_hi_font_mask == 0x100) {
-                                       vc_attr = ((vc->vc_attr) & 0x11) | 
(((vc->vc_attr) & 0xe0) >> 4) | (((vc->vc_attr) & 0x0e) << 4);
-                               } else {
-                                       vc_attr = ((vc->vc_attr) & 0x88) | 
(((vc->vc_attr) & 0x70) >> 4) | (((vc->vc_attr) & 0x07) << 4);
-                               }
+                               vc_attr = vc_invert_attr(vc);
                                con_flush(vc, draw_from, draw_to, &draw_x);
                        }
 
-- 
2.27.0

Reply via email to