X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/61c3ca978c586c673aec618cb94210657278dda8..a342ac6b4d7830f82230b0f6a29bc9378d66747e:/ui-tree.c?ds=sidebyside diff --git a/ui-tree.c b/ui-tree.c index 60f7560..db63e13 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -8,18 +8,19 @@ #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; enum object_type type; - unsigned long size; + unsigned long size = 0; name = xstrdup(pathname); type = sha1_object_info(sha1, &size); - if (type == OBJ_BAD) { + if (type == OBJ_BAD && !S_ISDIRLNK(mode)) { htmlf("Bad object: %s %s", name, sha1_to_hex(sha1)); @@ -27,37 +28,49 @@ static int print_entry(const unsigned char *sha1, const char *base, } html(""); html_filemode(mode); - html(""); + html("%s => submodule", name); + htmlf("class='ls-mod'>%s", name); } else { - html("
%s
", name); } - html(""); + htmlf("'>%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]; + curr_rev = xstrdup(rev); if (get_sha1_hex(hex, sha1)) { cgit_print_error(fmt("Invalid object id: %s", hex)); return; @@ -74,6 +87,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");