X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/57191fa4be31f3d08b0ed0fcae6ae0ffefd837f6..c16e353eb95120407b78602f0bbaedac57eccf44:/unix/uxucs.c diff --git a/unix/uxucs.c b/unix/uxucs.c index 20f25d4e..8cd300d3 100644 --- a/unix/uxucs.c +++ b/unix/uxucs.c @@ -29,7 +29,6 @@ int mb_to_wc(int codepage, int flags, const char *mbstr, int mblen, mbstate_t state; memset(&state, 0, sizeof state); - setlocale(LC_CTYPE, ""); while (mblen > 0) { size_t i = mbrtowc(wcstr+n, mbstr, (size_t)mblen, &state); @@ -40,8 +39,6 @@ int mb_to_wc(int codepage, int flags, const char *mbstr, int mblen, mblen -= i; } - setlocale(LC_CTYPE, "C"); - return n; } else if (codepage == CS_NONE) { int n = 0; @@ -73,7 +70,6 @@ int wc_to_mb(int codepage, int flags, const wchar_t *wcstr, int wclen, int n = 0; memset(&state, 0, sizeof state); - setlocale(LC_CTYPE, ""); while (wclen > 0) { int i = wcrtomb(output, wcstr[0], &state); @@ -85,8 +81,6 @@ int wc_to_mb(int codepage, int flags, const wchar_t *wcstr, int wclen, wclen--; } - setlocale(LC_CTYPE, "C"); - return n; } else if (codepage == CS_NONE) { int n = 0; @@ -259,17 +253,19 @@ const char *cp_name(int codepage) const char *cp_enumerate(int index) { int charset; - if (index == 0) - return "Use font encoding"; - charset = charset_localenc_nth(index-1); - if (charset == CS_NONE) + charset = charset_localenc_nth(index); + if (charset == CS_NONE) { + /* "Use font encoding" comes after all the named charsets */ + if (charset_localenc_nth(index-1) != CS_NONE) + return "Use font encoding"; return NULL; + } return charset_to_localenc(charset); } int decode_codepage(char *cp_name) { if (!*cp_name) - return CS_NONE; /* use font encoding */ + return CS_UTF8; return charset_from_localenc(cp_name); }