From 86620e21902f8ad14acf919d15bb49b9455311a6 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 29 Aug 2002 15:32:08 +0000 Subject: 2002-08-29 Jeff Johnston * 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. --- newlib/libc/locale/locale.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'newlib/libc/locale') diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 7a4db069c..691ff9f80 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] == '-') -- cgit v1.2.3