mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	If setlocale("en_US.UTF-8") succeeds, then don't do the check for UTF-8
locale since if it isn't UTF-8 the system is broken anyway. If it fails, try "" and check for UTF-8 with nl_langinfo(CODESET) rather than wcwidth(). Based on a diff from schwarze@, nl_langinfo also suggested by stsp@.
This commit is contained in:
		
							
								
								
									
										13
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								tmux.c
									
									
									
									
									
								
							@@ -24,6 +24,7 @@
 | 
				
			|||||||
#include <event.h>
 | 
					#include <event.h>
 | 
				
			||||||
#include <fcntl.h>
 | 
					#include <fcntl.h>
 | 
				
			||||||
#include <getopt.h>
 | 
					#include <getopt.h>
 | 
				
			||||||
 | 
					#include <langinfo.h>
 | 
				
			||||||
#include <locale.h>
 | 
					#include <locale.h>
 | 
				
			||||||
#include <paths.h>
 | 
					#include <paths.h>
 | 
				
			||||||
#include <pwd.h>
 | 
					#include <pwd.h>
 | 
				
			||||||
@@ -188,10 +189,14 @@ main(int argc, char **argv)
 | 
				
			|||||||
	const char	*s;
 | 
						const char	*s;
 | 
				
			||||||
	int		 opt, flags, keys;
 | 
						int		 opt, flags, keys;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL)
 | 
						if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL) {
 | 
				
			||||||
		setlocale(LC_CTYPE, "");
 | 
							if (setlocale(LC_CTYPE, "") == NULL)
 | 
				
			||||||
	if (wcwidth(0xfffd) != 1)
 | 
								errx(1, "invalid LC_ALL, LC_CTYPE or LANG");
 | 
				
			||||||
		errx(1, "no UTF-8 locale; please set LC_CTYPE");
 | 
							s = nl_langinfo(CODESET);
 | 
				
			||||||
 | 
							if (strcasecmp(s, "UTF-8") != 0 &&
 | 
				
			||||||
 | 
							    strcasecmp(s, "UTF8") != 0)
 | 
				
			||||||
 | 
								errx(1, "need UTF-8 locale (LC_CTYPE) but have %s", s);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	setlocale(LC_TIME, "");
 | 
						setlocale(LC_TIME, "");
 | 
				
			||||||
	tzset();
 | 
						tzset();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user