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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxx>
---

I just verified that it does the same thing as GNU grep with some of the 
combinations like "-l -h" and "-h -n", but I didn't bother digging any 
deeper. Regardless, it doesn't change any behaviour unless people start 
using "-h", and when they do, it's at least no worse than the old 
behaviour (which was to say "I can't do that, Dave" or something).

diff --git a/builtin-grep.c b/builtin-grep.c
index 6430f6d..ed87a55 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -138,6 +138,7 @@ #define GREP_BINARY_TEXT	2
 	unsigned binary:2;
 	unsigned extended:1;
 	unsigned relative:1;
+	unsigned pathname:1;
 	int regflags;
 	unsigned pre_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,
 		      const char *name, unsigned lno, char sign)
 {
-	printf("%s%c", name, sign);
+	if (opt->pathname)
+		printf("%s%c", name, sign);
 	if (opt->linenum)
 		printf("%d%c", lno, sign);
 	printf("%.*s\n", (int)(eol-bol), bol);
@@ -691,6 +693,8 @@ static int external_grep(struct grep_opt
 		push_arg("-F");
 	if (opt->linenum)
 		push_arg("-n");
+	if (!opt->pathname)
+		push_arg("-h");
 	if (opt->regflags & REG_EXTENDED)
 		push_arg("-E");
 	if (opt->regflags & REG_ICASE)
@@ -911,6 +915,7 @@ int cmd_grep(int argc, const char **argv
 	memset(&opt, 0, sizeof(opt));
 	opt.prefix_length = (prefix && *prefix) ? strlen(prefix) : 0;
 	opt.relative = 1;
+	opt.pathname = 1;
 	opt.pattern_tail = &opt.pattern_list;
 	opt.regflags = REG_NEWLINE;
 
@@ -970,10 +975,12 @@ int cmd_grep(int argc, const char **argv
 			opt.linenum = 1;
 			continue;
 		}
+		if (!strcmp("-h", arg)) {
+			opt.pathname = 0;
+			continue;
+		}
 		if (!strcmp("-H", arg)) {
-			/* We always show the pathname, so this
-			 * is a noop.
-			 */
+			opt.pathname = 1;
 			continue;
 		}
 		if (!strcmp("-l", arg) ||
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]