Cygwin: locales: fix behaviour for @euro locales

Latest Windows supports more EU locales than GLibc, so some of the
@euro locales are not covered by checking the GLibc locale defaults.
Those locales have no long history, they are all UTF-8.  So just
check for @euro in the UTF-8 case and set them to ISO-8859-15.

Fixes: 2483e54be8 ("Cygwin: locale: Set default charset from Linux locale -> codeset mapping")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2023-03-26 13:06:38 +02:00
parent c3e7f7609e
commit 2d5492453a
1 changed files with 9 additions and 1 deletions

View File

@ -1610,9 +1610,17 @@ __set_charset_from_locale (const char *loc, char *charset)
cs = "ISO-8859-13";
break;
case 1258:
default:
cs = "UTF-8";
break;
default:
/* Some (pretty new) EU locales don't exist in GLibc and haven't been
catched above. Check for @euro modifier again and make these locales
always use ISO-8859-15. */
if (modifier && !strcmp (modifier + 1, "euro"))
cs = "ISO-8859-15";
else
cs = "UTF-8";
break;
}
stpcpy (charset, cs);
}