struct pathspec is now used in more places.
Signed-off-by: John Keeping <john@keeping.me.uk>
-Subproject commit e5af0de202e885b793482d416b8ce9d50dd2b8bc
+Subproject commit 15b7898c5e9fc6fed9a6064213cfcd08cf7d7314
char *buf;
unsigned long size;
struct commit *commit;
- const char *paths[] = {path, NULL};
+ struct pathspec_item path_items = {
+ .match = path,
+ .len = strlen(path)
+ };
+ struct pathspec paths = {
+ .nr = 1,
+ .items = &path_items
+ };
if (get_sha1(head, sha1))
return -1;
type = sha1_object_info(sha1, &size);
match_path = path;
matched_sha1 = sha1;
found_path = 0;
- read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL);
+ read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL);
if (!found_path)
return -1;
type = sha1_object_info(sha1, &size);
char *buf;
unsigned long size;
struct commit *commit;
- const char *paths[] = {path, NULL};
+ struct pathspec_item path_items = {
+ .match = path,
+ .len = strlen(path)
+ };
+ struct pathspec paths = {
+ .nr = 1,
+ .items = &path_items
+ };
if (hex) {
if (get_sha1_hex(hex, sha1)){
commit = lookup_commit_reference(sha1);
match_path = path;
matched_sha1 = sha1;
- read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL);
+ read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL);
type = sha1_object_info(sha1,&size);
}
const char *rev = ctx->qry.sha1;
unsigned char sha1[20];
struct commit *commit;
- const char *paths[] = {ctx->qry.path, NULL};
+ struct pathspec_item path_items = {
+ .match = ctx->qry.path,
+ .len = ctx->qry.path ? strlen(ctx->qry.path) : 0
+ };
+ struct pathspec paths = {
+ .nr = 1,
+ .items = &path_items
+ };
if (!rev)
rev = ctx->qry.head;
html_status(404, "Not found", 0);
return;
}
- if (!paths[0]) {
- paths[0] = "";
+ if (!path_items.match) {
+ path_items.match = "";
match_baselen = -1;
print_dir(commit->tree->object.sha1, "", 0, "");
}
else
- match_baselen = basedir_len(paths[0]);
- read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL);
+ match_baselen = basedir_len(path_items.match);
+ read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL);
if (!match)
html_status(404, "Not found", 0);
else if (match == 2)
static void ls_tree(const unsigned char *sha1, char *path)
{
struct tree *tree;
+ struct pathspec paths = {
+ .nr = 0
+ };
tree = parse_tree_indirect(sha1);
if (!tree) {
}
ls_head();
- read_tree_recursive(tree, "", 0, 1, NULL, ls_item, NULL);
+ read_tree_recursive(tree, "", 0, 1, &paths, ls_item, NULL);
ls_tail();
}
{
unsigned char sha1[20];
struct commit *commit;
- const char *paths[] = {path, NULL};
+ struct pathspec_item path_items = {
+ .match = path,
+ .len = path ? strlen(path) : 0
+ };
+ struct pathspec paths = {
+ .nr = path ? 1 : 0,
+ .items = &path_items
+ };
if (!rev)
rev = ctx.qry.head;
}
match_path = path;
- read_tree_recursive(commit->tree, "", 0, 0, paths, walk_tree, NULL);
+ read_tree_recursive(commit->tree, "", 0, 0, &paths, walk_tree, NULL);
ls_tail();
}