libsmartcols: wrap columns correctly with unicode

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
This commit is contained in:
Igor Gnatenko 2016-01-22 14:29:16 +01:00
parent a640409309
commit e6f89163be
1 changed files with 15 additions and 5 deletions

View File

@ -352,15 +352,25 @@ static int print_data(struct libscols_table *tb,
if (color)
fputs(UL_COLOR_RESET, tb->out);
len = width;
} else if (scols_column_is_wrap(cl)) {
} else if (len > width && scols_column_is_wrap(cl)) {
char *p = data;
i = 0;
while (*p) {
fprintf(tb->out, "%.*s", (int) width, p);
p += width;
len = width;
p = strdup(p);
bytes = mbs_truncate(p, &len);
if (bytes == (size_t) -1) {
free(p);
break;
}
fputs(p, tb->out);
free(p);
i += bytes;
p = data + i;
if (*p)
for (i = 0; i < cl->seqnum; i++)
print_empty_cell (tb, scols_table_get_column(tb, i),
for (size_t j = 0; j < cl->seqnum; j++)
print_empty_cell (tb, scols_table_get_column(tb, j),
NULL, buf->bufsz);
}
} else if (color) {