]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-kmsg-reader: Fix doubly underlined text output
authorTomita Moeko <tomitamoeko@gmail.com>
Wed, 7 May 2025 13:59:28 +0000 (21:59 +0800)
committerRay Strode <halfline@gmail.com>
Wed, 18 Jun 2025 15:14:25 +0000 (15:14 +0000)
Currently plymouth applies Select Graphic Rendition (SGR) attribute 21
to disable bold text. However, per ECMA-48 [1], this attribute is for
doubly underlined text, not for disabling bold, resulting unintended
doubly underlined output on boot. Fix it by conditionally applying
standard bold attribute (SGR 1) on bold text.

[1] 8.3.117, https://www.ecma-international.org/wp-content/uploads/ECMA-48_5th_edition_june_1991.pdf

Signed-off-by: Tomita Moeko <tomitamoeko@gmail.com>
src/libply-splash-core/ply-kmsg-reader.c

index fb0ce5046a7ee92d701361b2c7b526b63ee85704..b225fde33181940a28ca56a876b834cd179305e4 100644 (file)
@@ -76,7 +76,7 @@ handle_kmsg_message (ply_kmsg_reader_t *kmsg_reader,
 
         bytes_read = read (fd, read_buffer, sizeof(read_buffer) - 1);
         if (bytes_read > 0) {
-                ply_terminal_style_attributes_t bold_enabled = PLY_TERMINAL_ATTRIBUTE_NO_BOLD;
+                bool bold_enabled = false;
                 ply_terminal_color_t color = PLY_TERMINAL_ATTRIBUTE_FOREGROUND_COLOR_OFFSET + PLY_TERMINAL_COLOR_DEFAULT;
                 char *fields, *field_prefix, *field_sequence, *field_timestamp, *message, *message_substr, *msgptr, *saveptr, *format_begin, *new_message;
                 int prefix, priority, facility;
@@ -116,7 +116,7 @@ handle_kmsg_message (ply_kmsg_reader_t *kmsg_reader,
                         return 0;
 
                 if (priority < LOG_ALERT)
-                        bold_enabled = PLY_TERMINAL_ATTRIBUTE_BOLD;
+                        bold_enabled = true;
 
                 switch (priority) {
                 case LOG_EMERG:
@@ -132,7 +132,7 @@ handle_kmsg_message (ply_kmsg_reader_t *kmsg_reader,
                         color = PLY_TERMINAL_ATTRIBUTE_FOREGROUND_COLOR_OFFSET + PLY_TERMINAL_COLOR_GREEN;
                         break;
                 }
-                asprintf (&format_begin, "\033[0;%i;%im", bold_enabled, color);
+                asprintf (&format_begin, bold_enabled ? "\033[0;1;%im" : "\033[0;%im", color);
 
                 message_substr = strtok_r (message, "\n", &saveptr);
                 while (message_substr != NULL) {