From: Bruno Haible Date: Sun, 19 May 2019 22:25:51 +0000 (+0200) Subject: intl: Work around setlocale bug on Android 4.3. X-Git-Tag: v0.20.2~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70bd21bab54bfe827d0f3ac8f4394a80335211bb;p=thirdparty%2Fgettext.git intl: Work around setlocale bug on Android 4.3. * gettext-runtime/intl/setlocale.c (setlocale_unixlike): New wrapper for Android. --- diff --git a/gettext-runtime/intl/setlocale.c b/gettext-runtime/intl/setlocale.c index 52071220f..2995db1c8 100644 --- a/gettext-runtime/intl/setlocale.c +++ b/gettext-runtime/intl/setlocale.c @@ -1,5 +1,5 @@ /* setlocale() function that respects the locale chosen by the user. - Copyright (C) 2009, 2011, 2013, 2018 Free Software Foundation, Inc. + Copyright (C) 2009, 2011, 2013, 2018-2019 Free Software Foundation, Inc. Written by Bruno Haible , 2009. This program is free software: you can redistribute it and/or modify @@ -802,6 +802,39 @@ setlocale_unixlike (int category, const char *locale) return NULL; } +# elif defined __ANDROID__ + +/* Like setlocale, but accept also the locale names "C" and "POSIX". */ +static char * +setlocale_unixlike (int category, const char *locale) +{ + char *result = setlocale (category, locale); + if (result == NULL) + switch (category) + { + case LC_CTYPE: + case LC_NUMERIC: + case LC_TIME: + case LC_COLLATE: + case LC_MONETARY: + case LC_MESSAGES: + case LC_ALL: + case LC_PAPER: + case LC_NAME: + case LC_ADDRESS: + case LC_TELEPHONE: + case LC_MEASUREMENT: + if (locale == NULL + || strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0) + result = (char *) "C"; + break; + default: + break; + } + return result; +} +# define setlocale setlocale_unixlike + # else # define setlocale_unixlike setlocale # endif