diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-03-12 21:46:35 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-03-12 21:46:35 -0700 |
commit | c26901a8ff8aa25a584551ee946516e8dc8a704a (patch) | |
tree | a284c4eb5d185a3e4131a154f5690fd2b0a15833 /utf8.c | |
parent | 2f5bfa7c7f271f2b7709c2822436178e2a216027 (diff) | |
parent | ffaf9cc0ff0692a0b60cdf1b62e8375706b7865d (diff) | |
download | git-c26901a8ff8aa25a584551ee946516e8dc8a704a.tar.gz git-c26901a8ff8aa25a584551ee946516e8dc8a704a.tar.xz |
Merge branch 'gt/maint-1.6.1-utf8-width' into maint-1.6.1
* gt/maint-1.6.1-utf8-width:
builtin-blame.c: Use utf8_strwidth for author's names
utf8: add utf8_strwidth()
Diffstat (limited to 'utf8.c')
-rw-r--r-- | utf8.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -246,6 +246,25 @@ int utf8_width(const char **start, size_t *remainder_p) return git_wcwidth(ch); } +/* + * Returns the total number of columns required by a null-terminated + * string, assuming that the string is utf8. Returns strlen() instead + * if the string does not look like a valid utf8 string. + */ +int utf8_strwidth(const char *string) +{ + int width = 0; + const char *orig = string; + + while (1) { + if (!string) + return strlen(orig); + if (!*string) + return width; + width += utf8_width(&string, NULL); + } +} + int is_utf8(const char *text) { while (*text) { |