Index: fusl/src/locale/uselocale.c |
diff --git a/fusl/src/locale/uselocale.c b/fusl/src/locale/uselocale.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0fc5ecbc07f29437e1afb66815074360bfd360cb |
--- /dev/null |
+++ b/fusl/src/locale/uselocale.c |
@@ -0,0 +1,16 @@ |
+#include "locale_impl.h" |
+#include "pthread_impl.h" |
+#include "libc.h" |
+ |
+locale_t __uselocale(locale_t new) |
+{ |
+ pthread_t self = __pthread_self(); |
+ locale_t old = self->locale; |
+ locale_t global = &libc.global_locale; |
+ |
+ if (new) self->locale = new == LC_GLOBAL_LOCALE ? global : new; |
+ |
+ return old == global ? LC_GLOBAL_LOCALE : old; |
+} |
+ |
+weak_alias(__uselocale, uselocale); |