diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-02-25 08:03:59 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-02-25 08:03:59 -0800 |
commit | 75288cc7e120cfcce4b11699d034bcadccdf9344 (patch) | |
tree | 2150de06391c509528c4b4aa796868cd2d78d21f /utf8.c | |
parent | Merge branch 'mg/bisect-doc' into maint (diff) | |
parent | Add utf8_fprintf helper that returns correct number of columns (diff) | |
download | tgif-75288cc7e120cfcce4b11699d034bcadccdf9344.tar.xz |
Merge branch 'jx/utf8-printf-width' into maint
* jx/utf8-printf-width:
Add utf8_fprintf helper that returns correct number of columns
Diffstat (limited to 'utf8.c')
-rw-r--r-- | utf8.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -430,6 +430,27 @@ int same_encoding(const char *src, const char *dst) } /* + * Wrapper for fprintf and returns the total number of columns required + * for the printed string, assuming that the string is utf8. + */ +int utf8_fprintf(FILE *stream, const char *format, ...) +{ + struct strbuf buf = STRBUF_INIT; + va_list arg; + int columns; + + va_start(arg, format); + strbuf_vaddf(&buf, format, arg); + va_end(arg); + + columns = fputs(buf.buf, stream); + if (0 <= columns) /* keep the error from the I/O */ + columns = utf8_strwidth(buf.buf); + strbuf_release(&buf); + return columns; +} + +/* * Given a buffer and its encoding, return it re-encoded * with iconv. If the conversion fails, returns NULL. */ |