]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libsmartcols: don't add blank padding after left aligned title
authorKarel Zak <kzak@redhat.com>
Tue, 12 Dec 2017 12:19:36 +0000 (13:19 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 14 Dec 2017 14:49:09 +0000 (15:49 +0100)
Let's use the same semantic for the title as for the last column in
the table. If aligned on left, table is not "maxout" and title padding
symbol is undefined (or blank) then keep title as short as possible.

Addresses: https://github.com/karelzak/util-linux/issues/549
Signed-off-by: Karel Zak <kzak@redhat.com>
libsmartcols/src/table_print.c

index 6acaf9b4e868909c37fc3ecf67ab6b88302835be..2e1c55ee11ed5ed5face744c44041536531adcd7 100644 (file)
@@ -761,7 +761,7 @@ static int print_title(struct libscols_table *tb)
 {
        int rc, color = 0;
        mbs_align_t align;
-       size_t width, bufsz, titlesz;
+       size_t width, len = 0, bufsz, titlesz;
        char *title = NULL, *buf = NULL;
 
        assert(tb);
@@ -773,7 +773,7 @@ static int print_title(struct libscols_table *tb)
 
        /* encode data */
        if (tb->no_encode) {
-               bufsz = strlen(tb->title.data) + 1;
+               len = bufsz = strlen(tb->title.data) + 1;
                buf = strdup(tb->title.data);
                if (!buf) {
                        rc = -ENOMEM;
@@ -791,8 +791,8 @@ static int print_title(struct libscols_table *tb)
                        goto done;
                }
 
-               if (!mbs_safe_encode_to_buffer(tb->title.data, &bufsz, buf, NULL) ||
-                   !bufsz || bufsz == (size_t) -1) {
+               if (!mbs_safe_encode_to_buffer(tb->title.data, &len, buf, NULL) ||
+                   !len || len == (size_t) -1) {
                        rc = -EINVAL;
                        goto done;
                }
@@ -818,6 +818,14 @@ static int print_title(struct libscols_table *tb)
        case SCOLS_CELL_FL_LEFT:
        default:
                align = MBS_ALIGN_LEFT;
+               /*
+                * Don't print extra blank chars after the title if on left
+                * (that's same as we use for the last column in the table).
+                */
+               if (len < width
+                   && !scols_table_is_maxout(tb)
+                   && isblank(*titlepadding_symbol(tb)))
+                       width = len;
                break;
 
        }