Real implementation, copied from nl_langinfo.c.
authordrepper <drepper>
Fri, 14 Dec 2007 03:49:00 +0000 (03:49 +0000)
committerdrepper <drepper>
Fri, 14 Dec 2007 03:49:00 +0000 (03:49 +0000)
locale/nl_langinfo_l.c

index ef7b7a1..08e1534 100644 (file)
@@ -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
    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)