summaryrefslogtreecommitdiff
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;
+}