cgit_open_filter(ctx.repo->source_filter);
html_raw(buf, size);
cgit_close_filter(ctx.repo->source_filter);
+ free(ctx.repo->source_filter->argv[1]);
+ ctx.repo->source_filter->argv[1] = NULL;
html("</code></pre></td></tr></table>\n");
return;
}
cgit_print_filemode(mode);
html("</td><td>");
if (S_ISGITLINK(mode)) {
- htmlf("<a class='ls-mod' href='");
- html_attr(fmt(ctx.repo->module_link,
- name,
- sha1_to_hex(sha1)));
- html("'>");
- html_txt(name);
- html("</a>");
+ cgit_submodule_link("ls-mod", fullpath, sha1_to_hex(sha1));
} else if (S_ISDIR(mode)) {
cgit_tree_link(name, NULL, "ls-dir", ctx.qry.head,
curr_rev, fullpath);
if (ctx.repo->max_stats)
cgit_stats_link("stats", NULL, "button", ctx.qry.head,
fullpath);
- cgit_plain_link("plain", NULL, "button", ctx.qry.head, curr_rev,
- fullpath);
+ if (!S_ISGITLINK(mode))
+ cgit_plain_link("plain", NULL, "button", ctx.qry.head, curr_rev,
+ fullpath);
html("</td></tr>\n");
free(name);
return 0;
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();
}