about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--cgit.css2
-rw-r--r--cgit.h1
-rw-r--r--html.c28
-rw-r--r--ui-log.c4
-rw-r--r--ui-summary.c4
5 files changed, 34 insertions, 5 deletions
diff --git a/cgit.css b/cgit.css
index 7b8e468..85815c1 100644
--- a/cgit.css
+++ b/cgit.css
@@ -100,7 +100,7 @@ td.blob {
 	background-color: white;
 }
 
-table.log td {
+table.nowrap td {
 	white-space: nowrap;
 }
 
diff --git a/cgit.h b/cgit.h
index bba2d6c..362b435 100644
--- a/cgit.h
+++ b/cgit.h
@@ -73,6 +73,7 @@ extern char *fmt(const char *format,...);
 extern void html(const char *txt);
 extern void htmlf(const char *format,...);
 extern void html_txt(char *txt);
+extern void html_ntxt(int len, char *txt);
 extern void html_attr(char *txt);
 extern void html_link_open(char *url, char *title, char *class);
 extern void html_link_close(void);
diff --git a/html.c b/html.c
index 8a69659..957b326 100644
--- a/html.c
+++ b/html.c
@@ -65,6 +65,34 @@ void html_txt(char *txt)
 		html(txt);
 }
 
+void html_ntxt(int len, char *txt)
+{
+	char *t = txt;
+	while(*t && len--){
+		int c = *t;
+		if (c=='<' || c=='>' || c=='&') {
+			*t = '\0';
+			html(txt);
+			*t = c;
+			if (c=='>')
+				html("&gt;");
+			else if (c=='<')
+				html("&lt;");
+			else if (c=='&')
+				html("&amp;");
+			txt = t+1;
+		}
+		t++;
+	}
+	if (t!=txt) {
+		char c = *t;
+		*t = '\0';
+		html(txt);
+		*t = c;
+	}
+	if (len<0)
+		html("...");
+}
 
 void html_attr(char *txt)
 {
diff --git a/ui-log.c b/ui-log.c
index def96f6..f3b16e7 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -23,7 +23,7 @@ void print_commit(struct commit *commit)
 	char *qry = fmt("id=%s", sha1_to_hex(commit->object.sha1));
 	char *url = cgit_pageurl(cgit_query_repo, "commit", qry);
 	html_link_open(url, NULL, NULL);
-	html_txt(info->subject);
+	html_ntxt(80, info->subject);
 	html_link_close();
 	html("</td><td>");
 	html_txt(info->author);
@@ -48,7 +48,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt)
 	prepare_revision_walk(&rev);
 
 	html("<h2>Log</h2>");
-	html("<table class='list log'>");
+	html("<table class='list nowrap'>");
 	html("<tr><th class='left'>Date</th>"
 	     "<th class='left'>Message</th>"
 	     "<th class='left'>Author</th></tr>\n");
diff --git a/ui-summary.c b/ui-summary.c
index 638c8f6..de95053 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -31,7 +31,7 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
 		url = cgit_pageurl(cgit_query_repo, "commit", 
 				   fmt("id=%s", sha1_to_hex(sha1)));
 		html_link_open(url, NULL, NULL);
-		html_txt(info->subject);
+		html_ntxt(80, info->subject);
 		html_link_close();
 		html("</td><td>");
 		html_txt(info->author);
@@ -49,7 +49,7 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
 
 static void cgit_print_branches()
 {
-	html("<table class='list'>");
+	html("<table class='list nowrap'>");
 	html("<tr><th class='left'>Branch</th>"
 	     "<th class='left'>Updated</th>"
 	     "<th class='left'>Commit subject</th>"