summaryrefslogtreecommitdiffabout
path: root/ui-summary.c
authorLars Hjemli <hjemli@gmail.com>2007-05-14 22:07:37 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-05-14 22:07:37 (UTC)
commit495e39677326284ea13b2f6d76195d6800c2a450 (patch) (unidiff)
tree21666895a947bb33c6722b8b453f1f1b5a56f638 /ui-summary.c
parent9927e63f387e6c9328eb3c347ecb0e339f8ac023 (diff)
downloadcgit-495e39677326284ea13b2f6d76195d6800c2a450.zip
cgit-495e39677326284ea13b2f6d76195d6800c2a450.tar.gz
cgit-495e39677326284ea13b2f6d76195d6800c2a450.tar.bz2
Show tag heading even if first tag is of the lightweight kind
The tag printing code waited for valid tags before printing the table heading, but forgot to count unannotated tags. This fixes it. Noticed by Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-summary.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-summary.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/ui-summary.c b/ui-summary.c
index f6120f9..3410e1a 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -5,13 +5,13 @@
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11static int items; 11static int header;
12 12
13static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, 13static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
14 int flags, void *cb_data) 14 int flags, void *cb_data)
15{ 15{
16 struct commit *commit; 16 struct commit *commit;
17 struct commitinfo *info; 17 struct commitinfo *info;
@@ -66,12 +66,21 @@ static void cgit_print_object_ref(struct object *obj)
66 html_link_open(url, NULL, NULL); 66 html_link_open(url, NULL, NULL);
67 htmlf("%s %s", typename(obj->type), 67 htmlf("%s %s", typename(obj->type),
68 sha1_to_hex(obj->sha1)); 68 sha1_to_hex(obj->sha1));
69 html_link_close(); 69 html_link_close();
70} 70}
71 71
72static void print_tag_header()
73{
74 html("<tr class='nohover'><th class='left'>Tag</th>"
75 "<th class='left'>Created</th>"
76 "<th class='left'>Author</th>"
77 "<th class='left'>Reference</th></tr>\n");
78 header = 1;
79}
80
72static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1, 81static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
73 int flags, void *cb_data) 82 int flags, void *cb_data)
74{ 83{
75 struct tag *tag; 84 struct tag *tag;
76 struct taginfo *info; 85 struct taginfo *info;
77 struct object *obj; 86 struct object *obj;
@@ -82,19 +91,14 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
82 if (!obj) 91 if (!obj)
83 return 1; 92 return 1;
84 if (obj->type == OBJ_TAG) { 93 if (obj->type == OBJ_TAG) {
85 tag = lookup_tag(sha1); 94 tag = lookup_tag(sha1);
86 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) 95 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
87 return 2; 96 return 2;
88 if (!items) { 97 if (!header)
89 html("<tr class='nohover'><th class='left'>Tag</th>" 98 print_tag_header();
90 "<th class='left'>Created</th>"
91 "<th class='left'>Author</th>"
92 "<th class='left'>Reference</th></tr>\n");
93 }
94 items++;
95 html("<tr><td>"); 99 html("<tr><td>");
96 url = cgit_pageurl(cgit_query_repo, "view", 100 url = cgit_pageurl(cgit_query_repo, "view",
97 fmt("id=%s", sha1_to_hex(sha1))); 101 fmt("id=%s", sha1_to_hex(sha1)));
98 html_link_open(url, NULL, NULL); 102 html_link_open(url, NULL, NULL);
99 html_txt(buf); 103 html_txt(buf);
100 html_link_close(); 104 html_link_close();
@@ -105,12 +109,14 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
105 if (info->tagger) 109 if (info->tagger)
106 html(info->tagger); 110 html(info->tagger);
107 html("</td><td>"); 111 html("</td><td>");
108 cgit_print_object_ref(tag->tagged); 112 cgit_print_object_ref(tag->tagged);
109 html("</td></tr>\n"); 113 html("</td></tr>\n");
110 } else { 114 } else {
115 if (!header)
116 print_tag_header();
111 html("<tr><td>"); 117 html("<tr><td>");
112 html_txt(buf); 118 html_txt(buf);
113 html("</td><td colspan='2'/><td>"); 119 html("</td><td colspan='2'/><td>");
114 cgit_print_object_ref(obj); 120 cgit_print_object_ref(obj);
115 html("</td></tr>\n"); 121 html("</td></tr>\n");
116 } 122 }
@@ -136,17 +142,17 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
136 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) 142 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
137 return 0; 143 return 0;
138 hashcpy(sha1, tag->tagged->sha1); 144 hashcpy(sha1, tag->tagged->sha1);
139 } else if (obj->type != OBJ_BLOB) { 145 } else if (obj->type != OBJ_BLOB) {
140 return 0; 146 return 0;
141 } 147 }
142 if (!items) { 148 if (!header) {
143 html("<table>"); 149 html("<table>");
144 html("<tr><th>Downloads</th></tr>"); 150 html("<tr><th>Downloads</th></tr>");
151 header = 1;
145 } 152 }
146 items++;
147 html("<tr><td>"); 153 html("<tr><td>");
148 url = cgit_pageurl(cgit_query_repo, "blob", 154 url = cgit_pageurl(cgit_query_repo, "blob",
149 fmt("id=%s&path=%s", sha1_to_hex(sha1), 155 fmt("id=%s&path=%s", sha1_to_hex(sha1),
150 buf)); 156 buf));
151 html_link_open(url, NULL, NULL); 157 html_link_open(url, NULL, NULL);
152 html_txt(buf); 158 html_txt(buf);
@@ -163,21 +169,21 @@ static void cgit_print_branches()
163 "<th class='left'>Head commit</th></tr>\n"); 169 "<th class='left'>Head commit</th></tr>\n");
164 for_each_branch_ref(cgit_print_branch_cb, NULL); 170 for_each_branch_ref(cgit_print_branch_cb, NULL);
165} 171}
166 172
167static void cgit_print_tags() 173static void cgit_print_tags()
168{ 174{
169 items = 0; 175 header = 0;
170 for_each_tag_ref(cgit_print_tag_cb, NULL); 176 for_each_tag_ref(cgit_print_tag_cb, NULL);
171} 177}
172 178
173static void cgit_print_archives() 179static void cgit_print_archives()
174{ 180{
175 items = 0; 181 header = 0;
176 for_each_ref(cgit_print_archive_cb, NULL); 182 for_each_ref(cgit_print_archive_cb, NULL);
177 if (items) 183 if (header)
178 html("</table>"); 184 html("</table>");
179} 185}
180 186
181void cgit_print_summary() 187void cgit_print_summary()
182{ 188{
183 html("<table class='list nowrap'>"); 189 html("<table class='list nowrap'>");