diff options
Diffstat (limited to 'locale/programs/localedef.h')
-rw-r--r-- | locale/programs/localedef.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/locale/programs/localedef.h b/locale/programs/localedef.h index cdb08d8293..717962e10b 100644 --- a/locale/programs/localedef.h +++ b/locale/programs/localedef.h @@ -24,6 +24,7 @@ /* Get the basic locale definitions. */ #include <locale.h> #include <stddef.h> +#include <errno.h> #include "repertoire.h" @@ -122,6 +123,19 @@ extern void *xrealloc (void *__p, size_t __n); extern char *xstrdup (const char *__str); +/* Wrapper to switch LC_CTYPE back to the locale specified in the + environment for output. */ +#define WITH_CUR_LOCALE(stmt) \ + do { \ + int saved_errno = errno; \ + const char *cur_locale_ = setlocale (LC_CTYPE, NULL); \ + setlocale (LC_CTYPE, ""); \ + errno = saved_errno; \ + stmt; \ + setlocale (LC_CTYPE, cur_locale_); \ + } while (0) + + /* Mark given locale as to be read. */ extern struct localedef_t *add_to_readlist (int locale, const char *name, const char *repertoire_name, |