bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] regex: match current GNU grep behavior


From: Paul Eggert
Subject: [PATCH] regex: match current GNU grep behavior
Date: Sat, 4 Jul 2015 08:26:18 -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   | 10 ++++++++++
 lib/regex.h | 15 ++++++---------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 36f5083..4931868 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-07-04  Paul Eggert  <address@hidden>
+
+       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  <address@hidden>
 
        set-permissions.c: adjust acl_from_mode's cpp guard
diff --git a/lib/regex.h b/lib/regex.h
index dd12ee9..6f3bae3 100644
--- a/lib/regex.h
+++ b/lib/regex.h
@@ -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
-- 
2.1.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]