about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-08-13 12:21:10 -0400
committerAndreas Schwab <schwab@redhat.com>2011-08-15 10:42:30 +0200
commitf370dd3dc5372011236ea41d54452231b4ca7858 (patch)
treea5981254632b57522625fbf65b227c536252c377
parentf47fcd632e676612ff7c74d2cfa83506b2cb4f85 (diff)
downloadglibc-f370dd3dc5372011236ea41d54452231b4ca7858.tar.gz
glibc-f370dd3dc5372011236ea41d54452231b4ca7858.tar.xz
glibc-f370dd3dc5372011236ea41d54452231b4ca7858.zip
Fix compile problem
l10nflist compiles for localedef now.  Optimize a bit.
(cherry picked from commit f9ddf089f124279836930692b9cd7bc807e60088)
-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 aeb7f836cb..1af4ec2943 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-11  Ulrich Drepper  <drepper@gmail.com>
 
 	* intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
index a38e0efe90..0b071e08e4 100644
--- a/intl/l10nflist.c
+++ b/intl/l10nflist.c
@@ -332,13 +332,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;
       }
 
@@ -346,15 +351,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