X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-grep.c;h=e13cb31f2b9dd63d335437fb5b1c9b0b06fbf188;hb=f95673849c99baf3b10756e944d6ebe22394a2c0;hp=694da5ba09d302c1e44f863070776bc3ac7f32e2;hpb=8a3fbdd9e6c37c74b12fd0e8bd7cde8372861288;p=git.git diff --git a/builtin-grep.c b/builtin-grep.c index 694da5ba0..e13cb31f2 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -378,7 +378,7 @@ static int grep_tree(struct grep_opt *opt, const char **paths, * decide if we want to descend into "abc" * directory. */ - strcpy(path_buf + len + entry.pathlen, "/"); + strcpy(path_buf + len + tree_entry_len(entry.path, entry.sha1), "/"); if (!pathspec_matches(paths, down)) ; @@ -388,11 +388,13 @@ static int grep_tree(struct grep_opt *opt, const char **paths, enum object_type type; struct tree_desc sub; void *data; - data = read_sha1_file(entry.sha1, &type, &sub.size); + unsigned long size; + + data = read_sha1_file(entry.sha1, &type, &size); if (!data) die("unable to read tree (%s)", sha1_to_hex(entry.sha1)); - sub.buf = data; + init_tree_desc(&sub, data, size); hit |= grep_tree(opt, paths, &sub, tree_name, down); free(data); } @@ -408,12 +410,13 @@ static int grep_object(struct grep_opt *opt, const char **paths, if (obj->type == OBJ_COMMIT || obj->type == OBJ_TREE) { struct tree_desc tree; void *data; + unsigned long size; int hit; data = read_object_with_reference(obj->sha1, tree_type, - &tree.size, NULL); + &size, NULL); if (!data) die("unable to read tree (%s)", sha1_to_hex(obj->sha1)); - tree.buf = data; + init_tree_desc(&tree, data, size); hit = grep_tree(opt, paths, &tree, name, ""); free(data); return hit; @@ -553,7 +556,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) scan = arg + 1; break; } - if (sscanf(scan, "%u", &num) != 1) + if (strtoul_ui(scan, 10, &num)) die(emsg_invalid_context_len, scan); switch (arg[1]) { case 'A':