From 947d330f68c49680dcc54439f56da2a297228962 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 31 Jul 2017 23:08:27 -0400 Subject: add _NL_LOCALE_NAME extension to nl_langinfo since setlocale(cat, NULL) is required to return the setting for the global locale, there is no standard mechanism to obtain the name of the currently active thread-local locale set by uselocale. this makes it impossible for application/library software to load appropriate translations, etc. unless using the gettext implementation provided by libc, which has privileged access to libc internals. to fill this gap, glibc introduced the _NL_LOCALE_NAME macro which can be used with nl_langinfo to obtain the name. GNU gettext/gnulib code already use this functionality on glibc, and can easily be adapted to make use of it on non-glibc systems if it's available; for other systems they poke at locale implementation internals, which we want to avoid. this patch provides a compatible interface to the one glibc introduced. --- include/langinfo.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/langinfo.h') diff --git a/include/langinfo.h b/include/langinfo.h index 2153c42e..519c0612 100644 --- a/include/langinfo.h +++ b/include/langinfo.h @@ -77,6 +77,12 @@ extern "C" { #define YESEXPR 0x50000 #define NOEXPR 0x50001 +#define _NL_LOCALE_NAME(cat) (((cat)<<16) | 0xffff) + +#if defined(_GNU_SOURCE) +#define NL_LOCALE_NAME(cat) _NL_LOCALE_NAME(cat) +#endif + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define YESSTR 0x50002 #define NOSTR 0x50003 -- cgit v1.2.1