diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2010-05-22 23:43:43 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-05-24 11:22:07 -0700 |
commit | ed40a0951cedb70777669144478166aa5bb2cf9c (patch) | |
tree | 5683f6f847d31d83e2ddf9ff38f953eff916aa10 /builtin/grep.c | |
parent | f96e56733ab3e3ce5c79c27c673c746af1519a86 (diff) | |
download | git-ed40a0951cedb70777669144478166aa5bb2cf9c.tar.gz |
grep: support NUL chars in search strings for -F
Search patterns in a file specified with -f can contain NUL characters.
The current code ignores all characters on a line after a NUL.
Pass the actual length of the line all the way from the pattern file to
fixmatch() and use it for case-sensitive fixed string matching.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/grep.c')
-rw-r--r-- | builtin/grep.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/builtin/grep.c b/builtin/grep.c index 8e928e2170..7653d8492a 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -724,11 +724,15 @@ static int file_callback(const struct option *opt, const char *arg, int unset) if (!patterns) die_errno("cannot open '%s'", arg); while (strbuf_getline(&sb, patterns, '\n') == 0) { + char *s; + size_t len; + /* ignore empty line like grep does */ if (sb.len == 0) continue; - append_grep_pattern(grep_opt, strbuf_detach(&sb, NULL), arg, - ++lno, GREP_PATTERN); + + s = strbuf_detach(&sb, &len); + append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN); } fclose(patterns); strbuf_release(&sb); |