Restore utf8proc code.

This commit is contained in:
Nicholas Marriott
2023-09-19 09:29:04 +01:00
parent 789a98982e
commit 51b80b985e
2 changed files with 10 additions and 0 deletions

9
utf8.c
View File

@ -409,6 +409,10 @@ utf8_width(struct utf8_data *ud, int *width)
*width = 2;
return (UTF8_DONE);
}
#ifdef HAVE_UTF8PROC
*width = utf8proc_wcwidth(wc);
log_debug("utf8proc_wcwidth(%05X) returned %d", (u_int)wc, *width);
#else
*width = wcwidth(wc);
log_debug("wcwidth(%05X) returned %d", (u_int)wc, *width);
if (*width < 0) {
@ -418,6 +422,7 @@ utf8_width(struct utf8_data *ud, int *width)
*/
*width = (wc >= 0x80 && wc <= 0x9f) ? 0 : 1;
}
#endif
if (*width >= 0 && *width <= 0xff)
return (UTF8_DONE);
return (UTF8_ERROR);
@ -427,7 +432,11 @@ utf8_width(struct utf8_data *ud, int *width)
enum utf8_state
utf8_towc(const struct utf8_data *ud, wchar_t *wc)
{
#ifdef HAVE_UTF8PROC
switch (utf8proc_mbtowc(wc, ud->data, ud->size)) {
#else
switch (mbtowc(wc, ud->data, ud->size)) {
#endif
case -1:
log_debug("UTF-8 %.*s, mbtowc() %d", (int)ud->size, ud->data,
errno);