diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2002-08-29 15:32:08 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2002-08-29 15:32:08 +0000 |
commit | 86620e21902f8ad14acf919d15bb49b9455311a6 (patch) | |
tree | 47e63fcc01a4bae56e647eacf0008021a8afa90e /newlib | |
parent | 7382e593a01ee81cea5df91a77a9868281de8c04 (diff) | |
download | newlib-86620e21902f8ad14acf919d15bb49b9455311a6.zip newlib-86620e21902f8ad14acf919d15bb49b9455311a6.tar.gz newlib-86620e21902f8ad14acf919d15bb49b9455311a6.tar.bz2 |
2002-08-29 Jeff Johnston <jjohnstn@redhat.com>
* libc/locale/locale.c (_setlocale_r)[MB_CAPABLE]: Fix so
default locale "" is accepted for LC_CTYPE or LC_MESSAGES
and is treated as if "C" was specified.
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 6 | ||||
-rw-r--r-- | newlib/libc/locale/locale.c | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 29870ab..799c350 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,9 @@ +2002-08-29 Jeff Johnston <jjohnstn@redhat.com> + + * libc/locale/locale.c (_setlocale_r)[MB_CAPABLE]: Fix so + default locale "" is accepted for LC_CTYPE or LC_MESSAGES + and is treated as if "C" was specified. + 2002-08-28 Jeff Johnston <jjohnstn@redhat.com> * Makefile.am (install-data-local): Move install of build diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 7a4db06..691ff9f 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -136,6 +136,7 @@ _DEFUN(_setlocale_r, (p, category, locale), if (locale) { + char *locale_name = (char *)locale; if (category != LC_CTYPE && category != LC_MESSAGES) { if (strcmp (locale, "C") && strcmp (locale, "")) @@ -143,17 +144,15 @@ _DEFUN(_setlocale_r, (p, category, locale), if (category == LC_ALL) { strcpy (last_lc_ctype, lc_ctype); - strcpy (lc_ctype, locale); + strcpy (lc_ctype, "C"); strcpy (last_lc_messages, lc_messages); - strcpy (lc_messages, locale); + strcpy (lc_messages, "C"); __mb_cur_max = 1; } } else { - if (locale[0] != 'C') - return 0; - if (locale[1] == '-') + if (locale[0] == 'C' && locale[1] == '-') { switch (locale[2]) { @@ -180,12 +179,18 @@ _DEFUN(_setlocale_r, (p, category, locale), default: return 0; } - } + } + else + { + if (strcmp (locale, "C") && strcmp (locale, "")) + return 0; + locale_name = "C"; /* C is always the default locale */ + } if (category == LC_CTYPE) { strcpy (last_lc_ctype, lc_ctype); - strcpy (lc_ctype, locale); + strcpy (lc_ctype, locale_name); __mb_cur_max = 1; if (locale[1] == '-') @@ -213,7 +218,7 @@ _DEFUN(_setlocale_r, (p, category, locale), else { strcpy (last_lc_messages, lc_messages); - strcpy (lc_messages, locale); + strcpy (lc_messages, locale_name); charset = "ISO-8859-1"; if (locale[1] == '-') |