]> git.cameronkatri.com Git - cgit.git/blobdiff - ui-tag.c
filter: pass extra arguments via cgit_open_filter
[cgit.git] / ui-tag.c
index 5a22696a0b159accd0e239ee8bab2c8c72debb28..ec9c757db22d8196bebefb1ae020ac33ca30b627 100644 (file)
--- a/ui-tag.c
+++ b/ui-tag.c
@@ -1,6 +1,6 @@
 /* ui-tag.c: display a tag
  *
- * Copyright (C) 2007 Lars Hjemli
+ * Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
  *
  * Licensed under GNU General Public License v2
  *   (see COPYING for full license text)
@@ -41,6 +41,7 @@ static void print_download_links(char *revname)
 
 void cgit_print_tag(char *revname)
 {
+       struct strbuf fullref = STRBUF_INIT;
        unsigned char sha1[20];
        struct object *obj;
        struct tag *tag;
@@ -49,20 +50,21 @@ void cgit_print_tag(char *revname)
        if (!revname)
                revname = ctx.qry.head;
 
-       if (get_sha1(fmt("refs/tags/%s", revname), sha1)) {
-               cgit_print_error(fmt("Bad tag reference: %s", revname));
-               return;
+       strbuf_addf(&fullref, "refs/tags/%s", revname);
+       if (get_sha1(fullref.buf, sha1)) {
+               cgit_print_error("Bad tag reference: %s", revname);
+               goto cleanup;
        }
        obj = parse_object(sha1);
        if (!obj) {
-               cgit_print_error(fmt("Bad object id: %s", sha1_to_hex(sha1)));
-               return;
+               cgit_print_error("Bad object id: %s", sha1_to_hex(sha1));
+               goto cleanup;
        }
        if (obj->type == OBJ_TAG) {
                tag = lookup_tag(sha1);
                if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) {
-                       cgit_print_error(fmt("Bad tag object: %s", revname));
-                       return;
+                       cgit_print_error("Bad tag object: %s", revname);
+                       goto cleanup;
                }
                html("<table class='commit-info'>\n");
                htmlf("<tr><td>tag name</td><td>");
@@ -101,5 +103,7 @@ void cgit_print_tag(char *revname)
                        print_download_links(revname);
                html("</table>\n");
        }
-       return;
+
+cleanup:
+       strbuf_release(&fullref);
 }