| -rw-r--r-- | ui-shared.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/ui-shared.c b/ui-shared.c index a959224..1e12529 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -359,21 +359,29 @@ void cgit_patch_link(char *name, char *title, char *class, char *head, void cgit_object_link(struct object *obj) { - char *page, *rev, *name; + char *page, *arg, *url; if (obj->type == OBJ_COMMIT) { cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, ctx.qry.head, sha1_to_hex(obj->sha1)); return; - } else if (obj->type == OBJ_TREE) + } else if (obj->type == OBJ_TREE) { page = "tree"; - else if (obj->type == OBJ_TAG) + arg = "id"; + } else if (obj->type == OBJ_TAG) { page = "tag"; - else + arg = "id"; + } else { page = "blob"; - rev = sha1_to_hex(obj->sha1); - name = fmt("%s %s", typename(obj->type), rev); - reporevlink(page, name, NULL, NULL, ctx.qry.head, rev, NULL); + arg = "id"; + } + + url = cgit_pageurl(ctx.qry.repo, page, + fmt("%s=%s", arg, sha1_to_hex(obj->sha1))); + html_link_open(url, NULL, NULL); + htmlf("%s %s", typename(obj->type), + sha1_to_hex(obj->sha1)); + html_link_close(); } void cgit_print_date(time_t secs, char *format, int local_time) |