]> Savannah Git Hosting - gnulib.git/commitdiff
regex: match current GNU grep behavior
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 4 Jul 2015 15:25:21 +0000 (08:25 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 4 Jul 2015 15:25:59 +0000 (08:25 -0700)
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.

ChangeLog
lib/regex.h

index 36f5083433e88e8130ddbf364ccfa11fcb2e73b2..493186878192e100b53969a3c84ea8558a5d9ae8 100644 (file)
--- 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
index dd12ee99187ea313545bf9d2c18f4d3cbe6f677a..6f3bae3ae82a3139c736f223aa16d922325aa790 100644 (file)
@@ -244,19 +244,16 @@ extern reg_syntax_t re_syntax_options;
    | 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