Skip to content
  • Ævar Arnfjörð Bjarmason's avatar
    grep: remove regflags from the public grep_opt API · 07a3d411
    Ævar Arnfjörð Bjarmason authored and Junio C Hamano's avatar Junio C Hamano committed
    Refactor calls to the grep machinery to always pass opt.ignore_case &
    opt.extended_regexp_option instead of setting the equivalent regflags
    bits.
    
    The bug fixed when making -i work with -P in commit 9e3cbc59 ("log:
    make --regexp-ignore-case work with --perl-regexp", 2017-05-20) was
    really just plastering over the code smell which this change fixes.
    
    The reason for adding the extensive commentary here is that I
    discovered some subtle complexity in implementing this that really
    should be called out explicitly to future readers.
    
    Before this change we'd rely on the difference between
    `extended_regexp_option` and `regflags` to serve as a membrane between
    our preliminary parsing of grep.extendedRegexp and grep.patternType,
    and what we decided to do internally.
    
    Now that those two are the same thing, it's necessary to unset
    `extended_regexp_option` just before we commit in cases where both of
    those config variables are set. See 84befcd0
    
     ("grep: add a
    grep.patternType configuration setting", 2012-08-03) for the code and
    documentation related to that.
    
    The explanation of why the if/else branches in
    grep_commit_pattern_type() are ordered the way they are exists in that
    commit message, but I think it's worth calling this subtlety out
    explicitly with a comment for future readers.
    
    Even though grep_commit_pattern_type() is the only caller of
    grep_set_pattern_type_option() it's simpler to reset the
    extended_regexp_option flag in the latter, since 2/3 branches in the
    former would otherwise need to reset it, this way we can do it in one
    place.
    
    Signed-off-by: default avatarÆvar Arnfjörð Bjarmason <avarab@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    07a3d411