diff options
Diffstat (limited to 'column.c')
-rw-r--r-- | column.c | 19 |
1 files changed, 4 insertions, 15 deletions
@@ -21,20 +21,9 @@ struct column_data { }; /* return length of 's' in letters, ANSI escapes stripped */ -static int item_length(unsigned int colopts, const char *s) +static int item_length(const char *s) { - int len, i = 0; - struct strbuf str = STRBUF_INIT; - - strbuf_addstr(&str, s); - while ((s = strstr(str.buf + i, "\033[")) != NULL) { - int len = strspn(s + 2, "0123456789;"); - i = s - str.buf; - strbuf_remove(&str, i, len + 3); /* \033[<len><func char> */ - } - len = utf8_strwidth(str.buf); - strbuf_release(&str); - return len; + return utf8_strnwidth(s, -1, 1); } /* @@ -167,7 +156,7 @@ static void display_table(const struct string_list *list, ALLOC_ARRAY(data.len, list->nr); for (i = 0; i < list->nr; i++) - data.len[i] = item_length(colopts, list->items[i].string); + data.len[i] = item_length(list->items[i].string); layout(&data, &initial_width); @@ -214,7 +203,7 @@ void print_columns(const struct string_list *list, unsigned int colopts, display_table(list, colopts, &nopts); break; default: - die("BUG: invalid layout mode %d", COL_LAYOUT(colopts)); + BUG("invalid layout mode %d", COL_LAYOUT(colopts)); } } |