From 500a1f289711497e9a6e1da0e67e3ea2369a7027 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 28 Mar 2005 19:22:05 +0000 Subject: [PATCH] 2005-03-28 Roland McGrath * locale/langinfo.h (_NL_LOCALE_NAME): New macro. [__USE_GNU] (NL_LOCALE_NAME): New macro. * locale/nl_langinfo.c: Grok special item value for _NL_LOCALE_NAME, return locale name string for the category. --- locale/langinfo.h | 10 ++++++++-- locale/nl_langinfo.c | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/locale/langinfo.h b/locale/langinfo.h index 15ff950..10c4232 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 2314b80..c5fbf19 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 -- 2.7.4