diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | include/langinfo.h | 1 | ||||
-rw-r--r-- | locale/nl_langinfo.c | 56 | ||||
-rw-r--r-- | locale/nl_langinfo_l.c | 43 | ||||
-rw-r--r-- | posix/regcomp.c | 2 |
5 files changed, 50 insertions, 59 deletions
diff --git a/ChangeLog b/ChangeLog index d0321fb14c..aa5b2c52b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-12-13 Ulrich Drepper <drepper@redhat.com> + + * locale/nl_langinfo.c (nl_langinfo): Just call __nl_langinfo_l. + * locale/nl_langinfo_l.c: Real implementation, copied from + nl_langinfo.c. + * include/langinfo.h: Add libc_hidden_proto for __nl_langinfo_l. + 2007-12-01 Jim Meyering <meyering@redhat.com> * posix/regcomp.c (optimize_utf8): Fix a typo, s/idx/ctx_type/, diff --git a/include/langinfo.h b/include/langinfo.h index 8f93671658..37a91c699d 100644 --- a/include/langinfo.h +++ b/include/langinfo.h @@ -5,5 +5,6 @@ libc_hidden_proto (nl_langinfo) extern __typeof (nl_langinfo_l) __nl_langinfo_l; +libc_hidden_proto (__nl_langinfo_l) #endif diff --git a/locale/nl_langinfo.c b/locale/nl_langinfo.c index c5fbf19e15..b873545caa 100644 --- a/locale/nl_langinfo.c +++ b/locale/nl_langinfo.c @@ -27,64 +27,10 @@ /* Return a string with the data for locale-dependent parameter ITEM. */ -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -char * -__nl_langinfo_l (item, l) - nl_item item; - __locale_t l; -#else char * nl_langinfo (item) nl_item item; -#endif { - int category = _NL_ITEM_CATEGORY (item); - unsigned int index = _NL_ITEM_INDEX (item); - const struct locale_data *data; - - if (category < 0 || category == LC_ALL || category >= __LC_LAST) - /* Bogus category: bogus item. */ - return (char *) ""; - - /* Special case value for NL_LOCALE_NAME (category). - This is not a real item index in the string table. */ - if (index == _NL_ITEM_INDEX (_NL_LOCALE_NAME (category))) - { -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define THISLOCALE l -#else -# define THISLOCALE _NL_CURRENT_LOCALE -#endif - return (char *) THISLOCALE->__names[category]; - } - -#ifdef USE_IN_EXTENDED_LOCALE_MODEL - data = l->__locales[category]; -#elif defined NL_CURRENT_INDIRECT - /* Make direct reference to every _nl_current_CATEGORY symbol, - since we know only at runtime which categories are used. */ - switch (category) - { -# define DEFINE_CATEGORY(category, category_name, items, a) \ - case category: data = *_nl_current_##category; break; -# include "categories.def" -# undef DEFINE_CATEGORY - default: /* Should be impossible. */ - return (char *) ""; - } -#else - data = _NL_CURRENT_DATA (category); -#endif - - if (index >= data->nstrings) - /* Bogus index for this category: bogus item. */ - return (char *) ""; - - /* Return the string for the specified item. */ - return (char *) data->values[index].string; + return __nl_langinfo_l (item, _NL_CURRENT_LOCALE); } -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -weak_alias (__nl_langinfo_l, nl_langinfo_l) -#else libc_hidden_def (nl_langinfo) -#endif diff --git a/locale/nl_langinfo_l.c b/locale/nl_langinfo_l.c index ef7b7a1a6a..08e1534a8b 100644 --- a/locale/nl_langinfo_l.c +++ b/locale/nl_langinfo_l.c @@ -1,4 +1,5 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* User interface for extracting locale-dependent parameters. + Copyright (C) 1995-1997,1999-2002,2005,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,5 +17,41 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#define USE_IN_EXTENDED_LOCALE_MODEL 1 -#include <nl_langinfo.c> +#include <langinfo.h> +#include <locale.h> +#include <errno.h> +#include <stddef.h> +#include "localeinfo.h" + + +/* Return a string with the data for locale-dependent parameter ITEM. */ + +char * +__nl_langinfo_l (item, l) + nl_item item; + __locale_t l; +{ + int category = _NL_ITEM_CATEGORY (item); + unsigned int index = _NL_ITEM_INDEX (item); + const struct locale_data *data; + + if (category < 0 || category == LC_ALL || category >= __LC_LAST) + /* Bogus category: bogus item. */ + return (char *) ""; + + /* Special case value for NL_LOCALE_NAME (category). + This is not a real item index in the string table. */ + if (index == _NL_ITEM_INDEX (_NL_LOCALE_NAME (category))) + return (char *) l->__names[category]; + + data = l->__locales[category]; + + if (index >= data->nstrings) + /* Bogus index for this category: bogus item. */ + return (char *) ""; + + /* Return the string for the specified item. */ + return (char *) data->values[index].string; +} +libc_hidden_def (__nl_langinfo_l) +weak_alias (__nl_langinfo_l, nl_langinfo_l) diff --git a/posix/regcomp.c b/posix/regcomp.c index 1de46d72ed..f4eab3adbd 100644 --- a/posix/regcomp.c +++ b/posix/regcomp.c @@ -1030,7 +1030,7 @@ optimize_utf8 (re_dfa_t *dfa) mb_chars = 1; break; case ANCHOR: - switch (dfa->nodes[node].opr.ctx_index) + switch (dfa->nodes[node].opr.ctx_type) { case LINE_FIRST: case LINE_LAST: |