summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-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
@@ -97,13 +97,13 @@ td.blob {
white-space: pre;
font-family: courier;
font-size: 100%;
background-color: white;
}
-table.log td {
+table.nowrap td {
white-space: nowrap;
}
table.commit-info {
border-collapse: collapse;
margin-top: 1.5em;
diff --git a/cgit.h b/cgit.h
index bba2d6c..362b435 100644
--- a/cgit.h
+++ b/cgit.h
@@ -70,12 +70,13 @@ extern void *cgit_free_commitinfo(struct commitinfo *info);
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);
extern void html_filemode(unsigned short mode);
extern int cgit_read_config(const char *filename, configfn fn);
diff --git a/html.c b/html.c
index 8a69659..957b326 100644
--- a/html.c
+++ b/html.c
@@ -62,12 +62,40 @@ void html_txt(char *txt)
t++;
}
if (t!=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)
{
char *t = txt;
while(*t){
int c = *t;
diff --git a/ui-log.c b/ui-log.c
index def96f6..f3b16e7 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -20,13 +20,13 @@ void print_commit(struct commit *commit)
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", time);
html_txt(buf);
html("</td><td>");
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);
html("</td></tr>\n");
cgit_free_commitinfo(info);
}
@@ -45,13 +45,13 @@ void cgit_print_log(const char *tip, int ofs, int cnt)
rev.verbose_header = 1;
rev.show_root_diff = 0;
setup_revisions(2, argv, &rev, NULL);
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");
if (ofs<0)
ofs = 0;
diff --git a/ui-summary.c b/ui-summary.c
index 638c8f6..de95053 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -28,13 +28,13 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
html("</td><td>");
cgit_print_date(commit->date);
html("</td><td>");
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);
html("</td></tr>\n");
cgit_free_commitinfo(info);
} else {
@@ -46,13 +46,13 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
}
return 0;
}
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>"
"<th class='left'>Author</th></tr>\n");
for_each_branch_ref(cgit_print_branch_cb, NULL);
html("</table>");