]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-summary.c
Add functions and types for ref lists
[ps-cgit] / ui-summary.c
index 29b76e368366469353b311a7a8b2a3cc5cfd333c..de8a1808cf8a3f6e498b3ad8e06148768bdb4bb7 100644 (file)
@@ -15,8 +15,10 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
 {
        struct commit *commit;
        struct commitinfo *info;
-       char buf[256], *url;
+       char buf[256];
+       char *ref;
 
+       ref = xstrdup(refname);
        strncpy(buf, refname, sizeof(buf));
        commit = lookup_commit(sha1);
        // object is not really parsed at this point, because of some fallout
@@ -25,17 +27,13 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
        if (commit && !parse_commit(commit)){
                info = cgit_parse_commit(commit);
                html("<tr><td>");
-               cgit_log_link(refname, NULL, NULL, refname, NULL, NULL);
+               cgit_log_link(ref, NULL, NULL, ref, NULL, NULL, 0);
                html("</td><td>");
                cgit_print_age(commit->date, -1, NULL);
                html("</td><td>");
                html_txt(info->author);
                html("</td><td>");
-               url = cgit_pageurl(cgit_query_repo, "commit",
-                                  fmt("h=%s", sha1_to_hex(sha1)));
-               html_link_open(url, NULL, NULL);
-               html_ntxt(cgit_max_msg_len, info->subject);
-               html_link_close();
+               cgit_commit_link(info->subject, NULL, NULL, ref, NULL);
                html("</td></tr>\n");
                cgit_free_commitinfo(info);
        } else {
@@ -45,33 +43,10 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
                htmlf("*** bad ref %s ***", sha1_to_hex(sha1));
                html("</td></tr>\n");
        }
+       free(ref);
        return 0;
 }
 
-
-static void cgit_print_object_ref(struct object *obj)
-{
-       char *page, *arg, *url;
-
-       if (obj->type == OBJ_COMMIT) {
-               page = "commit";
-               arg = "h";
-       } else if (obj->type == OBJ_TREE) {
-               page = "tree";
-               arg = "id";
-       } else {
-               page = "view";
-               arg = "id";
-       }
-
-       url = cgit_pageurl(cgit_query_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();
-}
-
 static void print_tag_header()
 {
        html("<tr class='nohover'><th class='left'>Tag</th>"
@@ -100,8 +75,8 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
                if (!header)
                        print_tag_header();
                html("<tr><td>");
-               url = cgit_pageurl(cgit_query_repo, "view",
-                                  fmt("id=%s", sha1_to_hex(sha1)));
+               url = cgit_pageurl(cgit_query_repo, "tag",
+                                  fmt("id=%s", refname));
                html_link_open(url, NULL, NULL);
                html_txt(buf);
                html_link_close();
@@ -112,7 +87,7 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
                if (info->tagger)
                        html(info->tagger);
                html("</td><td>");
-               cgit_print_object_ref(tag->tagged);
+               cgit_object_link(tag->tagged);
                html("</td></tr>\n");
        } else {
                if (!header)
@@ -120,7 +95,7 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
                html("<tr><td>");
                html_txt(buf);
                html("</td><td colspan='2'/><td>");
-               cgit_print_object_ref(obj);
+               cgit_object_link(obj);
                html("</td></tr>\n");
        }
        return 0;