From 9a411bf59fc681103e6a509ec3e13c68e8c61224 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 29 Aug 2002 05:57:16 +0000 Subject: * 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. --- locale/findlocale.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'locale/findlocale.c') 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 -- cgit 1.4.1