]> sourceware.org Git - newlib-cygwin.git/commitdiff
* libc/locale/nl_langinfo.c (nl_langinfo): Return "CP932" when using
authorCorinna Vinschen <corinna@vinschen.de>
Sun, 24 Jan 2010 12:18:20 +0000 (12:18 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Sun, 24 Jan 2010 12:18:20 +0000 (12:18 +0000)
SJIS on Cygwin.  Explain why.

newlib/ChangeLog
newlib/libc/locale/nl_langinfo.c

index 187978c58847af3027d4a0434128e04382c95034..5b21f2b1bfb986c88d3e671aa9ee64ec3c4d16ea 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/locale/nl_langinfo.c (nl_langinfo): Return "CP932" when using
+       SJIS on Cygwin.  Explain why.
+
 2010-01-23  Corinna Vinschen  <corinna@vinschen.de>
 
        * libc/locale/locale.c (loadlocale): Allow CP932 as alias for SJIS.
index ae7228cf6437533884e8b3badd5f080671d1a51c..cd86c158dcae3f124b32ef51a79900aef639c404 100644 (file)
@@ -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) {
This page took 0.048416 seconds and 5 git commands to generate.