changeset 18047:6303ffca4ba4

regex: match current GNU grep behavior These symbols have not matched GNU grep behavior for quite some time. Fix prompted by Balazs Kezes bug report at: http://bugs.gnu.org/20974 * lib/regex.h (RE_SYNTAX_GREP, RE_SYNTAX_EGREP): Change to match current GNU behavior. Simplify by expressing it as differences from POSIX BREs and EREs. (RE_SYNTAX_POSIX_EGREP): No longer differs from GNU behavior.
author Paul Eggert <eggert@cs.ucla.edu>
date Sat, 04 Jul 2015 08:25:21 -0700
parents 7f8f2a88bb1f
children 7cb7c39a86df
files ChangeLog lib/regex.h
diffstat 2 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+	regex: match current GNU grep behavior
+	These symbols have not matched GNU grep behavior for quite some time.
+	Fix prompted by Balazs Kezes bug report at: http://bugs.gnu.org/20974
+	* lib/regex.h (RE_SYNTAX_GREP, RE_SYNTAX_EGREP):
+	Change to match current GNU behavior.
+	Simplify by expressing it as differences from POSIX BREs and EREs.
+	(RE_SYNTAX_POSIX_EGREP): No longer differs from GNU behavior.
+
 2015-07-03  Jim Meyering  <meyering@fb.com>
 
 	set-permissions.c: adjust acl_from_mode's cpp guard
--- a/lib/regex.h
+++ b/lib/regex.h
@@ -244,19 +244,16 @@
    | RE_INVALID_INTERVAL_ORD)
 
 # define RE_SYNTAX_GREP							\
-  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES				\
-   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS				\
-   | RE_NEWLINE_ALT)
+  ((RE_SYNTAX_POSIX_BASIC | RE_NEWLINE_ALT)				\
+   & ~(RE_CONTEXT_INVALID_DUP | RE_DOT_NOT_NULL))
 
 # define RE_SYNTAX_EGREP						\
-  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS			\
-   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE			\
-   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS				\
-   | RE_NO_BK_VBAR)
+  ((RE_SYNTAX_POSIX_EXTENDED | RE_INVALID_INTERVAL_ORD | RE_NEWLINE_ALT) \
+   & ~(RE_CONTEXT_INVALID_OPS | RE_DOT_NOT_NULL))
 
+/* POSIX grep -E behavior is no longer incompatible with GNU.  */
 # define RE_SYNTAX_POSIX_EGREP						\
-  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES			\
-   | RE_INVALID_INTERVAL_ORD)
+  RE_SYNTAX_EGREP
 
 /* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
 # define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC