From 0cfc3b87f0c3be63db1075ed465443c4b3c4cec2 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 4 Jan 2010 09:07:52 +0100 Subject: [PATCH] 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. * lib/regex_internal.h: Always include , now. * modules/regex (Depends-on): Add nl_langinfo. --- ChangeLog | 7 +++++++ lib/regcomp.c | 7 ++++++- lib/regex_internal.h | 5 ++--- modules/regex | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 272c77fc35..a69a14cc65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-01-04 Jim Meyering + + 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 fdopendir: fix configure test diff --git a/lib/regcomp.c b/lib/regcomp.c index 9745beab3a..3f21722367 100644 --- a/lib/regcomp.c +++ b/lib/regcomp.c @@ -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 diff --git a/lib/regex_internal.h b/lib/regex_internal.h index 1f395079fe..f5c3125fbd 100644 --- a/lib/regex_internal.h +++ b/lib/regex_internal.h @@ -28,9 +28,8 @@ #include #include -#ifdef _LIBC -# include -#else +#include +#ifndef _LIBC # include "localcharset.h" #endif #if defined HAVE_LOCALE_H || defined _LIBC diff --git a/modules/regex b/modules/regex index c6a1235949..f51640621c 100644 --- a/modules/regex +++ b/modules/regex @@ -22,6 +22,7 @@ memcmp memmove mbrtowc mbsinit +nl_langinfo stdbool stdint ssize_t -- 2.30.2