diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-12-14 03:54:07 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-12-14 03:54:07 +0000 |
commit | bc3e1c127392da88d0c8bf2ae728147982a3d1bc (patch) | |
tree | a7f2e7c9d9f1396438c4f74e9d727d9c731ffed2 /locale/nl_langinfo_l.c | |
parent | 3eb0e1c6d6259c1d8db0859589a5ca67e3cac8e2 (diff) | |
download | glibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.tar.gz glibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.tar.xz glibc-bc3e1c127392da88d0c8bf2ae728147982a3d1bc.zip |
* 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.c | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/locale/nl_langinfo_l.c b/locale/nl_langinfo_l.c index ef7b7a1a6a..08e1534a8b 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) |