diff options
Diffstat (limited to 'libsmartcols/src/table_print.c')
-rw-r--r-- | libsmartcols/src/table_print.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libsmartcols/src/table_print.c b/libsmartcols/src/table_print.c index afcbc1647..1fe700273 100644 --- a/libsmartcols/src/table_print.c +++ b/libsmartcols/src/table_print.c @@ -1092,10 +1092,13 @@ static int recount_widths(struct libscols_table *tb, struct libscols_buffer *buf size_t width = 0, width_min = 0; /* output width */ int trunc_only, rc = 0; int extremes = 0; + size_t colsepsz; DBG(TAB, ul_debugobj(tb, "recounting widths (termwidth=%zu)", tb->termwidth)); + colsepsz = mbs_safe_width(colsep(tb)); + /* set basic columns width */ scols_reset_iter(&itr, SCOLS_ITER_FORWARD); @@ -1110,8 +1113,8 @@ static int recount_widths(struct libscols_table *tb, struct libscols_buffer *buf is_last = is_last_column(cl); - width += cl->width + (is_last ? 0 : 1); /* separator for non-last column */ - width_min += cl->width_min + (is_last ? 0 : 1); + width += cl->width + (is_last ? 0 : colsepsz); /* separator for non-last column */ + width_min += cl->width_min + (is_last ? 0 : colsepsz); extremes += cl->is_extreme; } @@ -1291,7 +1294,7 @@ static int recount_widths(struct libscols_table *tb, struct libscols_buffer *buf width -= r; } else { cl->flags |= SCOLS_FL_HIDDEN; - width -= cl->width + 1; /* +1 means separator between columns */ + width -= cl->width + colsepsz; } } } |