Skip to content
Snippets Groups Projects
table-drop-trailing-white-spaces-of-the-last-cell-in-row.patch 8.3 KiB
Newer Older
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Tue, 2 Feb 2021 01:47:58 +0900
Subject: table: drop trailing white spaces of the last cell in row

Fixes #18415.

(cherry picked from commit 71894e18313e41a72cecdc77fea5037f95d6903f)
---
 src/shared/format-table.c    |  6 ++++++
 src/test/test-format-table.c | 40 ++++++++++++++++++++--------------------
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/shared/format-table.c b/src/shared/format-table.c
index a13a198..2dc95e9 100644
--- a/src/shared/format-table.c
+++ b/src/shared/format-table.c
@@ -2155,6 +2155,12 @@ int table_print(Table *t, FILE *f) {
                                                 if (!aligned)
                                                         return -ENOMEM;
 
+                                                /* Drop trailing white spaces of last column when no cosmetics is set. */
+                                                if (j == display_columns - 1 &&
+                                                    (!colors_enabled() || !table_data_color(d)) &&
+                                                    (!urlify_enabled() || !d->url))
+                                                        delete_trailing_chars(aligned, NULL);
+
                                                 free_and_replace(buffer, aligned);
                                                 field = buffer;
                                         }
diff --git a/src/test/test-format-table.c b/src/test/test-format-table.c
index 24ee1df..b2943e6 100644
--- a/src/test/test-format-table.c
+++ b/src/test/test-format-table.c
@@ -29,7 +29,7 @@ static void test_issue_9549(void) {
 
         printf("%s\n", formatted);
         assert_se(streq(formatted,
-                        "NAME  TYPE RO  USAGE CREATED                    MODIFIED                   \n"
+                        "NAME  TYPE RO  USAGE CREATED                    MODIFIED\n"
                         "foooo raw  no 673.6M Wed 2018-07-11 00:10:33 J… Wed 2018-07-11 00:16:00 JST\n"
                         ));
 }
@@ -72,7 +72,7 @@ static void test_multiline(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"));
+                        "lines     \n"));
         formatted = mfree(formatted);
 
         table_set_cell_height_max(table, (size_t) -1);
@@ -82,7 +82,7 @@ static void test_multiline(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"));
+                        "lines     \n"));
         formatted = mfree(formatted);
 
         assert_se(table_add_many(table,
@@ -123,7 +123,7 @@ static void test_multiline(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"
+                        "lines     \n"
                         "short         a\n"
                         "           pair\n"
                         "short2        a\n"
@@ -138,7 +138,7 @@ static void test_multiline(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"
+                        "lines     \n"
                         "short         a\n"
                         "           pair\n"
                         "short2        a\n"
@@ -186,7 +186,7 @@ static void test_strv(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"));
+                        "lines     \n"));
         formatted = mfree(formatted);
 
         table_set_cell_height_max(table, (size_t) -1);
@@ -196,7 +196,7 @@ static void test_strv(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"));
+                        "lines     \n"));
         formatted = mfree(formatted);
 
         assert_se(table_add_many(table,
@@ -237,7 +237,7 @@ static void test_strv(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"
+                        "lines     \n"
                         "short         a\n"
                         "           pair\n"
                         "short2        a\n"
@@ -252,7 +252,7 @@ static void test_strv(void) {
                         "FOO         BAR\n"
                         "three       two\n"
                         "different lines\n"
-                        "lines          \n"
+                        "lines     \n"
                         "short         a\n"
                         "           pair\n"
                         "short2        a\n"
@@ -333,7 +333,7 @@ static void test_strv_wrapped(void) {
         assert_se(streq(formatted,
                         "FOO                           BAR\n"
                         "three different         two lines\n"
-                        "lines                            \n"
+                        "lines           \n"
                         "short                      a pair\n"
                         "short2          a eight line ćęłł\n"
                         "                 ___5___ ___6___…\n"));
@@ -345,7 +345,7 @@ static void test_strv_wrapped(void) {
         assert_se(streq(formatted,
                         "FOO                           BAR\n"
                         "three different         two lines\n"
-                        "lines                            \n"
+                        "lines           \n"
                         "short                      a pair\n"
                         "short2          a eight line ćęłł\n"
                         "                  ___5___ ___6___\n"
@@ -358,7 +358,7 @@ static void test_strv_wrapped(void) {
         assert_se(streq(formatted,
                         "FOO                           BAR\n"
                         "three different         two lines\n"
-                        "lines                            \n"
+                        "lines           \n"
                         "short                      a pair\n"
                         "short2          a eight line ćęłł\n"
                         "                  ___5___ ___6___\n"
@@ -493,17 +493,17 @@ int main(int argc, char *argv[]) {
         if (isatty(STDOUT_FILENO))
                 assert_se(streq(formatted,
                                 "  no a long f…   no a long f… a long fi…\n"
-                                "  no fäää        no fäää      fäää      \n"
-                                " yes fäää       yes fäää      fäää      \n"
-                                " yes xxx        yes xxx       xxx       \n"
-                                "5min           5min                     \n"));
+                                "  no fäää        no fäää      fäää\n"
+                                " yes fäää       yes fäää      fäää\n"
+                                " yes xxx        yes xxx       xxx\n"
+                                "5min           5min           \n"));
         else
                 assert_se(streq(formatted,
                                 "  no a long field   no a long field a long field\n"
-                                "  no fäää           no fäää         fäää        \n"
-                                " yes fäää          yes fäää         fäää        \n"
-                                " yes xxx           yes xxx          xxx         \n"
-                                "5min              5min                          \n"));
+                                "  no fäää           no fäää         fäää\n"
+                                " yes fäää          yes fäää         fäää\n"
+                                " yes xxx           yes xxx          xxx\n"
+                                "5min              5min              \n"));
 
         test_issue_9549();
         test_multiline();