diff options
Diffstat (limited to 'ui-tree.c')
| -rw-r--r-- | ui-tree.c | 16 |
1 files changed, 13 insertions, 3 deletions
| @@ -202,6 +202,9 @@ static void ls_tail() | |||
| 202 | static void ls_tree(const unsigned char *sha1, char *path) | 202 | static void ls_tree(const unsigned char *sha1, char *path) |
| 203 | { | 203 | { |
| 204 | struct tree *tree; | 204 | struct tree *tree; |
| 205 | struct pathspec paths = { | ||
| 206 | .nr = 0 | ||
| 207 | }; | ||
| 205 | 208 | ||
| 206 | tree = parse_tree_indirect(sha1); | 209 | tree = parse_tree_indirect(sha1); |
| 207 | if (!tree) { | 210 | if (!tree) { |
| @@ -211,7 +214,7 @@ static void ls_tree(const unsigned char *sha1, char *path) | |||
| 211 | } | 214 | } |
| 212 | 215 | ||
| 213 | ls_head(); | 216 | ls_head(); |
| 214 | read_tree_recursive(tree, "", 0, 1, NULL, ls_item, NULL); | 217 | read_tree_recursive(tree, "", 0, 1, &paths, ls_item, NULL); |
| 215 | ls_tail(); | 218 | ls_tail(); |
| 216 | } | 219 | } |
| 217 | 220 | ||
| @@ -252,7 +255,14 @@ void cgit_print_tree(const char *rev, char *path) | |||
| 252 | { | 255 | { |
| 253 | unsigned char sha1[20]; | 256 | unsigned char sha1[20]; |
| 254 | struct commit *commit; | 257 | struct commit *commit; |
| 255 | const char *paths[] = {path, NULL}; | 258 | struct pathspec_item path_items = { |
| 259 | .match = path, | ||
| 260 | .len = path ? strlen(path) : 0 | ||
| 261 | }; | ||
| 262 | struct pathspec paths = { | ||
| 263 | .nr = path ? 1 : 0, | ||
| 264 | .items = &path_items | ||
| 265 | }; | ||
| 256 | 266 | ||
| 257 | if (!rev) | 267 | if (!rev) |
| 258 | rev = ctx.qry.head; | 268 | rev = ctx.qry.head; |
| @@ -274,6 +284,6 @@ void cgit_print_tree(const char *rev, char *path) | |||
| 274 | } | 284 | } |
| 275 | 285 | ||
| 276 | match_path = path; | 286 | match_path = path; |
| 277 | read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL); | 287 | read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL); |
| 278 | ls_tail(); | 288 | ls_tail(); |
| 279 | } | 289 | } |
