summaryrefslogtreecommitdiff
path: root/column.c
diff options
context:
space:
mode:
Diffstat (limited to 'column.c')
-rw-r--r--column.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/column.c b/column.c
index 49ab85b769..4a38eed322 100644
--- a/column.c
+++ b/column.c
@@ -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));
}
}