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