Index: lib/libc/citrus/citrus_lc_ctype.c =================================================================== RCS file: /cvsroot/src/lib/libc/citrus/citrus_lc_ctype.c,v retrieving revision 1.2 diff -u -r1.2 citrus_lc_ctype.c --- lib/libc/citrus/citrus_lc_ctype.c 11 Jan 2009 02:46:24 -0000 1.2 +++ lib/libc/citrus/citrus_lc_ctype.c 18 Jan 2009 07:50:13 -0000 @@ -109,6 +109,14 @@ _NukeRune(data); return EINVAL; } + data->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name = "tolower"; + data->rl_wctrans[_WCTRANS_INDEX_LOWER].te_cached = &data->rl_maplower[0]; + data->rl_wctrans[_WCTRANS_INDEX_LOWER].te_extmap = &data->rl_maplower_ext; + + data->rl_wctrans[_WCTRANS_INDEX_UPPER].te_name = "toupper"; + data->rl_wctrans[_WCTRANS_INDEX_UPPER].te_cached = &data->rl_mapupper[0]; + data->rl_wctrans[_WCTRANS_INDEX_UPPER].te_extmap = &data->rl_mapupper_ext; + *pdata = data; return 0; } Index: lib/libc/locale/_wctrans.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/_wctrans.c,v retrieving revision 1.11 diff -u -r1.11 _wctrans.c --- lib/libc/locale/_wctrans.c 17 Jan 2009 17:56:01 -0000 1.11 +++ lib/libc/locale/_wctrans.c 18 Jan 2009 07:50:20 -0000 @@ -65,6 +65,7 @@ #include "namespace.h" +#include #include #include #include @@ -73,31 +74,6 @@ #include "_wctrans_local.h" /* - * _wctrans_init: - */ - -_RuneLocale * -_wctrans_init(_RuneLocale *rl) -{ - _RuneLocale *nrl; - - if (rl == &_DefaultRuneLocale) { - if ((nrl = malloc(sizeof(*nrl))) == NULL) - return NULL; - (void)memcpy(nrl, &_DefaultRuneLocale, sizeof(*nrl)); - } else - nrl = rl; - - nrl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name = "tolower"; - nrl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_cached = rl->rl_maplower; - nrl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_extmap = &rl->rl_maplower_ext; - nrl->rl_wctrans[_WCTRANS_INDEX_UPPER].te_name = "toupper"; - nrl->rl_wctrans[_WCTRANS_INDEX_UPPER].te_cached = rl->rl_mapupper; - nrl->rl_wctrans[_WCTRANS_INDEX_UPPER].te_extmap = &rl->rl_mapupper_ext; - return nrl; -} - -/* * _towctrans_ext: * translate a character (extended part) */ Index: lib/libc/locale/_wctrans_local.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/_wctrans_local.h,v retrieving revision 1.5 diff -u -r1.5 _wctrans_local.h --- lib/libc/locale/_wctrans_local.h 16 Jan 2009 21:12:11 -0000 1.5 +++ lib/libc/locale/_wctrans_local.h 18 Jan 2009 07:50:20 -0000 @@ -31,7 +31,6 @@ __BEGIN_DECLS wint_t _towctrans_ext(wint_t, _WCTransEntry *); -_RuneLocale *_wctrans_init(_RuneLocale *); __END_DECLS static __inline wint_t @@ -44,16 +43,16 @@ static __inline struct _WCTransEntry * _wctrans_lower(_RuneLocale *rl) { - if (rl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name == NULL) - rl = _wctrans_init(rl); + _DIAGASSERT(rl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name != NULL); + return (&rl->rl_wctrans[_WCTRANS_INDEX_LOWER]); } static __inline struct _WCTransEntry * _wctrans_upper(_RuneLocale *rl) { - if (rl->rl_wctrans[_WCTRANS_INDEX_UPPER].te_name == NULL) - rl = _wctrans_init(rl); + _DIAGASSERT(rl->rl_wctrans[_WCTRANS_INDEX_UPPER].te_name != NULL); + return (&rl->rl_wctrans[_WCTRANS_INDEX_UPPER]); } Index: lib/libc/locale/_wctype.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/_wctype.c,v retrieving revision 1.3 diff -u -r1.3 _wctype.c --- lib/libc/locale/_wctype.c 16 Jan 2009 21:12:11 -0000 1.3 +++ lib/libc/locale/_wctype.c 18 Jan 2009 07:50:20 -0000 @@ -113,6 +113,7 @@ } wint_t +/*ARGSUSED*/ _towctrans_priv(_RuneLocale const *rl, wint_t wc, _WCTransEntry const *te) { @@ -126,8 +127,7 @@ if (wc == WEOF) return wc; - if (te->te_name == NULL) - rl = _wctrans_init(__UNCONST(rl)); + _DIAGASSERT(te->te_name != NULL); if (_RUNE_ISCACHED(wc)) return te->te_cached[(size_t)wc]; wc0 = (__nbrune_t)wc; Index: lib/libc/locale/global_locale.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/global_locale.c,v retrieving revision 1.2 diff -u -r1.2 global_locale.c --- lib/libc/locale/global_locale.c 11 Jan 2009 02:46:28 -0000 1.2 +++ lib/libc/locale/global_locale.c 18 Jan 2009 07:50:20 -0000 @@ -141,7 +141,7 @@ [(size_t)ALT_DIGITS ] = NULL, }, }, - .query = /*_C_LOCALE*/ { 'C', '\0' }, + .query = { _C_LOCALE }, .part_name = { [(size_t)LC_ALL ] = _C_LOCALE, [(size_t)LC_COLLATE ] = _C_LOCALE, Index: lib/libc/locale/iswctype_mb.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/iswctype_mb.c,v retrieving revision 1.3 diff -u -r1.3 iswctype_mb.c --- lib/libc/locale/iswctype_mb.c 16 Jan 2009 21:12:11 -0000 1.3 +++ lib/libc/locale/iswctype_mb.c 18 Jan 2009 07:50:20 -0000 @@ -111,8 +111,6 @@ size_t i; rl = _RUNE_LOCALE(); - if (rl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name == NULL) - rl = _wctrans_init(__UNCONST(rl)); for (i = 0; i < _WCTRANS_NINDEXES; ++i) { if (!strcmp(rl->rl_wctrans[i].te_name, charmap)) return (wctrans_t)__UNCONST(&rl->rl_wctype[i]); Index: lib/libc/locale/runetable.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/runetable.c,v retrieving revision 1.19 diff -u -r1.19 runetable.c --- lib/libc/locale/runetable.c 11 Jan 2009 02:46:29 -0000 1.19 +++ lib/libc/locale/runetable.c 18 Jan 2009 07:50:20 -0000 @@ -327,8 +327,14 @@ "646", &_citrus_ctype_default, { - { NULL, NULL, NULL }, - { NULL, NULL, NULL }, + { "towlower", + __UNCONST(&_DefaultRuneLocale.rl_maplower[0]), + __UNCONST(&_DefaultRuneLocale.rl_maplower_ext) + }, + { "towupper", + __UNCONST(&_DefaultRuneLocale.rl_mapupper[0]), + __UNCONST(&_DefaultRuneLocale.rl_mapupper_ext) + }, }, { { "alnum", _CTYPE_A|_CTYPE_D },