summaryrefslogtreecommitdiff
path: root/utf8.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2013-02-25 08:03:59 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-02-25 08:03:59 -0800
commit75288cc7e120cfcce4b11699d034bcadccdf9344 (patch)
tree2150de06391c509528c4b4aa796868cd2d78d21f /utf8.c
parentMerge branch 'mg/bisect-doc' into maint (diff)
parentAdd utf8_fprintf helper that returns correct number of columns (diff)
downloadtgif-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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/utf8.c b/utf8.c
index a4ee6650ef..1087870c51 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.
*/