-rw-r--r-- | ui-summary.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/ui-summary.c b/ui-summary.c index 1e895a6..c684628 100644 --- a/ui-summary.c +++ b/ui-summary.c | |||
@@ -41,64 +41,56 @@ static void cgit_print_branch(struct refinfo *ref) | |||
41 | } | 41 | } |
42 | } | 42 | } |
43 | 43 | ||
44 | static void print_tag_header() | 44 | static void print_tag_header() |
45 | { | 45 | { |
46 | html("<tr class='nohover'><th class='left'>Tag</th>" | 46 | html("<tr class='nohover'><th class='left'>Tag</th>" |
47 | "<th class='left'>Age</th>" | 47 | "<th class='left'>Age</th>" |
48 | "<th class='left'>Author</th>" | 48 | "<th class='left'>Author</th>" |
49 | "<th class='left'>Reference</th></tr>\n"); | 49 | "<th class='left'>Reference</th></tr>\n"); |
50 | header = 1; | 50 | header = 1; |
51 | } | 51 | } |
52 | 52 | ||
53 | static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1, | 53 | static int print_tag(struct refinfo *ref) |
54 | int flags, void *cb_data) | ||
55 | { | 54 | { |
56 | struct tag *tag; | 55 | struct tag *tag; |
57 | struct taginfo *info; | 56 | struct taginfo *info; |
58 | struct object *obj; | 57 | char *url, *name = (char *)ref->refname; |
59 | char buf[256], *url; | ||
60 | 58 | ||
61 | strncpy(buf, refname, sizeof(buf)); | 59 | if (ref->object->type == OBJ_TAG) { |
62 | obj = parse_object(sha1); | 60 | tag = lookup_tag(ref->object->sha1); |
63 | if (!obj) | ||
64 | return 1; | ||
65 | if (obj->type == OBJ_TAG) { | ||
66 | tag = lookup_tag(sha1); | ||
67 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) | 61 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) |
68 | return 2; | 62 | return 2; |
69 | if (!header) | ||
70 | print_tag_header(); | ||
71 | html("<tr><td>"); | 63 | html("<tr><td>"); |
72 | url = cgit_pageurl(cgit_query_repo, "tag", | 64 | url = cgit_pageurl(cgit_query_repo, "tag", |
73 | fmt("id=%s", refname)); | 65 | fmt("id=%s", name)); |
74 | html_link_open(url, NULL, NULL); | 66 | html_link_open(url, NULL, NULL); |
75 | html_txt(buf); | 67 | html_txt(name); |
76 | html_link_close(); | 68 | html_link_close(); |
77 | html("</td><td>"); | 69 | html("</td><td>"); |
78 | if (info->tagger_date > 0) | 70 | if (info->tagger_date > 0) |
79 | cgit_print_age(info->tagger_date, -1, NULL); | 71 | cgit_print_age(info->tagger_date, -1, NULL); |
80 | html("</td><td>"); | 72 | html("</td><td>"); |
81 | if (info->tagger) | 73 | if (info->tagger) |
82 | html(info->tagger); | 74 | html(info->tagger); |
83 | html("</td><td>"); | 75 | html("</td><td>"); |
84 | cgit_object_link(tag->tagged); | 76 | cgit_object_link(tag->tagged); |
85 | html("</td></tr>\n"); | 77 | html("</td></tr>\n"); |
86 | } else { | 78 | } else { |
87 | if (!header) | 79 | if (!header) |
88 | print_tag_header(); | 80 | print_tag_header(); |
89 | html("<tr><td>"); | 81 | html("<tr><td>"); |
90 | html_txt(buf); | 82 | html_txt(name); |
91 | html("</td><td colspan='2'/><td>"); | 83 | html("</td><td colspan='2'/><td>"); |
92 | cgit_object_link(obj); | 84 | cgit_object_link(ref->object); |
93 | html("</td></tr>\n"); | 85 | html("</td></tr>\n"); |
94 | } | 86 | } |
95 | return 0; | 87 | return 0; |
96 | } | 88 | } |
97 | 89 | ||
98 | static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, | 90 | static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, |
99 | int flags, void *cb_data) | 91 | int flags, void *cb_data) |
100 | { | 92 | { |
101 | struct tag *tag; | 93 | struct tag *tag; |
102 | struct taginfo *info; | 94 | struct taginfo *info; |
103 | struct object *obj; | 95 | struct object *obj; |
104 | char buf[256], *url; | 96 | char buf[256], *url; |
@@ -146,26 +138,36 @@ static void cgit_print_branches() | |||
146 | "<th class='left'>Author</th>" | 138 | "<th class='left'>Author</th>" |
147 | "<th class='left'>Head commit</th></tr>\n"); | 139 | "<th class='left'>Head commit</th></tr>\n"); |
148 | 140 | ||
149 | list.refs = NULL; | 141 | list.refs = NULL; |
150 | list.alloc = list.count = 0; | 142 | list.alloc = list.count = 0; |
151 | for_each_branch_ref(cgit_refs_cb, &list); | 143 | for_each_branch_ref(cgit_refs_cb, &list); |
152 | for(i=0; i<list.count; i++) | 144 | for(i=0; i<list.count; i++) |
153 | cgit_print_branch(list.refs[i]); | 145 | cgit_print_branch(list.refs[i]); |
154 | } | 146 | } |
155 | 147 | ||
156 | static void cgit_print_tags() | 148 | static void cgit_print_tags() |
157 | { | 149 | { |
150 | struct reflist list; | ||
151 | int i; | ||
152 | |||
158 | header = 0; | 153 | header = 0; |
159 | for_each_tag_ref(cgit_print_tag_cb, NULL); | 154 | list.refs = NULL; |
155 | list.alloc = list.count = 0; | ||
156 | for_each_tag_ref(cgit_refs_cb, &list); | ||
157 | if (list.count == 0) | ||
158 | return; | ||
159 | print_tag_header(); | ||
160 | for(i=0; i<list.count; i++) | ||
161 | print_tag(list.refs[i]); | ||
160 | } | 162 | } |
161 | 163 | ||
162 | static void cgit_print_archives() | 164 | static void cgit_print_archives() |
163 | { | 165 | { |
164 | header = 0; | 166 | header = 0; |
165 | for_each_ref(cgit_print_archive_cb, NULL); | 167 | for_each_ref(cgit_print_archive_cb, NULL); |
166 | if (header) | 168 | if (header) |
167 | html("</table>"); | 169 | html("</table>"); |
168 | } | 170 | } |
169 | 171 | ||
170 | void cgit_print_summary() | 172 | void cgit_print_summary() |
171 | { | 173 | { |