about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/internal/pthread_impl.h2
-rw-r--r--src/locale/uselocale.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h
index 615713c7..219bf006 100644
--- a/src/internal/pthread_impl.h
+++ b/src/internal/pthread_impl.h
@@ -12,6 +12,7 @@
 #include <setjmp.h>
 #include <string.h>
 #include <time.h>
+#include <locale.h>
 #include "libc.h"
 #include "syscall.h"
 #include "atomic.h"
@@ -44,6 +45,7 @@ struct pthread {
 	} robust_list;
 	int unblock_cancel;
 	int delete_timer;
+	locale_t locale;
 };
 
 struct __timer {
diff --git a/src/locale/uselocale.c b/src/locale/uselocale.c
new file mode 100644
index 00000000..9c799578
--- /dev/null
+++ b/src/locale/uselocale.c
@@ -0,0 +1,10 @@
+#include "locale_impl.h"
+#include "pthread_impl.h"
+
+locale_t uselocale(locale_t l)
+{
+	pthread_t self = pthread_self();
+	locale_t old = self->locale;
+	if (l) self->locale = l;
+	return old;
+}