regcomp: sync from glibc; always use nl_langinfo
authorJim Meyering <meyering@redhat.com>
Mon, 4 Jan 2010 08:07:52 +0000 (09:07 +0100)
committerJim Meyering <meyering@redhat.com>
Mon, 4 Jan 2010 14:44:12 +0000 (15:44 +0100)
* lib/regcomp.c (init_dfa) [!LIBC]: Always use nl_langinfo (CODESET),
now that gnulib provides it.  Recognize UTF8 as well as UTF-8.
* lib/regex_internal.h: Always include <langinfo.h>, now.
* modules/regex (Depends-on): Add nl_langinfo.

ChangeLog
lib/regcomp.c
lib/regex_internal.h
modules/regex

index 272c77f..a69a14c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-01-04  Jim Meyering  <meyering@redhat.com>
+
+       regcomp: sync from glibc; always use nl_langinfo
+       * lib/regcomp.c (init_dfa) [!LIBC]: Always use nl_langinfo (CODESET),
+       now that gnulib provides it.  Recognize UTF8 as well as UTF-8.
+       * modules/regex (Depends-on): Add nl_langinfo.
+
 2010-01-04  Eric Blake  <ebb9@byu.net>
 
        fdopendir: fix configure test
index 9745bea..3f21722 100644 (file)
@@ -850,6 +850,9 @@ static reg_errcode_t
 init_dfa (re_dfa_t *dfa, size_t pat_len)
 {
   __re_size_t table_size;
+#ifndef _LIBC
+  char *codeset_name;
+#endif
 #ifdef RE_ENABLE_I18N
   size_t max_i18n_object_size = MAX (sizeof (wchar_t), sizeof (wctype_t));
 #else
@@ -893,7 +896,9 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
   dfa->map_notascii = (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_TO_NONASCII)
                       != 0);
 #else
-  if (strcmp (locale_charset (), "UTF-8") == 0)
+  codeset_name = nl_langinfo (CODESET);
+  if (strcasecmp (codeset_name, "UTF-8") == 0
+      || strcasecmp (codeset_name, "UTF8") == 0)
     dfa->is_utf8 = 1;
 
   /* We check exhaustively in the loop below if this charset is a
index 1f39507..f5c3125 100644 (file)
@@ -28,9 +28,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#ifdef _LIBC
-# include <langinfo.h>
-#else
+#include <langinfo.h>
+#ifndef _LIBC
 # include "localcharset.h"
 #endif
 #if defined HAVE_LOCALE_H || defined _LIBC
index c6a1235..f516406 100644 (file)
@@ -22,6 +22,7 @@ memcmp
 memmove
 mbrtowc
 mbsinit
+nl_langinfo
 stdbool
 stdint
 ssize_t