Browse Source

Add "-h/-H" parsing to "git grep"

It turns out that I actually wanted to avoid the filenames (because I
didn't care - I just wanted to see the context in which something was
used) when doing a grep. But since "git grep" didn't take the "-h"
parameter, I ended up having to do "grep -5 -h *.c" instead.

So here's a trivial patch that adds "-h" (and thus has to enable -H too)
to "git grep" parsing.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Linus Torvalds 19 years ago committed by Junio C Hamano
parent
commit
7977f0ea53
  1. 15
      builtin-grep.c

15
builtin-grep.c

@ -138,6 +138,7 @@ struct grep_opt {
unsigned binary:2; unsigned binary:2;
unsigned extended:1; unsigned extended:1;
unsigned relative:1; unsigned relative:1;
unsigned pathname:1;
int regflags; int regflags;
unsigned pre_context; unsigned pre_context;
unsigned post_context; unsigned post_context;
@ -316,7 +317,8 @@ static int word_char(char ch)
static void show_line(struct grep_opt *opt, const char *bol, const char *eol, static void show_line(struct grep_opt *opt, const char *bol, const char *eol,
const char *name, unsigned lno, char sign) const char *name, unsigned lno, char sign)
{ {
printf("%s%c", name, sign); if (opt->pathname)
printf("%s%c", name, sign);
if (opt->linenum) if (opt->linenum)
printf("%d%c", lno, sign); printf("%d%c", lno, sign);
printf("%.*s\n", (int)(eol-bol), bol); printf("%.*s\n", (int)(eol-bol), bol);
@ -691,6 +693,8 @@ static int external_grep(struct grep_opt *opt, const char **paths, int cached)
push_arg("-F"); push_arg("-F");
if (opt->linenum) if (opt->linenum)
push_arg("-n"); push_arg("-n");
if (!opt->pathname)
push_arg("-h");
if (opt->regflags & REG_EXTENDED) if (opt->regflags & REG_EXTENDED)
push_arg("-E"); push_arg("-E");
if (opt->regflags & REG_ICASE) if (opt->regflags & REG_ICASE)
@ -911,6 +915,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
memset(&opt, 0, sizeof(opt)); memset(&opt, 0, sizeof(opt));
opt.prefix_length = (prefix && *prefix) ? strlen(prefix) : 0; opt.prefix_length = (prefix && *prefix) ? strlen(prefix) : 0;
opt.relative = 1; opt.relative = 1;
opt.pathname = 1;
opt.pattern_tail = &opt.pattern_list; opt.pattern_tail = &opt.pattern_list;
opt.regflags = REG_NEWLINE; opt.regflags = REG_NEWLINE;


@ -970,10 +975,12 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
opt.linenum = 1; opt.linenum = 1;
continue; continue;
} }
if (!strcmp("-h", arg)) {
opt.pathname = 0;
continue;
}
if (!strcmp("-H", arg)) { if (!strcmp("-H", arg)) {
/* We always show the pathname, so this opt.pathname = 1;
* is a noop.
*/
continue; continue;
} }
if (!strcmp("-l", arg) || if (!strcmp("-l", arg) ||

Loading…
Cancel
Save