From 2b71beea82aa55d2e5aa8efa36013e0b6cc0d280 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 30 Aug 2002 19:36:12 +0000 Subject: [PATCH] * intl/dcigettext.c (DCIGETTEXT) [_LIBC]: Check for bogus CATEGORY. [_LIBC] (category_to_name): Don't define the function. Instead define a macro using _nl_category_names. --- ChangeLog | 4 ++++ intl/dcigettext.c | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1f484638fd..8d9cf20a36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2002-08-30 Roland McGrath + * intl/dcigettext.c (DCIGETTEXT) [_LIBC]: Check for bogus CATEGORY. + [_LIBC] (category_to_name): Don't define the function. Instead + define a macro using _nl_category_names. + * locale/xlocale.h (struct __locale_struct): New member `__names'. * locale/xlocale.c (_nl_C_locobj): Update initializer. * locale/global-locale.c (_nl_global_locale): Likewise. diff --git a/intl/dcigettext.c b/intl/dcigettext.c index 2fb8a2f048..81bfdceb94 100644 --- a/intl/dcigettext.c +++ b/intl/dcigettext.c @@ -265,10 +265,15 @@ static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, const char *translation, size_t translation_len)) internal_function; -static const char *category_to_name PARAMS ((int category)) internal_function; static const char *guess_category_value PARAMS ((int category, const char *categoryname)) internal_function; +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) _nl_category_names[category] +#else +static const char *category_to_name PARAMS ((int category)) internal_function; +#endif /* For those loosing systems which don't have `alloca' we have to add @@ -391,6 +396,15 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) if (msgid1 == NULL) return NULL; +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + __libc_rwlock_rdlock (_nl_state_lock); /* If DOMAINNAME is NULL, we are interested in the default domain. If @@ -985,7 +999,7 @@ plural_lookup (domain, n, translation, translation_len) return (char *) p; } - +#ifndef _LIBC /* Return string representation of locale CATEGORY. */ static const char * internal_function @@ -1045,6 +1059,7 @@ category_to_name (category) return retval; } +#endif /* Guess value of current locale from value of the environment variables. */ static const char * -- 2.43.5