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
#include <stdio.h>
#include <locale.h>
int main ()
{
const char *locale = "en_DE.UTF-8";
locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK, locale, 0);
if (!loc)
perror ("newlocale");
else
printf ("newlocale succeeded on invalid locale %s\n", locale);
}
$ gcc -o locale_test locale_test.c
$ ./locale_test.exe
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.
Ken
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.
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple