diff options
author | Bruno Haible <bruno@clisp.org> | 2023-01-17 14:09:41 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-01-17 14:09:41 +0100 |
commit | d7a941f0785fcbc160f79a4bc1b9ec621d7b7dfd (patch) | |
tree | 8089f10a83106fb1a2ab4893260e895df87f9703 /tests | |
parent | 2cf7f442f52f70b3df6eb396eb93ea08e54883c5 (diff) | |
download | gnulib-d7a941f0785fcbc160f79a4bc1b9ec621d7b7dfd.tar.gz |
hard-locale: Port to Android ≥ 5.0.
* lib/hard-locale.c: Include <stdlib.h>.
(hard_locale): On Android, consider also MB_CUR_MAX, even if the
locale's name is "C".
* tests/test-hard-locale.c (test_one, main): Assume that on Android,
even the "C" locale is hard.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-hard-locale.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/tests/test-hard-locale.c b/tests/test-hard-locale.c index eb02f4f6e6..6f94e6c3ac 100644 --- a/tests/test-hard-locale.c +++ b/tests/test-hard-locale.c @@ -38,8 +38,10 @@ test_one (const char *name, int failure_bitmask) /* musl libc has special code for the C.UTF-8 locale; other than that, all locale names are accepted and all locales are trivial. OpenBSD returns the locale name that was set, but we don't know how it - behaves under the hood. Likewise for Haiku. */ -#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__ + behaves under the hood. Likewise for Haiku. + On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't + know how it will behave in the future. */ +#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__ || defined __ANDROID__ expected = true; #else expected = !all_trivial; @@ -57,12 +59,14 @@ test_one (const char *name, int failure_bitmask) /* On NetBSD 7.0, some locales such as de_DE.ISO8859-1 and de_DE.UTF-8 have the LC_COLLATE category set to "C". - Similarly, on musl libc, with the C.UTF-8 locale. */ + Similarly, on musl libc, with the C.UTF-8 locale. + On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't + know how it will behave in the future. */ #if defined __NetBSD__ expected = false; #elif defined MUSL_LIBC expected = strcmp (name, "C.UTF-8") != 0; -#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ /* OpenBSD >= 6.2, Haiku */ +#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ || defined __ANDROID__ /* OpenBSD >= 6.2, Haiku, Android */ expected = true; #else expected = !all_trivial; @@ -86,12 +90,16 @@ main () { int fail = 0; - /* The initial locale is the "C" or "POSIX" locale. */ + /* The initial locale is the "C" or "POSIX" locale. + On Android >= 5.0, it is equivalent to the "C.UTF-8" locale, cf. + <https://lists.gnu.org/archive/html/bug-gnulib/2023-01/msg00141.html>. */ +#if ! defined __ANDROID__ if (hard_locale (LC_CTYPE) || hard_locale (LC_COLLATE)) { fprintf (stderr, "The initial locale should not be hard!\n"); fail |= 1; } +#endif all_trivial = (setlocale (LC_ALL, "foobar") != NULL); |