From 28560df1b632539d7133749626b69ca4b91ea1e6 Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Mon, 31 Dec 2012 16:00:46 +0000 Subject: [PATCH] PDCLIB-2 PDCLIB-9: As an extension, add the POSIX thread-local locale API --- includes/locale.h | 24 ++++++++++++++++++++++++ internals/_PDCLIB_int.h | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/includes/locale.h b/includes/locale.h index 14996bb..21221e3 100644 --- a/includes/locale.h +++ b/includes/locale.h @@ -97,6 +97,30 @@ char * setlocale( int category, const char * locale ) _PDCLIB_nothrow; */ struct lconv * localeconv( void ) _PDCLIB_nothrow; +#if _PDCLIB_POSIX_MIN(2008) +typedef _PDCLIB_locale_t locale_t; + +/* Set the thread locale to newlocale + * + * If newlocale is (locale_t)0, then doesn't change the locale and just returns + * the existing locale. + * + * If newlocale is LC_GLOBAL_LOCALE, resets the thread's locale to use the + * global locale. + * + * Returns the previous thread locale. If the thread had no previous locale, + * returns the global locale. + */ +locale_t uselocale(locale_t newlocale); + +/* Returns a copy of loc */ +locale_t duplocale(locale_t loc); + +/* Frees the passed locale object */ +void freelocale(locale_t loc); + +#endif + _PDCLIB_END_EXTERN_C #endif diff --git a/internals/_PDCLIB_int.h b/internals/_PDCLIB_int.h index 64d9219..315a0e3 100644 --- a/internals/_PDCLIB_int.h +++ b/internals/_PDCLIB_int.h @@ -384,7 +384,7 @@ typedef struct _PDCLIB_mbstate { } _PDCLIB_mbstate_t; typedef struct _PDCLIB_charcodec _PDCLIB_charcodec_t; -typedef struct _PDCLIB_locale _PDCLIB_locale_t; +typedef struct _PDCLIB_locale *_PDCLIB_locale_t; typedef struct lconv _PDCLIB_lconv_t; /* -------------------------------------------------------------------------- */ -- 2.40.0