newlocale: Linux incompatibility
Thu Mar 23 19:48:35 GMT 2023
I'm reporting this here rather than the newlib list because the behavior
is compatible with Posix but not Linux, so I think it's a Cygwin issue.
Consider the following test case:
$ cat locale_test.c
int main ()
const char *locale = "en_DE.UTF-8";
locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK, locale, 0);
printf ("newlocale succeeded on invalid locale %s\n", locale);
$ gcc -o locale_test locale_test.c
newlocale succeeded on invalid locale en_DE.UTF-8
On Linux, the newlocale call fails with ENOENT, as is documented on the
man page. Posix doesn't say what should happen on an invalid locale, so
this is not, strictly speaking, a bug.
P.S. I noticed this because of a failing Emacs test. No one else has
reported this test failure, so it seems that newlocale fails on an
invalid locale on all platforms supported by Emacs other than Cygwin.
More information about the Cygwin