!strcmp(ce->name, active_cache[nr]->name));
nr--; /* compensate for loop control */
}
+ if (hit && opt->status_only)
+ break;
}
free_grep_patterns(opt);
return hit;
hit |= grep_tree(opt, paths, &sub, tree_name, down);
free(data);
}
+ if (hit && opt->status_only)
+ break;
}
strbuf_release(&pathbuf);
return hit;
setup_standard_excludes(&dir);
fill_directory(&dir, paths);
- for (i = 0; i < dir.nr; i++)
+ for (i = 0; i < dir.nr; i++) {
hit |= grep_file(opt, dir.entries[i]->name);
+ if (hit && opt->status_only)
+ break;
+ }
free_grep_patterns(opt);
return hit;
}
{ OPTION_CALLBACK, ')', NULL, &opt, NULL, "",
PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH,
close_callback },
+ OPT_BOOLEAN('q', "quick", &opt.status_only,
+ "indicate hit with exit status without output"),
OPT_BOOLEAN(0, "all-match", &opt.all_match,
"show only matches from files that match all patterns"),
OPT_GROUP(""),
for (i = 0; i < list.nr; i++) {
struct object *real_obj;
real_obj = deref_tag(list.objects[i].item, NULL, 0);
- if (grep_object(&opt, paths, real_obj, list.objects[i].name))
+ if (grep_object(&opt, paths, real_obj, list.objects[i].name)) {
hit = 1;
+ if (opt.status_only)
+ break;
+ }
}
free_grep_patterns(&opt);
return !hit;