summaryrefslogtreecommitdiff
path: root/tree.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2021-03-20 22:37:50 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-03-20 23:09:26 (GMT)
commit6c9fc42e9f1bf27a3830ef594b7f5f9147af8361 (patch)
treee7a49421fdd614145dcfc3b809828a7fa0a8be9e /tree.c
parent7367d88261e5df7b1458cc02217f0e302bc2e127 (diff)
downloadgit-6c9fc42e9f1bf27a3830ef594b7f5f9147af8361.zip
git-6c9fc42e9f1bf27a3830ef594b7f5f9147af8361.tar.gz
git-6c9fc42e9f1bf27a3830ef594b7f5f9147af8361.tar.bz2
tree.h API: expose read_tree_1() as read_tree_at()
Rename the static read_tree_1() function to read_tree_at(). This function works just like read_tree_recursive(), except you provide your own strbuf. This step doesn't make much sense now, but in follow-up commits I'll remove the base/baselen/stage arguments to read_tree_recursive(). At that point an anticipated in-tree user[1] for the old read_tree_recursive() couldn't provide a path to start the traversal. Let's give them a function to do so with an API that makes more sense for them, by taking a strbuf we should be able to avoid more casting and/or reallocations in the future. 1. https://lore.kernel.org/git/xmqqft106sok.fsf@gitster.g Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/tree.c b/tree.c
index a6c12f2..f67c215 100644
--- a/tree.c
+++ b/tree.c
@@ -11,10 +11,11 @@
const char *tree_type = "tree";
-static int read_tree_1(struct repository *r,
- struct tree *tree, struct strbuf *base,
- int stage, const struct pathspec *pathspec,
- read_tree_fn_t fn, void *context)
+int read_tree_at(struct repository *r,
+ struct tree *tree, struct strbuf *base,
+ int stage,
+ const struct pathspec *pathspec,
+ read_tree_fn_t fn, void *context)
{
struct tree_desc desc;
struct name_entry entry;
@@ -71,9 +72,9 @@ static int read_tree_1(struct repository *r,
len = tree_entry_len(&entry);
strbuf_add(base, entry.path, len);
strbuf_addch(base, '/');
- retval = read_tree_1(r, lookup_tree(r, &oid),
- base, stage, pathspec,
- fn, context);
+ retval = read_tree_at(r, lookup_tree(r, &oid),
+ base, stage, pathspec,
+ fn, context);
strbuf_setlen(base, oldlen);
if (retval)
return -1;
@@ -91,7 +92,7 @@ int read_tree_recursive(struct repository *r,
int ret;
strbuf_add(&sb, base, baselen);
- ret = read_tree_1(r, tree, &sb, stage, pathspec, fn, context);
+ ret = read_tree_at(r, tree, &sb, stage, pathspec, fn, context);
strbuf_release(&sb);
return ret;
}