From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: [PATCH 3/8] grep: --count over binary
Date: Sat, 22 May 2010 23:29:35 +0200 [thread overview]
Message-ID: <4BF84CBF.5000109@lsrfire.ath.cx> (raw)
In-Reply-To: <4BF84B9E.7060009@lsrfire.ath.cx>
The intent of showing the message "Binary file xyz matches" for
binary files is to avoid annoying users by potentially messing up
their terminals by printing control characters. In --count mode,
this precaution isn't necessary.
Display counts of matches if -c/--count was specified, even if -a
was not given. GNU grep does the same.
Moving the check for ->count before the code for handling binary
file also avoids printing context lines if --count and -[ABC] were
used together, so we can remove the part of the comment that
mentions this behaviour. Again, GNU grep does the same.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
grep.c | 9 ++++-----
t/t7008-grep-binary.sh | 6 ++++++
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/grep.c b/grep.c
index 2a8e879..35c18b7 100644
--- a/grep.c
+++ b/grep.c
@@ -873,6 +873,8 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
count++;
if (opt->status_only)
return 1;
+ if (opt->count)
+ goto next_line;
if (binary_match_only) {
opt->output(opt, "Binary file ", 12);
output_color(opt, name, strlen(name),
@@ -886,16 +888,12 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
}
/* Hit at this line. If we haven't shown the
* pre-context lines, we would need to show them.
- * When asked to do "count", this still show
- * the context which is nonsense, but the user
- * deserves to get that ;-).
*/
if (opt->pre_context)
show_pre_context(opt, name, buf, bol, lno);
else if (opt->funcname)
show_funcname_line(opt, name, buf, bol, lno);
- if (!opt->count)
- show_line(opt, bol, eol, name, lno, ':');
+ show_line(opt, bol, eol, name, lno, ':');
last_hit = lno;
}
else if (last_hit &&
@@ -939,6 +937,7 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
output_sep(opt, ':');
snprintf(buf, sizeof(buf), "%u\n", count);
opt->output(opt, buf, strlen(buf));
+ return 1;
}
return !!last_hit;
}
diff --git a/t/t7008-grep-binary.sh b/t/t7008-grep-binary.sh
index 2320e74..91970ea 100755
--- a/t/t7008-grep-binary.sh
+++ b/t/t7008-grep-binary.sh
@@ -27,6 +27,12 @@ test_expect_success 'git grep -I ina a' '
test_cmp expect actual
'
+test_expect_success 'git grep -c ina a' '
+ echo a:1 >expect &&
+ git grep -c ina a >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'git grep -L bar a' '
echo a >expect &&
git grep -L bar a >actual &&
--
1.7.1
next prev parent reply other threads:[~2010-05-22 21:30 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-19 14:33 What's cooking extra Junio C Hamano
2010-05-19 15:12 ` A Large Angry SCM
2010-05-19 17:06 ` Finn Arne Gangstad
2010-05-19 20:09 ` Eyvind Bernhardsen
2010-05-22 13:09 ` Clemens Buchacher
2010-05-22 19:42 ` Eyvind Bernhardsen
2010-05-22 22:27 ` Clemens Buchacher
2010-05-23 10:36 ` Eyvind Bernhardsen
2010-05-23 11:51 ` Clemens Buchacher
2010-05-23 12:53 ` Eyvind Bernhardsen
2010-05-23 13:26 ` Ævar Arnfjörð Bjarmason
2010-05-24 9:49 ` Clemens Buchacher
2010-05-24 12:47 ` Dmitry Potapov
2010-05-24 20:45 ` Eyvind Bernhardsen
2010-05-24 20:56 ` Clemens Buchacher
2010-05-24 21:09 ` Eyvind Bernhardsen
2010-05-24 21:11 ` Eyvind Bernhardsen
2010-05-24 22:11 ` Clemens Buchacher
2010-05-25 6:41 ` Eyvind Bernhardsen
2010-05-25 8:27 ` Anthony Youngman
2010-06-07 19:55 ` Eyvind Bernhardsen
2010-05-25 8:33 ` Clemens Buchacher
2010-05-24 12:12 ` Dmitry Potapov
2010-05-24 12:22 ` Erik Faye-Lund
2010-05-24 12:42 ` Dmitry Potapov
2010-05-21 16:16 ` Ævar Arnfjörð Bjarmason
2010-05-22 21:24 ` René Scharfe
2010-05-22 21:26 ` [PATCH 1/8] grep: add test script for binary file handling René Scharfe
2010-05-22 21:28 ` [PATCH 2/8] grep: grep: refactor handling of binary mode options René Scharfe
2010-05-22 21:29 ` René Scharfe [this message]
2010-05-22 21:30 ` [PATCH 4/8] grep: --name-only over binary René Scharfe
2010-05-22 21:32 ` [PATCH 5/8] grep: use memmem() for fixed string search René Scharfe
2010-05-22 21:34 ` [PATCH 6/8] grep: continue case insensitive fixed string search after NUL chars René Scharfe
2010-05-22 21:35 ` [PATCH 7/8] grep: use REG_STARTEND for all matching if available René Scharfe
2010-05-22 21:43 ` [PATCH 8/8] grep: support NUL chars in search strings for -F René Scharfe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BF84CBF.5000109@lsrfire.ath.cx \
--to=rene.scharfe@lsrfire.ath.cx \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).