]> sourceware.org Git - newlib-cygwin.git/commitdiff
* libc/locale/nl_langinfo.c (nl_langinfo): On Cygwin, translate
authorCorinna Vinschen <corinna@vinschen.de>
Wed, 20 Jan 2010 13:18:24 +0000 (13:18 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 20 Jan 2010 13:18:24 +0000 (13:18 +0000)
often-used charsets into Linux compatible codesets.

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

index 7ff327b9c499b2771fbe24e6f94cd3acc50e0614..b8c04ce2ba170683750daab226a320382fe4e27b 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/locale/nl_langinfo.c (nl_langinfo): On Cygwin, translate
+       often-used charsets into Linux compatible codesets.
+
 2010-01-19  Andy Koppe  <andy.koppe@gmail.com>
 
        * libc/stdio/vfscanf.c (__SVFSCANF_R): Fix handling of non-ASCII
index 1bc7c17e242616df5cee970dc55b8b5d5836e8de..550f92efd11744ec5c048dc3e1d7e259069e9a96 100644 (file)
@@ -60,12 +60,25 @@ _DEFUN(nl_langinfo, (item),
        case CODESET:
 #ifdef __CYGWIN__
                ret = __locale_charset ();
-               /* Temporary exception for KOI8 charsets which are
-                  incorrectly treated by calling applications otherwise. */
-               if (strcmp (ret, "CP20866") == 0)
-                 ret = "KOI8-R";
-               else if (strcmp (ret, "CP21866") == 0)
-                 ret = "KOI8-U";
+               /* Convert charset to Linux compatible codeset string. */
+               if (ret[0] == 'A'/*SCII*/)
+                 ret = "ANSI_X3.4-1968";
+               else if (ret[0] == 'E')
+                 {
+                   if (strcmp (ret, "EUCJP") == 0)
+                     ret = "EUC-JP";
+                   else if (strcmp (ret, "EUCKR") == 0)
+                     ret = "EUC-KR";
+                 }
+               else if (ret[0] == 'C'/*Pxxxx*/)
+                 {
+                   if (strcmp (ret + 2, "874") == 0)
+                     ret = "TIS-620";
+                   else if (strcmp (ret + 2, "20866") == 0)
+                     ret = "KOI8-R";
+                   else if (strcmp (ret + 2, "21866") == 0)
+                     ret = "KOI8-U";
+                 }
 #else
                ret = "";
                if ((s = setlocale(LC_CTYPE, NULL)) != NULL) {
This page took 0.053661 seconds and 5 git commands to generate.