summaryrefslogtreecommitdiff
path: root/grep.c
diff options
context:
space:
mode:
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>2010-05-22 21:28:17 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-05-24 18:22:06 (GMT)
commit64fcec78b5c52a054eab482e91d58f7b41d1dfaf (patch)
tree85291a7cc6e951d522344a02a66c022ffa5086c2 /grep.c
parentaca20dd558338446336934a4b18516cfbf7d8393 (diff)
downloadgit-64fcec78b5c52a054eab482e91d58f7b41d1dfaf.zip
git-64fcec78b5c52a054eab482e91d58f7b41d1dfaf.tar.gz
git-64fcec78b5c52a054eab482e91d58f7b41d1dfaf.tar.bz2
grep: grep: refactor handling of binary mode options
Turn the switch inside-out and add labels for each possible value of ->binary. This makes the code easier to read and avoids calling buffer_is_binary() if the option -a was given. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.c')
-rw-r--r--grep.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/grep.c b/grep.c
index 543b1d5..2a8e879 100644
--- a/grep.c
+++ b/grep.c
@@ -800,17 +800,19 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
opt->show_hunk_mark = 1;
opt->last_shown = 0;
- if (buffer_is_binary(buf, size)) {
- switch (opt->binary) {
- case GREP_BINARY_DEFAULT:
+ switch (opt->binary) {
+ case GREP_BINARY_DEFAULT:
+ if (buffer_is_binary(buf, size))
binary_match_only = 1;
- break;
- case GREP_BINARY_NOMATCH:
+ break;
+ case GREP_BINARY_NOMATCH:
+ if (buffer_is_binary(buf, size))
return 0; /* Assume unmatch */
- break;
- default:
- break;
- }
+ break;
+ case GREP_BINARY_TEXT:
+ break;
+ default:
+ die("bug: unknown binary handling mode");
}
memset(&xecfg, 0, sizeof(xecfg));