aboutsummaryrefslogtreecommitdiff
path: root/builtin-grep.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-06-19 18:47:29 -0700
committerJunio C Hamano <junkio@cox.net>2006-06-19 18:47:29 -0700
commitb19beecd9456a2e6282634e5df751206b972604a (patch)
tree52617650de39f12bbeb351acf7fb5c9b5becf5cb /builtin-grep.c
parent474bc4e274322606fb9fd0f6edffb9ac7fd4a7a9 (diff)
parent1f1e895fccc52a1e227c464c4558d74604301a9f (diff)
downloadgit-b19beecd9456a2e6282634e5df751206b972604a.tar.gz
git-b19beecd9456a2e6282634e5df751206b972604a.tar.xz
Merge branch 'lt/objlist' into next
* lt/objlist: Add "named object array" concept xdiff: minor changes to match libxdiff-0.21 fix rfc2047 formatter. Fix t8001-annotate and t8002-blame for ActiveState Perl Add specialized object allocator
Diffstat (limited to 'builtin-grep.c')
-rw-r--r--builtin-grep.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/builtin-grep.c b/builtin-grep.c
index 980649926..6a240fb6e 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -657,7 +657,7 @@ int cmd_grep(int argc, const char **argv, char **envp)
int cached = 0;
int seen_dashdash = 0;
struct grep_opt opt;
- struct object_list *list, **tail, *object_list = NULL;
+ struct object_array list = { 0, 0, NULL };
const char *prefix = setup_git_directory();
const char **paths = NULL;
int i;
@@ -677,7 +677,6 @@ int cmd_grep(int argc, const char **argv, char **envp)
* that continues up to the -- (if exists), and then paths.
*/
- tail = &object_list;
while (1 < argc) {
const char *arg = argv[1];
argc--; argv++;
@@ -851,12 +850,9 @@ int cmd_grep(int argc, const char **argv, char **envp)
/* Is it a rev? */
if (!get_sha1(arg, sha1)) {
struct object *object = parse_object(sha1);
- struct object_list *elem;
if (!object)
die("bad object %s", arg);
- elem = object_list_insert(object, tail);
- elem->name = arg;
- tail = &elem->next;
+ add_object_array(object, arg, &list);
continue;
}
if (!strcmp(arg, "--")) {
@@ -881,16 +877,16 @@ int cmd_grep(int argc, const char **argv, char **envp)
paths[1] = NULL;
}
- if (!object_list)
+ if (!list.nr)
return !grep_cache(&opt, paths, cached);
if (cached)
die("both --cached and trees are given.");
- for (list = object_list; list; list = list->next) {
+ for (i = 0; i < list.nr; i++) {
struct object *real_obj;
- real_obj = deref_tag(list->item, NULL, 0);
- if (grep_object(&opt, paths, real_obj, list->name))
+ real_obj = deref_tag(list.objects[i].item, NULL, 0);
+ if (grep_object(&opt, paths, real_obj, list.objects[i].name))
hit = 1;
}
return !hit;