* [PATCH] grep: read patterns from stdin with -f -
@ 2011-03-19 18:33 René Scharfe
0 siblings, 0 replies; only message in thread
From: René Scharfe @ 2011-03-19 18:33 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano
Support the well-know convention of reading standard input instead of a
named file if "-" (dash) is specified. GNU grep does the same.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
I was trying to look for the string "/pack", but MinGW mangles arguments
that look like paths. "echo /pack | git grep -f-" was my first try to
circumvent this, as echo's arguments are not mangled. I ended up with
"git grep '[/]pack'" -- and also this patch.
builtin/grep.c | 6 ++++--
t/t7810-grep.sh | 5 +++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/builtin/grep.c b/builtin/grep.c
index eaf8560..0bf8c01 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -659,11 +659,12 @@ static int context_callback(const struct option *opt, const char *arg,
static int file_callback(const struct option *opt, const char *arg, int unset)
{
struct grep_opt *grep_opt = opt->value;
+ int from_stdin = !strcmp(arg, "-");
FILE *patterns;
int lno = 0;
struct strbuf sb = STRBUF_INIT;
- patterns = fopen(arg, "r");
+ patterns = from_stdin ? stdin : fopen(arg, "r");
if (!patterns)
die_errno("cannot open '%s'", arg);
while (strbuf_getline(&sb, patterns, '\n') == 0) {
@@ -677,7 +678,8 @@ static int file_callback(const struct option *opt, const char *arg, int unset)
s = strbuf_detach(&sb, &len);
append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN);
}
- fclose(patterns);
+ if (!from_stdin)
+ fclose(patterns);
strbuf_release(&sb);
return 0;
}
diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh
index 8a7788d..dbc6cd8 100755
--- a/t/t7810-grep.sh
+++ b/t/t7810-grep.sh
@@ -303,6 +303,11 @@ test_expect_success 'grep -f, ignore empty lines' '
test_cmp expected actual
'
+test_expect_success 'grep -f, ignore empty lines, read patterns from stdin' '
+ git grep -f - <patterns >actual &&
+ test_cmp expected actual
+'
+
cat >expected <<EOF
y:y yy
--
--
1.7.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-03-19 18:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-19 18:33 [PATCH] grep: read patterns from stdin with -f - René Scharfe
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).