diff options
Diffstat (limited to 'gl/hard-locale.c')
-rw-r--r-- | gl/hard-locale.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gl/hard-locale.c b/gl/hard-locale.c index 0a28552..653c580 100644 --- a/gl/hard-locale.c +++ b/gl/hard-locale.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* hard-locale.c -- Determine whether a locale is hard. | 1 | /* hard-locale.c -- Determine whether a locale is hard. |
2 | 2 | ||
3 | Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2023 Free Software | 3 | Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2024 Free Software |
4 | Foundation, Inc. | 4 | Foundation, Inc. |
5 | 5 | ||
6 | This file is free software: you can redistribute it and/or modify | 6 | This file is free software: you can redistribute it and/or modify |
@@ -21,6 +21,7 @@ | |||
21 | #include "hard-locale.h" | 21 | #include "hard-locale.h" |
22 | 22 | ||
23 | #include <locale.h> | 23 | #include <locale.h> |
24 | #include <stdlib.h> | ||
24 | #include <string.h> | 25 | #include <string.h> |
25 | 26 | ||
26 | bool | 27 | bool |
@@ -31,5 +32,16 @@ hard_locale (int category) | |||
31 | if (setlocale_null_r (category, locale, sizeof (locale))) | 32 | if (setlocale_null_r (category, locale, sizeof (locale))) |
32 | return false; | 33 | return false; |
33 | 34 | ||
34 | return !(strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0); | 35 | if (!(strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0)) |
36 | return true; | ||
37 | |||
38 | #if defined __ANDROID__ | ||
39 | /* On Android 5.0 or newer, it is possible to set a locale that has the same | ||
40 | name as the "C" locale but in fact uses UTF-8 encoding. Cf. test case 2 in | ||
41 | <https://lists.gnu.org/archive/html/bug-gnulib/2023-01/msg00141.html>. */ | ||
42 | if (MB_CUR_MAX > 1) | ||
43 | return true; | ||
44 | #endif | ||
45 | |||
46 | return false; | ||
35 | } | 47 | } |