1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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 */
|