diff options
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/locale/nl_langinfo.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/newlib/libc/locale/nl_langinfo.c b/newlib/libc/locale/nl_langinfo.c index ae7228cf6..cd86c158d 100644 --- a/newlib/libc/locale/nl_langinfo.c +++ b/newlib/libc/locale/nl_langinfo.c @@ -79,6 +79,20 @@ _DEFUN(nl_langinfo, (item), else if (strcmp (ret + 2, "21866") == 0) ret = "KOI8-U"; } + else if (ret[0] == 'S'/*JIS*/) + { + /* Cygwin uses MSFT's implementation of SJIS, which differs + in some codepoints from the real thing, especially + 0x5c: yen sign instead of backslash, + 0x7e: overline instead of tilde. + We can't use the real SJIS since otherwise Win32 + pathnames would become invalid. OTOH, if we return + "SJIS" here, then libiconv will do mb<->wc conversion + differently to our internal functions. Therefore we + return what we really implement, CP932. This is handled + fine by libiconv. */ + ret = "CP932"; + } #else ret = ""; if ((s = setlocale(LC_CTYPE, NULL)) != NULL) { |