mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-03 16:46:18 +00:00 
			
		
		
		
	Add support for using utf8proc with --enable-utf8proc, useful for platforms
(like OS X) where the system implementation is crap. From Joshua Rubin.
This commit is contained in:
		
							
								
								
									
										12
									
								
								utf8.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								utf8.c
									
									
									
									
									
								
							@@ -109,7 +109,11 @@ utf8_width(wchar_t wc)
 | 
			
		||||
{
 | 
			
		||||
	int	width;
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UTF8PROC
 | 
			
		||||
	width = utf8proc_wcwidth(wc);
 | 
			
		||||
#else
 | 
			
		||||
	width = wcwidth(wc);
 | 
			
		||||
#endif
 | 
			
		||||
	if (width < 0 || width > 0xff) {
 | 
			
		||||
		log_debug("Unicode %04x, wcwidth() %d", wc, width);
 | 
			
		||||
 | 
			
		||||
@@ -135,7 +139,11 @@ utf8_width(wchar_t wc)
 | 
			
		||||
enum utf8_state
 | 
			
		||||
utf8_combine(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);
 | 
			
		||||
@@ -155,7 +163,11 @@ utf8_split(wchar_t wc, struct utf8_data *ud)
 | 
			
		||||
	char	s[MB_LEN_MAX];
 | 
			
		||||
	int	slen;
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UTF8PROC
 | 
			
		||||
	slen = utf8proc_wctomb(s, wc);
 | 
			
		||||
#else
 | 
			
		||||
	slen = wctomb(s, wc);
 | 
			
		||||
#endif
 | 
			
		||||
	if (slen <= 0 || slen > (int)sizeof ud->data)
 | 
			
		||||
		return (UTF8_ERROR);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user