diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-07-08 00:23:15 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-07-08 00:23:15 +0000 |
commit | ce3bb28d9562875cfbd6f6054df68fc742576099 (patch) | |
tree | 071ea7bbc303af34cc23ffce59e24e80e3b5c80b /m4 | |
parent | 36a263effc805cf7e44e10b0d552cff807d5d4d5 (diff) | |
download | coreutils-ce3bb28d9562875cfbd6f6054df68fc742576099.tar.xz |
Switch to Isamu Hasegawa's implementation of regex, which is
now in gnulib.
Diffstat (limited to 'm4')
-rw-r--r-- | m4/ChangeLog | 6 | ||||
-rw-r--r-- | m4/regex.m4 | 88 |
2 files changed, 56 insertions, 38 deletions
diff --git a/m4/ChangeLog b/m4/ChangeLog index 8dbd66e18..d7fb9776f 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,9 @@ +2005-07-07 Paul Eggert <eggert@cs.ucla.edu> + + Switch to Isamu Hasegawa's implementation of regex, which is + now in gnulib. + * regex.m4: Import from gnulib. + 2005-07-04 Paul Eggert <eggert@cs.ucla.edu> * prereq.m4 (gl_PREREQ): Don't require gl_TYPEOF; no longer needed. diff --git a/m4/regex.m4 b/m4/regex.m4 index 34435de66..7908f7e49 100644 --- a/m4/regex.m4 +++ b/m4/regex.m4 @@ -1,6 +1,6 @@ -#serial 22 +#serial 23 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 Free +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free # Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -19,6 +19,10 @@ dnl Usage: gl_INCLUDED_REGEX([lib/regex.c]) dnl AC_DEFUN([gl_INCLUDED_REGEX], [ + AC_LIBSOURCES( + [regcomp.c, regex.c, regex.h, + regex_internal.c, regex_internal.h, regexec.c]) + dnl Even packages that don't use regex.c can use this macro. dnl Of course, for them it doesn't do anything. @@ -31,9 +35,10 @@ AC_DEFUN([gl_INCLUDED_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], - jm_cv_func_working_re_compile_pattern, - AC_TRY_RUN( -[#include <stdio.h> + [gl_cv_func_working_re_compile_pattern], + [AC_TRY_RUN( + [[ +#include <stdio.h> #include <string.h> #include <regex.h> int @@ -44,12 +49,12 @@ AC_DEFUN([gl_INCLUDED_REGEX], struct re_registers regs; 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", 9, ®ex); /* This should fail with _Invalid character class name_ error. */ if (!s) exit (1); - /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ + /* This should succeed, but does not for e.g. glibc-2.1.3. */ memset (®ex, 0, sizeof (regex)); s = re_compile_pattern ("{1", 2, ®ex); @@ -59,11 +64,11 @@ AC_DEFUN([gl_INCLUDED_REGEX], /* The following example is derived from a problem report against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */ memset (®ex, 0, sizeof (regex)); - s = re_compile_pattern ("[[an\371]]*n", 7, ®ex); + s = re_compile_pattern ("[an\371]*n", 7, ®ex); if (s) exit (1); - /* This should match, but doesn't for e.g. glibc-2.2.1. */ + /* This should match, but does not for e.g. glibc-2.2.1. */ if (re_match (®ex, "an", 2, 0, ®s) != 2) exit (1); @@ -72,34 +77,50 @@ AC_DEFUN([gl_INCLUDED_REGEX], if (s) exit (1); - /* The version of regex.c in e.g. GNU libc-2.2.93 didn't + /* The version of regex.c in e.g. GNU libc-2.2.93 did not work with a negative RANGE argument. */ if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1) exit (1); + /* The version of regex.c in older versions of gnulib + * ignored RE_ICASE. Detect that problem too. */ + memset (®ex, 0, sizeof (regex)); + re_set_syntax(RE_SYNTAX_EMACS|RE_ICASE); + s = re_compile_pattern ("x", 1, ®ex); + if (s) + exit (1); + + if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0) + exit (1); + + /* REG_STARTEND was added to glibc on 2004-01-15. + Reject older versions. */ + if (! REG_STARTEND) + exit (1); + exit (0); } - ], - jm_cv_func_working_re_compile_pattern=yes, - jm_cv_func_working_re_compile_pattern=no, - dnl When crosscompiling, assume it's broken. - jm_cv_func_working_re_compile_pattern=no)) - if test $jm_cv_func_working_re_compile_pattern = yes; then + ]], + [gl_cv_func_working_re_compile_pattern=yes], + [gl_cv_func_working_re_compile_pattern=no], + dnl When crosscompiling, assume it is broken. + [gl_cv_func_working_re_compile_pattern=no])]) + if test $gl_cv_func_working_re_compile_pattern = yes; then ac_use_included_regex=no fi test -n "$1" || AC_MSG_ERROR([missing argument]) - m4_syscmd([test -f $1]) + m4_syscmd([test -f '$1']) ifelse(m4_sysval, 0, [ - AC_ARG_WITH(included-regex, - [ --without-included-regex don't compile regex; this is the default on - systems with version 2 of the GNU C library - (use with caution on other system)], - jm_with_regex=$withval, - jm_with_regex=$ac_use_included_regex) - if test "$jm_with_regex" = yes; then - AC_LIBOBJ(regex) + AC_ARG_WITH([included-regex], + [ --without-included-regex don't compile regex; this is the default on + systems with recent-enough versions of the GNU C + Library (use with caution on other systems)], + [gl_with_regex=$withval], + [gl_with_regex=$ac_use_included_regex]) + if test "X$gl_with_regex" = Xyes; then + AC_LIBOBJ([regex]) gl_PREREQ_REGEX fi ], @@ -107,20 +128,11 @@ AC_DEFUN([gl_INCLUDED_REGEX], ] ) -# Prerequisites of lib/regex.c. +# Prerequisites of lib/regex.c and lib/regex_internal.c. AC_DEFUN([gl_PREREQ_REGEX], [ - dnl FIXME: Maybe provide a btowc replacement someday: Solaris 2.5.1 lacks it. - dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary - dnl to get them. - - dnl Persuade glibc <string.h> to declare mempcpy(). - AC_REQUIRE([AC_GNU_SOURCE]) - AC_REQUIRE([gl_C_RESTRICT]) - AC_REQUIRE([AC_FUNC_ALLOCA]) - AC_REQUIRE([AC_HEADER_STDC]) - AC_CHECK_HEADERS_ONCE(wchar.h wctype.h) - AC_CHECK_FUNCS_ONCE(isascii mempcpy) - AC_CHECK_FUNCS(btowc) + AC_REQUIRE([AM_LANGINFO_CODESET]) + AC_CHECK_HEADERS_ONCE([locale.h wchar.h wctype.h]) + AC_CHECK_FUNCS_ONCE([isblank mbrtowc mempcpy wcrtomb wcscoll]) ]) |