From: Paul Eggert Date: Sat, 4 Jul 2015 15:25:21 +0000 (-0700) Subject: regex: match current GNU grep behavior X-Git-Tag: v1.0~7011 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=5a5a9388e93d00a7bcb97700a7a552bef20343fd;p=gnulib.git 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. --- diff --git a/ChangeLog b/ChangeLog index 36f5083433..4931868781 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2015-07-04 Paul Eggert + + 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 set-permissions.c: adjust acl_from_mode's cpp guard diff --git a/lib/regex.h b/lib/regex.h index dd12ee9918..6f3bae3ae8 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