diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-29 05:57:16 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-29 05:57:16 +0000 |
commit | 9a411bf59fc681103e6a509ec3e13c68e8c61224 (patch) | |
tree | f62b3b3542ee9687ab654590687c22f348f47e67 /locale/findlocale.c | |
parent | 963e3b588003bafb2529e4a989211b0ecc39c684 (diff) | |
download | glibc-9a411bf59fc681103e6a509ec3e13c68e8c61224.tar glibc-9a411bf59fc681103e6a509ec3e13c68e8c61224.tar.gz glibc-9a411bf59fc681103e6a509ec3e13c68e8c61224.tar.bz2 glibc-9a411bf59fc681103e6a509ec3e13c68e8c61224.zip |
* locale/findlocale.c [NL_CURRENT_INDIRECT] (_nl_C): New variable.
* locale/setlocale.c (setlocale) [NL_CURRENT_INDIRECT]: Null return
from _nl_find_locale ok if for _nl_C_name.
Diffstat (limited to 'locale/findlocale.c')
-rw-r--r-- | locale/findlocale.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/locale/findlocale.c b/locale/findlocale.c index 80480113c0..6ecfdc2324 100644 --- a/locale/findlocale.c +++ b/locale/findlocale.c @@ -30,9 +30,22 @@ #include "../iconv/gconv_charset.h" -#ifndef SHARED -/* Constant data defined in setlocale.c. */ -extern struct locale_data *const _nl_C[] attribute_hidden; +#ifdef NL_CURRENT_INDIRECT +# define DEFINE_CATEGORY(category, category_name, items, a) \ +extern struct locale_data _nl_C_##category; \ +weak_extern (_nl_C_##category) +# include "categories.def" +# undef DEFINE_CATEGORY + +/* Array indexed by category of pointers to _nl_C_CATEGORY slots. + Elements are zero for categories whose data is never used. */ +struct locale_data *const _nl_C[] attribute_hidden = + { +# define DEFINE_CATEGORY(category, category_name, items, a) \ + [category] = &_nl_C_##category, +# include "categories.def" +# undef DEFINE_CATEGORY + }; #else # define _nl_C (_nl_C_locobj.__locales) #endif |