summaryrefslogblamecommitdiff
path: root/system/perl/musl-locale.patch
blob: 65839f1fe75a18e56d1afbb016d2b7218fc88c46 (plain) (tree)




































                                                                                
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 */