[EMAIL PROTECTED] writes: > I misread the code, it is not a typo. The character class in the regexp > in the first re_compile_pattern needs to be enclosed in []; now it fails > with REG_ECTYPE as it should.
Thanks for reporting the problem. I discovered some other problems while fixing this, and installed the following patch into gnulib and coreutils. This isn't the end of the changes for regex; I also need to merge it with glibc. But that's a larger story. 2006-03-25 Paul Eggert <[EMAIL PROTECTED]> * regex.m4 (gl_REGEX): Don't insist on REG_SYNTAX_POSIX_EGREP, REG_SYNTAX_EMACS, and REG_IGNORE_CASE. Settle for the traditional glibc names. Even if glibc is changed to conform to POSIX, the traditional names will be available anyway, since regex depends on the extensions module. Also, fix a longstanding typo in the implementation of Spencer ERE test #75 from grep 2.3. Problems reported by Emanuele Giaquinta. Also, change sense of cached variable, so that the message makes sense. --- regex.m4 17 Mar 2006 10:14:32 -0000 1.49 +++ regex.m4 25 Mar 2006 09:48:47 -0000 1.51 @@ -1,4 +1,4 @@ -#serial 33 +#serial 35 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006 Free Software Foundation, Inc. @@ -24,7 +24,7 @@ AC_DEFUN([gl_REGEX], systems with recent-enough versions of the GNU C Library (use with caution on other systems)])]) - case $with_included_regex in + case $with_included_regex in #( yes|no) ac_use_included_regex=$with_included_regex ;; '') @@ -34,20 +34,18 @@ AC_DEFUN([gl_REGEX], # regex.c. The first failing regular expression is from `Spencer ere # test #75' in grep-2.3. AC_CACHE_CHECK([for working re_compile_pattern], - [gl_cv_func_re_compile_pattern_broken], + [gl_cv_func_re_compile_pattern_working], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT - #include <regex.h>], + #include <regex.h> + ], [[static struct re_pattern_buffer regex; const char *s; struct re_registers regs; - /* Use the POSIX-compliant spelling with leading REG_, - rather than the traditional GNU spelling with leading RE_, - so that we reject older libc implementations. */ - re_set_syntax (REG_SYNTAX_POSIX_EGREP); + re_set_syntax (RE_SYNTAX_POSIX_EGREP); memset (®ex, 0, sizeof (regex)); - s = re_compile_pattern ("a[:@:>@:]b\n", 9, ®ex); + s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, ®ex); /* This should fail with _Invalid character class name_ error. */ if (!s) exit (1); @@ -81,10 +79,9 @@ AC_DEFUN([gl_REGEX], exit (1); /* The version of regex.c in older versions of gnulib - ignored REG_IGNORE_CASE (which was then called RE_ICASE). - Detect that problem too. */ + ignored RE_ICASE. Detect that problem too. */ memset (®ex, 0, sizeof (regex)); - re_set_syntax (REG_SYNTAX_EMACS | REG_IGNORE_CASE); + re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE); s = re_compile_pattern ("x", 1, ®ex); if (s) exit (1); @@ -101,15 +98,18 @@ AC_DEFUN([gl_REGEX], These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t and 32-bit int. */ if (sizeof (regoff_t) < sizeof (ptrdiff_t) - || sizeof (regoff_t) < sizeof (ssize_t)) + || sizeof (regoff_t) < sizeof (ssize_t)) exit (1); exit (0);]])], - [gl_cv_func_re_compile_pattern_broken=no], - [gl_cv_func_re_compile_pattern_broken=yes], - dnl When crosscompiling, assume it is broken. - [gl_cv_func_re_compile_pattern_broken=yes])]) - ac_use_included_regex=$gl_cv_func_re_compile_pattern_broken + [gl_cv_func_re_compile_pattern_working=yes], + [gl_cv_func_re_compile_pattern_working=no], + dnl When crosscompiling, assume it is not working. + [gl_cv_func_re_compile_pattern_working=no])]) + case $gl_cv_func_re_compile_pattern_working in #( + yes) ac_use_included_regex=no;; #( + no) ac_use_included_regex=yes;; + esac ;; *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex]) ;; _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils