aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--locale/langinfo.h10
-rw-r--r--locale/nl_langinfo.c15
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