From 1cd1bb09654e91cec55a97d21644e316c02f1802 Mon Sep 17 00:00:00 2001 From: Nicolas Viennot Date: Sun, 27 Mar 2016 22:41:33 -0400 Subject: [PATCH] Setup UTF8 locale --- tmate-slave.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tmate-slave.c b/tmate-slave.c index f02bc2eb..e1a50331 100644 --- a/tmate-slave.c +++ b/tmate-slave.c @@ -130,6 +130,25 @@ static char* get_full_hostname(void) freeaddrinfo(info); return ret; } +#include +#include + +static void setup_locale(void) +{ + const char *s; + + if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL) { + if (setlocale(LC_CTYPE, "") == NULL) + tmate_fatal("invalid LC_ALL, LC_CTYPE or LANG"); + s = nl_langinfo(CODESET); + if (strcasecmp(s, "UTF-8") != 0 && + strcasecmp(s, "UTF8") != 0) + tmate_fatal("need UTF-8 locale (LC_CTYPE) but have %s", s); + } + + setlocale(LC_TIME, ""); + tzset(); +} int main(int argc, char **argv, char **envp) { @@ -167,6 +186,8 @@ int main(int argc, char **argv, char **envp) init_logging("tmate-remote-tmux", tmate_settings->use_syslog, tmate_settings->log_level); + setup_locale(); + if (!tmate_settings->tmate_host) tmate_settings->tmate_host = get_full_hostname();