about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2007-05-15 00:07:37 +0200
committerLars Hjemli <hjemli@gmail.com>2007-05-15 00:07:37 +0200
commit495e39677326284ea13b2f6d76195d6800c2a450 (patch)
tree21666895a947bb33c6722b8b453f1f1b5a56f638
parentSpecify static storage class for file-local declarations (diff)
downloadcgit-pink-495e39677326284ea13b2f6d76195d6800c2a450.tar.gz
cgit-pink-495e39677326284ea13b2f6d76195d6800c2a450.zip
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>
-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
@@ -8,7 +8,7 @@
 
 #include "cgit.h"
 
-static int items;
+static int header;
 
 static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
 				int flags, void *cb_data)
@@ -69,6 +69,15 @@ static void cgit_print_object_ref(struct object *obj)
 	html_link_close();
 }
 
+static void print_tag_header()
+{
+	html("<tr class='nohover'><th class='left'>Tag</th>"
+	     "<th class='left'>Created</th>"
+	     "<th class='left'>Author</th>"
+	     "<th class='left'>Reference</th></tr>\n");
+	header = 1;
+}
+
 static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
 				int flags, void *cb_data)
 {
@@ -85,13 +94,8 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
 		tag = lookup_tag(sha1);
 		if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
 			return 2;
-		if (!items) {
-			html("<tr class='nohover'><th class='left'>Tag</th>"
-			     "<th class='left'>Created</th>"
-			     "<th class='left'>Author</th>"
-			     "<th class='left'>Reference</th></tr>\n");
-		}
-		items++;
+		if (!header)
+			print_tag_header();
 		html("<tr><td>");
 		url = cgit_pageurl(cgit_query_repo, "view",
 				   fmt("id=%s", sha1_to_hex(sha1)));
@@ -108,6 +112,8 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
 		cgit_print_object_ref(tag->tagged);
 		html("</td></tr>\n");
 	} else {
+		if (!header)
+			print_tag_header();
 		html("<tr><td>");
 		html_txt(buf);
 		html("</td><td colspan='2'/><td>");
@@ -139,11 +145,11 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
 	} else if (obj->type != OBJ_BLOB) {
 		return 0;
 	}
-	if (!items) {
+	if (!header) {
 		html("<table>");
 		html("<tr><th>Downloads</th></tr>");
+		header = 1;
 	}
-	items++;
 	html("<tr><td>");
 	url = cgit_pageurl(cgit_query_repo, "blob",
 			   fmt("id=%s&path=%s", sha1_to_hex(sha1),
@@ -166,15 +172,15 @@ static void cgit_print_branches()
 
 static void cgit_print_tags()
 {
-	items = 0;
+	header = 0;
 	for_each_tag_ref(cgit_print_tag_cb, NULL);
 }
 
 static void cgit_print_archives()
 {
-	items = 0;
+	header = 0;
 	for_each_ref(cgit_print_archive_cb, NULL);
-	if (items)
+	if (header)
 		html("</table>");
 }
 
e before clientRecvJune McEnroe 2019-11-06Use -l:filename in Linux.mkJune McEnroe 2019-11-06Fix compat.h for #defined strlcpyJune McEnroe 2019-11-06Allow unsetting LIBRESSL_PREFIXJune McEnroe 2019-11-06Document calico service configurationJune McEnroe 2019-11-06Document SASL EXTERNAL configuration in more detailJune McEnroe 2019-11-06Document pounce service configurationJune McEnroe 2019-11-06Mention Darwin and GNU/Linux in READMEJune McEnroe 2019-11-06Assume LibreSSL from brew on DarwinJune McEnroe 2019-11-06Remove -DNO_EXPLICIT_BZERO from Darwin.mkJune McEnroe 2019-11-06Don't install rc scripts or dirs on LinuxJune McEnroe