From c728e00012abe988d085f60d0325deb1654eaa07 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 3 Apr 2017 14:43:13 +0200 Subject: column: use NOEXTREMES for the last column Signed-off-by: Karel Zak --- text-utils/column.1 | 4 +++- text-utils/column.c | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) (limited to 'text-utils') diff --git a/text-utils/column.1 b/text-utils/column.1 index d138ec613..25fa7bab6 100644 --- a/text-utils/column.1 +++ b/text-utils/column.1 @@ -87,7 +87,9 @@ very long table entries may be printed on multiple lines. .IP "\fB\-E, \-\-table-noextreme\fP \fIcolumns\fP" Specify columns where is possible to ignore unusually long (longer than average) cells when calculate column width. The option has impact to the width -calculation, but the printed text is not affected. +calculation and table formatting, but the printed text is not affected. + +The option is used for the last visible column by default. .IP "\fB\-W, \-\-table-wrap\fP \fIcolumns\fP" Specify columns where is possible to use multi-line cell for long text when necessary. diff --git a/text-utils/column.c b/text-utils/column.c index d618978f4..3b582ca1d 100644 --- a/text-utils/column.c +++ b/text-utils/column.c @@ -230,6 +230,24 @@ static struct libscols_column *string_to_column(struct column_control *ctl, cons return scols_table_get_column(ctl->tab, colnum); } +static struct libscols_column *get_last_visible_column(struct column_control *ctl) +{ + struct libscols_iter *itr; + struct libscols_column *cl, *last = NULL; + + itr = scols_new_iter(SCOLS_ITER_FORWARD); + if (!itr) + err_oom(); + + while (scols_table_next_column(ctl->tab, itr, &cl) == 0) { + if (scols_column_get_flags(cl) & SCOLS_FL_HIDDEN) + continue; + last = cl; + } + + scols_free_iter(itr); + return last; +} static int column_set_flag(struct libscols_column *cl, int fl) { @@ -344,6 +362,12 @@ static void modify_table(struct column_control *ctl) apply_columnflag_from_list(ctl, ctl->tab_colhide, SCOLS_FL_HIDDEN , _("failed to parse --table-hide list")); + if (!ctl->tab_colnoextrem) { + struct libscols_column *cl = get_last_visible_column(ctl); + if (cl) + column_set_flag(cl, SCOLS_FL_NOEXTREMES); + } + if (ctl->tree) create_tree(ctl); -- cgit v1.2.3-55-g7522