format-table: always underline header line
authorLennart Poettering <lennart@poettering.net>
Thu, 8 Nov 2018 20:39:28 +0000 (21:39 +0100)
committerLukáš Nykrýn <lnykryn@redhat.com>
Fri, 3 May 2019 10:30:21 +0000 (12:30 +0200)
(cherry picked from commit 30d98de00c68440ff4d77d851b4b3323c34027da)

Related: #1689832

src/basic/format-table.c

index 809a4be284c63262e637beef8698583ae160afcb..3fcb97475c8d8ba3f10f0558db30a503bed2ec77 100644 (file)
@@ -1343,15 +1343,22 @@ int table_print(Table *t, FILE *f) {
                                 field = buffer;
                         }
 
+                        if (row == t->data) /* underline header line fully, including the column separator */
+                                fputs(ansi_underline(), f);
+
                         if (j > 0)
                                 fputc(' ', f); /* column separator */
 
-                        if (d->color && colors_enabled())
+                        if (d->color && colors_enabled()) {
+                                if (row == t->data) /* first undo header underliner */
+                                        fputs(ANSI_NORMAL, f);
+
                                 fputs(d->color, f);
+                        }
 
                         fputs(field, f);
 
-                        if (d->color && colors_enabled())
+                        if (colors_enabled() && (d->color || row == t->data))
                                 fputs(ANSI_NORMAL, f);
                 }