diff options
Diffstat (limited to 'locale')
-rw-r--r-- | locale/langinfo.h | 10 | ||||
-rw-r--r-- | locale/nl_langinfo.c | 15 |
2 files changed, 22 insertions, 3 deletions
diff --git a/locale/langinfo.h b/locale/langinfo.h index 15ff950bd5..10c4232918 100644 --- a/locale/langinfo.h +++ b/locale/langinfo.h @@ -1,5 +1,5 @@ /* Access to locale-dependent parameters. - Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 1995-2002,2003,2004,2005 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 @@ -38,7 +38,6 @@ __BEGIN_DECLS #define _NL_ITEM_CATEGORY(item) ((int) (item) >> 16) #define _NL_ITEM_INDEX(item) ((int) (item) & 0xffff) - /* Enumeration of locale items that can be queried with `nl_langinfo'. */ enum { @@ -566,6 +565,13 @@ enum _NL_NUM }; +/* This macro produces an item you can pass to `nl_langinfo' or + `nl_langinfo_l' to get the name of the locale in use for CATEGORY. */ +#define _NL_LOCALE_NAME(category) _NL_ITEM ((category), -1) +#ifdef __USE_GNU +# define NL_LOCALE_NAME(category) _NL_LOCALE_NAME (category) +#endif + /* Return the current locale's value for ITEM. If ITEM is invalid, an empty string is returned. diff --git a/locale/nl_langinfo.c b/locale/nl_langinfo.c index 2314b80f0f..c5fbf19e15 100644 --- a/locale/nl_langinfo.c +++ b/locale/nl_langinfo.c @@ -1,5 +1,6 @@ /* User interface for extracting locale-dependent parameters. - Copyright (C) 1995,96,97,99,2000,01,02 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,99,2000,2001,2002,2005 + 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 @@ -45,6 +46,18 @@ nl_langinfo (item) /* 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 |