git-grep: fix exit code when we use external grep.

Upon hit, we should exit with status 0.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 2006-07-04 02:43:40 -07:00
parent 5390590f6d
commit fcfe34b5ac
1 changed files with 10 additions and 5 deletions

View File

@ -446,7 +446,7 @@ static int exec_grep(int argc, const char **argv)


static int external_grep(struct grep_opt *opt, const char **paths, int cached) static int external_grep(struct grep_opt *opt, const char **paths, int cached)
{ {
int i, nr, argc, hit, len; int i, nr, argc, hit, len, status;
const char *argv[MAXARGS+1]; const char *argv[MAXARGS+1];
char randarg[ARGBUF]; char randarg[ARGBUF];
char *argptr = randarg; char *argptr = randarg;
@ -536,12 +536,17 @@ static int external_grep(struct grep_opt *opt, const char **paths, int cached)
argv[argc++] = name; argv[argc++] = name;
if (argc < MAXARGS) if (argc < MAXARGS)
continue; continue;
hit += exec_grep(argc, argv); status = exec_grep(argc, argv);
if (0 < status)
hit = 1;
argc = nr; argc = nr;
} }
if (argc > nr) if (argc > nr) {
hit += exec_grep(argc, argv); status = exec_grep(argc, argv);
return 0; if (0 < status)
hit = 1;
}
return hit;
} }


static int grep_cache(struct grep_opt *opt, const char **paths, int cached) static int grep_cache(struct grep_opt *opt, const char **paths, int cached)