Commit | Line | Data |
---|---|---|
59f0d218 FF |
1 | diff -u -r /home/fornwall/lib/android-ndk/sources/android/support/src/locale/setlocale.c ./src/locale/setlocale.c |
2 | --- /home/fornwall/lib/android-ndk/sources/android/support/src/locale/setlocale.c 2013-07-26 23:37:59.000000000 -0400 | |
3 | +++ ./src/locale/setlocale.c 2015-01-01 17:16:29.488323212 -0500 | |
4 | @@ -25,23 +25,18 @@ | |
5 | * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
6 | * SUCH DAMAGE. | |
7 | */ | |
8 | -#include <errno.h> | |
9 | +#include <string.h> | |
10 | #include "locale_impl.h" | |
11 | ||
12 | char *setlocale(int category, const char *locale) { | |
13 | - // Sanity check. | |
14 | - if (locale == NULL) { | |
15 | - errno = EINVAL; | |
16 | - return NULL; | |
17 | - } | |
18 | - // Only accept "", "C" or "POSIX", all equivalent on Android. | |
19 | - if (*locale && strcmp(locale, "C") && strcmp(locale, "POSIX")) { | |
20 | - errno = EINVAL; | |
21 | - return NULL; | |
22 | - } | |
23 | + // setlocale(3): "If locale is NULL, the current locale is only queried, not modified." | |
24 | + if (locale == NULL) return "en_US.UTF-8"; | |
25 | + | |
26 | + // Only accept "", "C" or "POSIX", all equivalent on Android, and any locale with UTF-8/UTF8 in it. | |
27 | + if (*locale && strcmp(locale, "C") && strcmp(locale, "POSIX") && strstr(locale, "UTF-8") == 0 && strstr(locale, "UTF8") == 0) return NULL; | |
28 | + | |
29 | // The function returns a char* but the caller is not supposed to | |
30 | // modify it. Just to a type cast. If the caller tries to write to | |
31 | // it, it will simply segfault. | |
32 | - static const char C_LOCALE_SETTING[] = "C"; | |
33 | - return (char*) C_LOCALE_SETTING; | |
34 | + return "en_US.UTF-8"; | |
35 | } |