about summary refs log tree commit diff stats
path: root/ui-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui-tree.c')
-rw-r--r--ui-tree.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/ui-tree.c b/ui-tree.c index 1e4efb2..b61f6f5 100644 --- a/ui-tree.c +++ b/ui-tree.c
@@ -139,8 +139,7 @@ struct single_tree_ctx {
139}; 139};
140 140
141static int single_tree_cb(const struct object_id *oid, struct strbuf *base, 141static int single_tree_cb(const struct object_id *oid, struct strbuf *base,
142 const char *pathname, unsigned mode, int stage, 142 const char *pathname, unsigned mode, void *cbdata)
143 void *cbdata)
144{ 143{
145 struct single_tree_ctx *ctx = cbdata; 144 struct single_tree_ctx *ctx = cbdata;
146 145
@@ -185,8 +184,7 @@ static void write_tree_link(const struct object_id *oid, char *name,
185 tree_ctx.name = NULL; 184 tree_ctx.name = NULL;
186 tree_ctx.count = 0; 185 tree_ctx.count = 0;
187 186
188 read_tree_recursive(the_repository, tree, "", 0, 1, 187 read_tree(the_repository, tree, &paths, single_tree_cb, &tree_ctx);
189 &paths, single_tree_cb, &tree_ctx);
190 188
191 if (tree_ctx.count != 1) 189 if (tree_ctx.count != 1)
192 break; 190 break;
@@ -199,7 +197,7 @@ static void write_tree_link(const struct object_id *oid, char *name,
199} 197}
200 198
201static int ls_item(const struct object_id *oid, struct strbuf *base, 199static int ls_item(const struct object_id *oid, struct strbuf *base,
202 const char *pathname, unsigned mode, int stage, void *cbdata) 200 const char *pathname, unsigned mode, void *cbdata)
203{ 201{
204 struct walk_tree_context *walk_tree_ctx = cbdata; 202 struct walk_tree_context *walk_tree_ctx = cbdata;
205 char *name; 203 char *name;
@@ -294,14 +292,13 @@ static void ls_tree(const struct object_id *oid, const char *path, struct walk_t
294 } 292 }
295 293
296 ls_head(); 294 ls_head();
297 read_tree_recursive(the_repository, tree, "", 0, 1, 295 read_tree(the_repository, tree, &paths, ls_item, walk_tree_ctx);
298 &paths, ls_item, walk_tree_ctx);
299 ls_tail(); 296 ls_tail();
300} 297}
301 298
302 299
303static int walk_tree(const struct object_id *oid, struct strbuf *base, 300static int walk_tree(const struct object_id *oid, struct strbuf *base,
304 const char *pathname, unsigned mode, int stage, void *cbdata) 301 const char *pathname, unsigned mode, void *cbdata)
305{ 302{
306 struct walk_tree_context *walk_tree_ctx = cbdata; 303 struct walk_tree_context *walk_tree_ctx = cbdata;
307 304
@@ -326,7 +323,7 @@ static int walk_tree(const struct object_id *oid, struct strbuf *base,
326 return 0; 323 return 0;
327 } 324 }
328 } 325 }
329 ls_item(oid, base, pathname, mode, stage, walk_tree_ctx); 326 ls_item(oid, base, pathname, mode, walk_tree_ctx);
330 return 0; 327 return 0;
331} 328}
332 329
@@ -374,10 +371,8 @@ void cgit_print_tree(const char *rev, char *path)
374 goto cleanup; 371 goto cleanup;
375 } 372 }
376 373
377 read_tree_recursive(the_repository, 374 read_tree(the_repository, repo_get_commit_tree(the_repository, commit),
378 repo_get_commit_tree(the_repository, commit), 375 &paths, walk_tree, &walk_tree_ctx);
379 "", 0, 0,
380 &paths, walk_tree, &walk_tree_ctx);
381 if (walk_tree_ctx.state == 1) 376 if (walk_tree_ctx.state == 1)
382 ls_tail(); 377 ls_tail();
383 else if (walk_tree_ctx.state == 2) 378 else if (walk_tree_ctx.state == 2)