Restore utf8proc code.

pull/3709/head
Nicholas Marriott 2023-09-19 09:29:04 +01:00
parent 789a98982e
commit 51b80b985e
2 changed files with 10 additions and 0 deletions

1
tmux.h
View File

@ -3343,6 +3343,7 @@ int utf8_cstrhas(const char *, const struct utf8_data *);
char *osdep_get_name(int, char *);
char *osdep_get_cwd(int);
struct event_base *osdep_event_init(void);
/* utf8-combined.c */
int utf8_has_zwj(const struct utf8_data *);
int utf8_is_zwj(const struct utf8_data *);

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);