summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-02-07 17:35:59 +0000
committerCorinna Vinschen <corinna@vinschen.de>2010-02-07 17:35:59 +0000
commitab6ef08082d5db9ba6e4e4965664f364a664346b (patch)
treeaee333ae25ccd75abef89de9ad96a38a0c5afefe
parentdb2e119fe6e654ff5b83922e6219e9ca9d5e126f (diff)
downloadcygnal-ab6ef08082d5db9ba6e4e4965664f364a664346b.tar.gz
cygnal-ab6ef08082d5db9ba6e4e4965664f364a664346b.tar.bz2
cygnal-ab6ef08082d5db9ba6e4e4965664f364a664346b.zip
* nlsfuncs.cc (__get_lcid_from_locale): Handle "@cyrillic" modifier
for uz_UZ locale here. (__set_charset_from_locale): Accommodate above change.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/nlsfuncs.cc19
2 files changed, 22 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 7254a50aa..8ff6524eb 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2010-02-07 Corinna Vinschen <corinna@vinschen.de>
+ * nlsfuncs.cc (__get_lcid_from_locale): Handle "@cyrillic" modifier
+ for uz_UZ locale here.
+ (__set_charset_from_locale): Accommodate above change.
+
+2010-02-07 Corinna Vinschen <corinna@vinschen.de>
+
* nlsfuncs.cc (__set_locale_from_locale_alias): New function to read
locale aliases from /usr/share/locale/locale.alias.
diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc
index 0b28f8301..c8994ec0e 100644
--- a/winsup/cygwin/nlsfuncs.cc
+++ b/winsup/cygwin/nlsfuncs.cc
@@ -132,6 +132,12 @@ __get_lcid_from_locale (const char *name)
if (lcid != 0 && has_modifier ("@latin"))
lcid = MAKELANGID (lcid & 0x3ff, (lcid >> 10) - 1);
}
+ else if (!strncmp (locale, "uz-", 3))
+ {
+ /* Equivalent for "@cyrillic" modifier in uz_UZ locale */
+ if (lcid != 0 && has_modifier ("@cyrillic"))
+ lcid = MAKELANGID (lcid & 0x3ff, (lcid >> 10) + 1);
+ }
break;
}
}
@@ -214,6 +220,12 @@ __get_lcid_from_locale (const char *name)
break;
}
}
+ else if (lcid == 0x0443) /* uz_UZ (Uzbek/Uzbekistan) */
+ {
+ /* Equivalent for "@cyrillic" modifier in uz_UZ locale */
+ if (lcid != 0 && has_modifier ("@cyrillic"))
+ lcid = MAKELANGID (lcid & 0x3ff, (lcid >> 10) + 1);
+ }
last_lcid = lcid ?: (LCID) -1;
debug_printf ("LCID=0x%04x", last_lcid);
return last_lcid;
@@ -844,10 +856,11 @@ __set_charset_from_locale (const char *locale, char *charset)
|| lcid == 0x281a /* sr_RS (Serbian Language/Serbia) */
|| lcid == 0x301a /* sr_ME (Serbian Language/Montenegro)*/
|| lcid == 0x0440 /* ky_KG (Kyrgyz/Kyrgyzstan) */
- || lcid == 0x0450 /* mn_MN (Mongolian/Mongolia) */
+ || lcid == 0x0843 /* uz_UZ (Uzbek/Uzbekistan) */
/* tt_RU (Tatar/Russia),
IQTElif alphabet */
- || (lcid == 0x0444 && has_modifier ("@iqtelif")))
+ || (lcid == 0x0444 && has_modifier ("@iqtelif"))
+ || lcid == 0x0450) /* mn_MN (Mongolian/Mongolia) */
cs = "UTF-8";
else if (lcid == 0x0423) /* be_BY (Belarusian/Belarus) */
cs = has_modifier ("@latin") ? "UTF-8" : "CP1251";
@@ -888,7 +901,7 @@ __set_charset_from_locale (const char *locale, char *charset)
if (lcid == 0x042c) /* az_AZ (Azeri/Azerbaijan) */
cs = "UTF-8";
else if (lcid == 0x0443) /* uz_UZ (Uzbek/Uzbekistan) */
- cs = has_modifier ("@cyrillic") ? "UTF-8" : "ISO-8859-1";
+ cs = "ISO-8859-1";
else
cs = "ISO-8859-9";
break;