| 1 | #serial 12 | 
|---|
| 2 |  | 
|---|
| 3 | dnl Initially derived from code in GNU grep. | 
|---|
| 4 | dnl Mostly written by Jim Meyering. | 
|---|
| 5 |  | 
|---|
| 6 | dnl Usage: jm_INCLUDED_REGEX([lib/regex.c]) | 
|---|
| 7 | dnl | 
|---|
| 8 | AC_DEFUN([jm_INCLUDED_REGEX], | 
|---|
| 9 | [ | 
|---|
| 10 | dnl Even packages that don't use regex.c can use this macro. | 
|---|
| 11 | dnl Of course, for them it doesn't do anything. | 
|---|
| 12 |  | 
|---|
| 13 | # Assume we'll default to using the included regex.c. | 
|---|
| 14 | ac_use_included_regex=yes | 
|---|
| 15 |  | 
|---|
| 16 | # However, if the system regex support is good enough that it passes the | 
|---|
| 17 | # the following run test, then default to *not* using the included regex.c. | 
|---|
| 18 | # If cross compiling, assume the test would fail and use the included | 
|---|
| 19 | # regex.c.  The first failing regular expression is from `Spencer ere | 
|---|
| 20 | # test #75' in grep-2.3. | 
|---|
| 21 | AC_CACHE_CHECK([for working re_compile_pattern], | 
|---|
| 22 | jm_cv_func_working_re_compile_pattern, | 
|---|
| 23 | AC_TRY_RUN( | 
|---|
| 24 | [#include <stdio.h> | 
|---|
| 25 | #include <regex.h> | 
|---|
| 26 | int | 
|---|
| 27 | main () | 
|---|
| 28 | { | 
|---|
| 29 | static struct re_pattern_buffer regex; | 
|---|
| 30 | const char *s; | 
|---|
| 31 | struct re_registers regs; | 
|---|
| 32 | re_set_syntax (RE_SYNTAX_POSIX_EGREP); | 
|---|
| 33 | [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);] | 
|---|
| 34 | /* This should fail with _Invalid character class name_ error.  */ | 
|---|
| 35 | if (!s) | 
|---|
| 36 | exit (1); | 
|---|
| 37 |  | 
|---|
| 38 | /* This should succeed, but doesn't for e.g. glibc-2.1.3.  */ | 
|---|
| 39 | s = re_compile_pattern ("{1", 2, ®ex); | 
|---|
| 40 |  | 
|---|
| 41 | if (s) | 
|---|
| 42 | exit (1); | 
|---|
| 43 |  | 
|---|
| 44 | /* The following example is derived from a problem report | 
|---|
| 45 | against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>.  */ | 
|---|
| 46 | s = re_compile_pattern ("[[anù]]*n", 7, ®ex); | 
|---|
| 47 | if (s) | 
|---|
| 48 | exit (1); | 
|---|
| 49 |  | 
|---|
| 50 | /* This should match, but doesn't for e.g. glibc-2.2.1.  */ | 
|---|
| 51 | if (re_match (®ex, "an", 2, 0, ®s) != 2) | 
|---|
| 52 | exit (1); | 
|---|
| 53 |  | 
|---|
| 54 | exit (0); | 
|---|
| 55 | } | 
|---|
| 56 | ], | 
|---|
| 57 | jm_cv_func_working_re_compile_pattern=yes, | 
|---|
| 58 | jm_cv_func_working_re_compile_pattern=no, | 
|---|
| 59 | dnl When crosscompiling, assume it's broken. | 
|---|
| 60 | jm_cv_func_working_re_compile_pattern=no)) | 
|---|
| 61 | if test $jm_cv_func_working_re_compile_pattern = yes; then | 
|---|
| 62 | ac_use_included_regex=no | 
|---|
| 63 | fi | 
|---|
| 64 |  | 
|---|
| 65 | test -n "$1" || AC_MSG_ERROR([missing argument]) | 
|---|
| 66 | m4_syscmd([test -f $1]) | 
|---|
| 67 | ifelse(m4_sysval, 0, | 
|---|
| 68 | [ | 
|---|
| 69 | AC_ARG_WITH(included-regex, | 
|---|
| 70 | [  --without-included-regex don't compile regex; this is the default on | 
|---|
| 71 | systems with version 2 of the GNU C library | 
|---|
| 72 | (use with caution on other system)], | 
|---|
| 73 | jm_with_regex=$withval, | 
|---|
| 74 | jm_with_regex=$ac_use_included_regex) | 
|---|
| 75 | if test "$jm_with_regex" = yes; then | 
|---|
| 76 | AC_LIBOBJ(regex) | 
|---|
| 77 | fi | 
|---|
| 78 | ], | 
|---|
| 79 | ) | 
|---|
| 80 | ] | 
|---|
| 81 | ) | 
|---|