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
This commit is contained in:
21
utf8.c
21
utf8.c
@ -429,6 +429,27 @@ int same_encoding(const char *src, const char *dst)
|
||||
return !strcasecmp(src, 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.
|
||||
|
Reference in New Issue
Block a user