X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/ded9393b173853d2e960f9b176aeb0bc4ed35be2..dc3ac3f76077c5d612d42e8beb4878e43acfc58a:/ui-tree.c diff --git a/ui-tree.c b/ui-tree.c index dee8309..032a966 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -8,9 +8,10 @@ #include "cgit.h" +char *curr_rev; -static int print_entry(const unsigned char *sha1, const char *base, - int baselen, const char *pathname, unsigned int mode, +static int print_entry(const unsigned char *sha1, const char *base, + int baselen, const char *pathname, unsigned int mode, int stage) { char *name; @@ -35,29 +36,50 @@ static int print_entry(const unsigned char *sha1, const char *base, sha1_to_hex(sha1))); } else if (S_ISDIR(mode)) { html("class='ls-dir'>%s", name); htmlf("%li", size); + + html("history"); html("\n"); free(name); return 0; } -void cgit_print_tree(const char *hex, char *path) +void cgit_print_tree(const char *rev, const char *hex, char *path) { struct tree *tree; unsigned char sha1[20]; + struct commit *commit; + + curr_rev = xstrdup(rev); + get_sha1(rev, sha1); + commit = lookup_commit_reference(sha1); + if (!commit || parse_commit(commit)) { + cgit_print_error(fmt("Invalid head: %s", rev)); + return; + } + if (!hex) + hex = sha1_to_hex(commit->tree->object.sha1); if (get_sha1_hex(hex, sha1)) { cgit_print_error(fmt("Invalid object id: %s", hex)); @@ -75,6 +97,7 @@ void cgit_print_tree(const char *hex, char *path) html("Mode"); html("Name"); html("Size"); + html(""); html("\n"); read_tree_recursive(tree, "", 0, 1, NULL, print_entry); html("\n");