aboutsummaryrefslogtreecommitdiff
path: root/locale/nl_langinfo_l.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-12-14 03:54:07 +0000
committerUlrich Drepper <drepper@redhat.com>2007-12-14 03:54:07 +0000
commitbc3e1c127392da88d0c8bf2ae728147982a3d1bc (patch)
treea7f2e7c9d9f1396438c4f74e9d727d9c731ffed2 /locale/nl_langinfo_l.c
parent3eb0e1c6d6259c1d8db0859589a5ca67e3cac8e2 (diff)
downloadglibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.zip
glibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.tar.gz
glibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.tar.bz2
* 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.
Diffstat (limited to 'locale/nl_langinfo_l.c')
-rw-r--r--locale/nl_langinfo_l.c43
1 files changed, 40 insertions, 3 deletions
diff --git a/locale/nl_langinfo_l.c b/locale/nl_langinfo_l.c
index ef7b7a1..08e1534 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)