Skip to content

Commit 6c9fc42

Browse files
avargitster
authored andcommitted
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/[email protected] Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7367d88 commit 6c9fc42

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

tree.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111

1212
const char *tree_type = "tree";
1313

14-
static int read_tree_1(struct repository *r,
15-
struct tree *tree, struct strbuf *base,
16-
int stage, const struct pathspec *pathspec,
17-
read_tree_fn_t fn, void *context)
14+
int read_tree_at(struct repository *r,
15+
struct tree *tree, struct strbuf *base,
16+
int stage,
17+
const struct pathspec *pathspec,
18+
read_tree_fn_t fn, void *context)
1819
{
1920
struct tree_desc desc;
2021
struct name_entry entry;
@@ -71,9 +72,9 @@ static int read_tree_1(struct repository *r,
7172
len = tree_entry_len(&entry);
7273
strbuf_add(base, entry.path, len);
7374
strbuf_addch(base, '/');
74-
retval = read_tree_1(r, lookup_tree(r, &oid),
75-
base, stage, pathspec,
76-
fn, context);
75+
retval = read_tree_at(r, lookup_tree(r, &oid),
76+
base, stage, pathspec,
77+
fn, context);
7778
strbuf_setlen(base, oldlen);
7879
if (retval)
7980
return -1;
@@ -91,7 +92,7 @@ int read_tree_recursive(struct repository *r,
9192
int ret;
9293

9394
strbuf_add(&sb, base, baselen);
94-
ret = read_tree_1(r, tree, &sb, stage, pathspec, fn, context);
95+
ret = read_tree_at(r, tree, &sb, stage, pathspec, fn, context);
9596
strbuf_release(&sb);
9697
return ret;
9798
}

tree.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ int cmp_cache_name_compare(const void *a_, const void *b_);
3333
#define READ_TREE_RECURSIVE 1
3434
typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, int, void *);
3535

36+
int read_tree_at(struct repository *r,
37+
struct tree *tree, struct strbuf *base,
38+
int stage,
39+
const struct pathspec *pathspec,
40+
read_tree_fn_t fn, void *context);
41+
3642
int read_tree_recursive(struct repository *r,
3743
struct tree *tree,
3844
const char *base, int baselen,

0 commit comments

Comments
 (0)