Paul Eggert wrote:
> >>    - Will they change RE_BACKSLASH_ESCAPE_IN_LISTS from
> >>        ((unsigned long int) 1)
> >>      to
> >>        (1UL)
> >>      in order to make the RE_* values usable in preprocessor expressions?
> > 
> > No; I followed up with a later patch to remove that assumption.
> 
> Oops, sorry, I misunderstood your comment. You're right, we need a patch 
> to do that. I just installed the attached .

You attached this patch in Gnulib, but not also in glibc. If we don't want
to make assumptions about whether glibc makes the same change, how about
this patch?

diff --git a/m4/regex.m4 b/m4/regex.m4
index 52ce5c3b37..508352ab43 100644
--- a/m4/regex.m4
+++ b/m4/regex.m4
@@ -54,9 +54,10 @@ AC_DEFUN([gl_REGEX]
             static void sigabrt_no_core (int sig) { raise (SIGTERM); }
             #endif
 
-            #if !RE_SYNTAX_EMACS
-            # error "RE_SYNTAX_EMACS does not match Emacs behavior"
-            #endif
+            /* Check whether RE_SYNTAX_EMACS matches Emacs behavior.
+               Note that in many glibc versions, the RE_* macros cannot
+               be used in preprocessor expressions.  */
+            typedef int emacs_check[RE_SYNTAX_EMACS ? 1 : -1];
           ]],
           [[int result = 0;
             static struct re_pattern_buffer regex;




Reply via email to