Mercurial > gnulib
comparison lib/setlocale.c @ 40136:06c22cab9098
setlocale: Work around bug on Android 4.3.
* m4/setlocale.m4 (gl_FUNC_SETLOCALE): Test whether setlocale supports
the "C" locale.
* lib/setlocale.c (setlocale_unixlike): New wrapper for Android.
* doc/posix-functions/setlocale.texi: Mention the Android bug.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Fri, 25 Jan 2019 23:26:24 +0100 |
parents | b06060465f09 |
children |
comparison
equal
deleted
inserted
replaced
40135:f03dfb30b48c | 40136:06c22cab9098 |
---|---|
792 | 792 |
793 /* Failed. */ | 793 /* Failed. */ |
794 return NULL; | 794 return NULL; |
795 } | 795 } |
796 | 796 |
797 # elif defined __ANDROID__ | |
798 | |
799 /* Like setlocale, but accept also the locale names "C" and "POSIX". */ | |
800 static char * | |
801 setlocale_unixlike (int category, const char *locale) | |
802 { | |
803 char *result = setlocale (category, locale); | |
804 if (result == NULL) | |
805 switch (category) | |
806 { | |
807 case LC_CTYPE: | |
808 case LC_NUMERIC: | |
809 case LC_TIME: | |
810 case LC_COLLATE: | |
811 case LC_MONETARY: | |
812 case LC_MESSAGES: | |
813 case LC_ALL: | |
814 case LC_PAPER: | |
815 case LC_NAME: | |
816 case LC_ADDRESS: | |
817 case LC_TELEPHONE: | |
818 case LC_MEASUREMENT: | |
819 if (locale == NULL | |
820 || strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0) | |
821 result = (char *) "C"; | |
822 break; | |
823 default: | |
824 break; | |
825 } | |
826 return result; | |
827 } | |
828 # define setlocale setlocale_unixlike | |
829 | |
797 # else | 830 # else |
798 # define setlocale_unixlike setlocale | 831 # define setlocale_unixlike setlocale |
799 # endif | 832 # endif |
800 | 833 |
801 # if LC_MESSAGES == 1729 | 834 # if LC_MESSAGES == 1729 |