diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-02-14 10:29:08 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-02-14 10:29:08 -0800 |
commit | 3cc3cf970c5ce477bde78df73614d1efba2b52eb (patch) | |
tree | 2bcc9526ccf586db926050ee6e01fe2e2e418982 /utf8.c | |
parent | eb213fc3fce895e1b279247dd5e5fa6c168f90e4 (diff) | |
parent | c082196575e13dd5960031f213b20e2df989ca18 (diff) | |
download | git-3cc3cf970c5ce477bde78df73614d1efba2b52eb.tar.gz |
Merge branch 'jx/utf8-printf-width'
Use a new helper that prints a message and counts its display width
to align the help messages parse-options produces.
* 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. */ |