From ec4e5025e91a5012681702567d5b64627abe499e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 9 Oct 2009 08:25:28 +0000 Subject: [PATCH] * libc/locale/locale.c (DEFAULT_LOCALE): New define. (__default_locale): New global variable set to the default locale. (__get_locale_env): Return __default_locale rather than fixed "C". --- newlib/ChangeLog | 6 ++++++ newlib/libc/locale/locale.c | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index cb1723b0e..b57e356a8 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,9 @@ +2009-10-09 Corinna Vinschen + + * libc/locale/locale.c (DEFAULT_LOCALE): New define. + (__default_locale): New global variable set to the default locale. + (__get_locale_env): Return __default_locale rather than fixed "C". + 2009-10-08 Jeff Johnston * configure.host: For RTEMS, define HAVE_ASSERT_FUNC. diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 25b1a00d5..311a43820 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -204,6 +204,18 @@ static char *categories[_LC_LAST] = { "LC_MESSAGES", }; +/* + * Default locale per POSIX. Can be overridden on a per-target base. + */ +#ifndef DEFAULT_LOCALE +#define DEFAULT_LOCALE "C" +#endif +/* + * This variable can be changed by any outside mechanism. This allows, + * for instance, to load the default locale from a file. + */ +char __default_locale[ENCODING_LEN + 1] = DEFAULT_LOCALE; + /* * Current locales for each category */ @@ -731,9 +743,9 @@ __get_locale_env(struct _reent *p, int category) if (env == NULL || !*env) env = _getenv_r (p, "LANG"); - /* 4. if none is set, fall to "C" */ + /* 4. if none is set, fall to default locale */ if (env == NULL || !*env) - env = "C"; + env = __default_locale; return env; }