X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/9a8f88658d51aeb86a79ac1121de13562ad2601f..ca8eb8fc8f71ee0a40015c323619f776840b6503:/ui-tree.c?ds=sidebyside
diff --git a/ui-tree.c b/ui-tree.c
index c4d75ab..60f7560 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -14,38 +14,46 @@ static int print_entry(const unsigned char *sha1, const char *base,
int stage)
{
char *name;
- char type[20];
+ enum object_type type;
unsigned long size;
- if (sha1_object_info(sha1, type, &size)) {
- cgit_print_error(fmt("Bad object name: %s",
- sha1_to_hex(sha1)));
+ name = xstrdup(pathname);
+ type = sha1_object_info(sha1, &size);
+ if (type == OBJ_BAD) {
+ htmlf("
| Bad object: %s %s |
",
+ name,
+ sha1_to_hex(sha1));
return 0;
}
- name = xstrdup(pathname);
- html("| ");
- if (S_ISDIR(mode)) {
+ html(" |
| ");
+ html_filemode(mode);
+ html(" | ");
+ if (S_ISDIRLNK(mode)) {
+ htmlf(" %s => submodule ", name);
+ } else if (S_ISDIR(mode)) {
html("", name);
} else {
html("", name);
}
- html("'>");
- html_txt(name);
- if (S_ISDIR(mode))
- html("/");
- html(" | ");
+ html("");
htmlf("%li | ", size);
- htmlf("%06o | ", mode);
html("
\n");
free(name);
return 0;
}
-void cgit_print_tree(const char *hex)
+void cgit_print_tree(const char *hex, char *path)
{
struct tree *tree;
unsigned char sha1[20];
@@ -60,11 +68,13 @@ void cgit_print_tree(const char *hex)
return;
}
- html("Tree content
\n");
+ html_txt(path);
html("\n");
- html("| Name | ");
+ html("
|---|
");
+ html("| Mode | ");
+ html("Name | ");
html("Size | ");
- html("Mode |
\n");
+ html("\n");
read_tree_recursive(tree, "", 0, 1, NULL, print_entry);
html("
\n");
}