aboutsummaryrefslogtreecommitdiff
path: root/utf8.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-02-14 10:29:08 -0800
committerJunio C Hamano <gitster@pobox.com>2013-02-14 10:29:08 -0800
commit3cc3cf970c5ce477bde78df73614d1efba2b52eb (patch)
tree2bcc9526ccf586db926050ee6e01fe2e2e418982 /utf8.c
parenteb213fc3fce895e1b279247dd5e5fa6c168f90e4 (diff)
parentc082196575e13dd5960031f213b20e2df989ca18 (diff)
downloadgit-3cc3cf970c5ce477bde78df73614d1efba2b52eb.tar.gz
git-3cc3cf970c5ce477bde78df73614d1efba2b52eb.tar.xz
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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/utf8.c b/utf8.c
index a4ee6650e..1087870c5 100644
--- a/utf8.c
+++ b/utf8.c
@@ -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.
*/