aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--intl/l10nflist.c20
-rw-r--r--locale/Makefile5
3 files changed, 22 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index a5ad9e36cf..c4abdcc1a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-08-13 Ulrich Drepper <drepper@gmail.com>
+
+ * intl/l10nflist.c (_nl_normalize_codeset): Make it compile outside
+ of libc. Make tolower call locale-independent. Optimize a bit by
+ using isdigit instead of isalnum.
+ * locale/Makefile (locale-CPPFLAGS): Add -DNOT_IN_libc.
+
2011-08-12 Ulrich Drepper <drepper@gmail.com>
* elf/dl-load.c (_dl_map_object): Show in debug output whether a DSO
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
index 82af2633b5..df91f3deca 100644
--- a/intl/l10nflist.c
+++ b/intl/l10nflist.c
@@ -334,13 +334,18 @@ _nl_normalize_codeset (codeset, name_len)
char *retval;
char *wp;
size_t cnt;
+#ifdef NOT_IN_libc
+ locale_t locale = newlocale (0, "C", NULL);
+#else
+# define locale _nl_C_locobj_ptr
+#endif
for (cnt = 0; cnt < name_len; ++cnt)
- if (__isalnum_l ((unsigned char) codeset[cnt], _nl_C_locobj_ptr))
+ if (__isalnum_l ((unsigned char) codeset[cnt], locale))
{
++len;
- if (__isalpha_l ((unsigned char) codeset[cnt], _nl_C_locobj_ptr))
+ if (! __isdigit_l ((unsigned char) codeset[cnt], locale))
only_digit = 0;
}
@@ -348,15 +353,14 @@ _nl_normalize_codeset (codeset, name_len)
if (retval != NULL)
{
+ wp = retval;
if (only_digit)
- wp = stpcpy (retval, "iso");
- else
- wp = retval;
+ wp = stpcpy (wp, "iso");
for (cnt = 0; cnt < name_len; ++cnt)
- if (__isalpha_l ((unsigned char) codeset[cnt], _nl_C_locobj_ptr))
- *wp++ = tolower ((unsigned char) codeset[cnt]);
- else if (__isdigit_l ((unsigned char) codeset[cnt], _nl_C_locobj_ptr))
+ if (__isalpha_l ((unsigned char) codeset[cnt], locale))
+ *wp++ = __tolower_l ((unsigned char) codeset[cnt], locale);
+ else if (__isdigit_l ((unsigned char) codeset[cnt], locale))
*wp++ = codeset[cnt];
*wp = '\0';
diff --git a/locale/Makefile b/locale/Makefile
index 2dbd8dc6a5..87c29a55a9 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -1,4 +1,5 @@
-# Copyright (C) 1991,1992,1995-2003,2005,2009 Free Software Foundation, Inc.
+# Copyright (C) 1991,1992,1995-2003,2005,2009,2011
+# 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
@@ -96,7 +97,7 @@ locale-CPPFLAGS := -DLOCALE_PATH='$(localepath)' \
-DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
-DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
- -Iprograms
+ -Iprograms -DNOT_IN_libc
CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts
CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts