diff options
Diffstat (limited to 'libc')
-rw-r--r-- | libc/misc/locale/locale.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libc/misc/locale/locale.c b/libc/misc/locale/locale.c index cbed01146..1e79204c0 100644 --- a/libc/misc/locale/locale.c +++ b/libc/misc/locale/locale.c @@ -32,6 +32,11 @@ * Bug in duplocale... collation data wasn't copied. * Bug in newlocale... translate 1<<LC_ALL to LC_ALL_MASK. * Bug in _wchar_utf8sntowcs... fix cut-n-paste error. + * + * Aug 31, 2003 + * Hack around bg_BG bug; grouping specified but no thousands separator. + * Also, disable the locale link_warnings for now, as they generate a + * lot of noise when using libstd++. */ @@ -56,6 +61,14 @@ #include <ctype.h> #include <stdio.h> +#ifdef __UCLIBC_MJN3_ONLY__ +#ifdef L_setlocale +#warning TODO: Make the link_warning()s a config option? +#endif +#endif +#undef link_warning +#define link_warning(A,B) + #undef __LOCALE_C_ONLY #ifndef __UCLIBC_HAS_LOCALE__ #define __LOCALE_C_ONLY @@ -778,8 +791,19 @@ int _locale_set_l(const unsigned char *p, __locale_t base) base->thousands_sep_len = __locale_mbrtowc_l(&base->thousands_sep_wc, base->thousands_sep, base); +#if 1 +#ifdef __UCLIBC_MJN3_ONLY__ +#warning TODO: Remove hack involving grouping without a thousep char (bg_BG). +#endif + assert(base->thousands_sep_len >= 0); + if (base->thousands_sep_len == 0) { + base->grouping = base->thousands_sep; /* empty string */ + } + assert(base->thousands_sep[base->thousands_sep_len] == 0); +#else assert(base->thousands_sep_len > 0); assert(base->thousands_sep[base->thousands_sep_len] == 0); +#endif } /* } else if (i == LC_COLLATE) { */ |