The handling of `status_only` no longer interferes with the handling of `unmatch_name_only`. `--quiet` no longer affects the exit code when using `-L`/`--files-without-match`. Signed-off-by: Anthony Sottile <asottile@xxxxxxxxx> --- grep.c | 9 +++++---- t/t7810-grep.sh | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/grep.c b/grep.c index 2efec0e..a893d09 100644 --- a/grep.c +++ b/grep.c @@ -1755,7 +1755,7 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle } if (hit) { count++; - if (opt->status_only) + if (!opt->unmatch_name_only && opt->status_only) return 1; if (opt->name_only) { show_name(opt, gs->name); @@ -1820,13 +1820,14 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle if (collect_hits) return 0; - if (opt->status_only) - return 0; if (opt->unmatch_name_only) { /* We did not see any hit, so we want to show this */ - show_name(opt, gs->name); + if (!opt->status_only) + show_name(opt, gs->name); return 1; } + if (opt->status_only) + return 0; xdiff_clear_find_func(&xecfg); opt->priv = NULL; diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh index f106387..2a6679c 100755 --- a/t/t7810-grep.sh +++ b/t/t7810-grep.sh @@ -374,6 +374,11 @@ test_expect_success 'grep -L -C' ' test_cmp expected actual ' +test_expect_success 'grep --files-without-match --quiet' ' + git grep --files-without-match --quiet nonexistent_string >actual && + test_cmp /dev/null actual +' + cat >expected <<EOF file:foo mmap bar_mmap EOF -- 2.14.GIT