Log wcwidth() and mbtowc() failure to make it easier to debug a Unicode

codepoint not appearing.
pull/390/head
nicm 2016-04-26 07:33:36 +00:00
parent 6bf2a43e67
commit d303e55258
1 changed files with 6 additions and 1 deletions

7
utf8.c
View File

@ -18,6 +18,7 @@
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <vis.h>
@ -116,8 +117,10 @@ utf8_width(wchar_t wc)
int width;
width = wcwidth(wc);
if (width < 0 || width > 0xff)
if (width < 0 || width > 0xff) {
log_debug("Unicode %04x, wcwidth() %d", wc, width);
return (-1);
}
return (width);
}
@ -127,6 +130,8 @@ utf8_combine(const struct utf8_data *ud, wchar_t *wc)
{
switch (mbtowc(wc, ud->data, ud->size)) {
case -1:
log_debug("UTF-8 %.*s, mbtowc() %d", (int)ud->size, ud->data,
errno);
mbtowc(NULL, NULL, MB_CUR_MAX);
return (UTF8_ERROR);
case 0: