diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-02-10 15:29:26 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-02-10 15:29:26 +0300 |
commit | 4f1c922e065335c4bd186f9b9d504e33a2568406 (patch) | |
tree | 947dca3d99a587e6c6a3b5b625fb9df93c53373c /winsup/cygwin/nlsfuncs.cc | |
parent | ae40237a0a3fd8b4c001065c5f7ae5b749d9a3fa (diff) |
* nlsfuncs.cc (__set_charset_from_locale): Allow "@euro" modifier only
for locales which use EUR as currency.
Diffstat (limited to 'winsup/cygwin/nlsfuncs.cc')
-rw-r--r-- | winsup/cygwin/nlsfuncs.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index c351c9de1..5fa767b84 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -879,6 +879,7 @@ __set_charset_from_locale (const char *locale, char *charset) { UINT cp; LCID lcid = __get_lcid_from_locale (locale); + wchar_t wbuf[9]; /* "C" locale, or invalid locale? */ if (lcid == 0 || lcid == (LCID) -1) @@ -967,7 +968,9 @@ __set_charset_from_locale (const char *locale, char *charset) else if (lcid == 0x042e) /* hsb_DE (Upper Sorbian/Germany) */ cs = "ISO-8859-2"; else if (lcid == 0x0491 /* gd_GB (Scots Gaelic/Great Britain) */ - || has_modifier ("@euro")) + || (has_modifier ("@euro") + && GetLocaleInfoW (lcid, LOCALE_SINTLSYMBOL, wbuf, 9) + && !wcsncmp (wbuf, L"EUR", 3))) cs = "ISO-8859-15"; else cs = "ISO-8859-1"; |