- syscmd([test -f lib/regex.c])
- ifelse(sysval, 0,
- [
- # By default, don't use the included regex.c on systems with glibc 2
- test "$ac_cv_glibc" = yes && default=no || default=yes
+ # Assume we'll default to using the included regex.c.
+ ac_use_included_regex=yes
+
+ # However, if the system regex support is good enough that it passes the
+ # the following run test, then default to *not* using the included regex.c.
+ # If cross compiling, assume the test would fail and use the included
+ # 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>
+#include <regex.h>
+ int
+ main ()
+ {
+ static struct re_pattern_buffer regex;
+ const char *s;
+ struct re_registers regs;
+ re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ [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. */
+ s = re_compile_pattern ("{1", 2, ®ex);
+
+ if (s)
+ exit (1);