diff --git a/locale.c b/locale.c index 7653340..7243cb1 100644 --- a/locale.c +++ b/locale.c @@ -581,6 +581,10 @@ S_emulate_setlocale(const int category, return (char *) querylocale(mask, cur_obj); +# elif defined(_NL_LOCALE_NAME) + + return (char *) nl_langinfo_l(_NL_LOCALE_NAME(category), cur_obj); + # else /* If this assert fails, adjust the size of curlocales in intrpvar.h */ @@ -737,7 +741,7 @@ S_emulate_setlocale(const int category, /* Here, we are switching locales. */ -# ifndef HAS_QUERYLOCALE +# if !defined(HAS_QUERYLOCALE) && !defined(_NL_LOCALE_NAME) if (strEQ(locale, "")) { @@ -1094,6 +1098,12 @@ S_emulate_setlocale(const int category, locale = querylocale(mask, new_obj); } +# elif defined(_NL_LOCALE_NAME) + + if (strEQ(locale, "")) { + locale = nl_langinfo_l(_NL_LOCALE_NAME(category), new_obj); + } + # else /* Here, 'locale' is the return value */