summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2011-06-02 10:30:26 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2011-06-02 10:30:26 (UTC)
commitd885158f6ac29e04bd14dd132331c7e3a93e7490 (patch) (side-by-side diff)
tree15dee6a8e4f3cfd2737a50725e480d09220ee0dd
parent2aabeaf834a47c2fd64e045a28cd2e5b90658939 (diff)
downloadcgit-d885158f6ac29e04bd14dd132331c7e3a93e7490.zip
cgit-d885158f6ac29e04bd14dd132331c7e3a93e7490.tar.gz
cgit-d885158f6ac29e04bd14dd132331c7e3a93e7490.tar.bz2
ui-log.c: do not link from age column
The link url wasn't properly escaped, and since the link was identical to the one used on the commit message it didn't serve any special purpose. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rwxr-xr-xtests/t0103-log.sh2
-rw-r--r--ui-log.c9
2 files changed, 1 insertions, 10 deletions
diff --git a/tests/t0103-log.sh b/tests/t0103-log.sh
index def5c18..75dd761 100755
--- a/tests/t0103-log.sh
+++ b/tests/t0103-log.sh
@@ -1,25 +1,25 @@
#!/bin/sh
. ./setup.sh
prepare_tests "Check content on log page"
run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp'
run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
run_test 'find commit 5' 'grep -e "commit 5" trash/tmp'
run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp'
run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
run_test 'find commit 50' 'grep -e "commit 50" trash/tmp'
run_test 'generate "with%20space/log?qt=grep&q=commit+1"' '
cgit_url "with+space/log&qt=grep&q=commit+1" >trash/tmp
'
run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
run_test 'find link with %20 in path' 'grep -e "/with%20space/log/?qt=grep" trash/tmp'
run_test 'find link with + in arg' 'grep -e "/log/?qt=grep&q=commit+1" trash/tmp'
-run_test BUG 'no links with space in path' '! grep -e "href=./with space/" trash/tmp'
+run_test 'no links with space in path' '! grep -e "href=./with space/" trash/tmp'
run_test 'no links with space in arg' '! grep -e "q=commit 1" trash/tmp'
run_test 'commit 2 is not visible' '! grep -e "commit 2" trash/tmp'
tests_done
diff --git a/ui-log.c b/ui-log.c
index 8add66a..15ed6a3 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -50,178 +50,169 @@ void inspect_files(struct diff_filepair *pair)
if (ctx.repo->enable_log_linecount)
cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
&new_size, &binary, 0, ctx.qry.ignorews,
count_lines);
}
void show_commit_decorations(struct commit *commit)
{
struct name_decoration *deco;
static char buf[1024];
buf[sizeof(buf) - 1] = 0;
deco = lookup_decoration(&name_decoration, &commit->object);
while (deco) {
if (!prefixcmp(deco->name, "refs/heads/")) {
strncpy(buf, deco->name + 11, sizeof(buf) - 1);
cgit_log_link(buf, NULL, "branch-deco", buf, NULL,
ctx.qry.vpath, 0, NULL, NULL,
ctx.qry.showmsg);
}
else if (!prefixcmp(deco->name, "tag: refs/tags/")) {
strncpy(buf, deco->name + 15, sizeof(buf) - 1);
cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf);
}
else if (!prefixcmp(deco->name, "refs/tags/")) {
strncpy(buf, deco->name + 10, sizeof(buf) - 1);
cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf);
}
else if (!prefixcmp(deco->name, "refs/remotes/")) {
strncpy(buf, deco->name + 13, sizeof(buf) - 1);
cgit_log_link(buf, NULL, "remote-deco", NULL,
sha1_to_hex(commit->object.sha1),
ctx.qry.vpath, 0, NULL, NULL,
ctx.qry.showmsg);
}
else {
strncpy(buf, deco->name, sizeof(buf) - 1);
cgit_commit_link(buf, NULL, "deco", ctx.qry.head,
sha1_to_hex(commit->object.sha1),
ctx.qry.vpath, 0);
}
deco = deco->next;
}
}
void print_commit(struct commit *commit, struct rev_info *revs)
{
struct commitinfo *info;
- char *tmp;
int cols = revs->graph ? 3 : 2;
struct strbuf graphbuf = STRBUF_INIT;
struct strbuf msgbuf = STRBUF_INIT;
if (ctx.repo->enable_log_filecount) {
cols++;
if (ctx.repo->enable_log_linecount)
cols++;
}
if (revs->graph) {
/* Advance graph until current commit */
while (!graph_next_line(revs->graph, &graphbuf)) {
/* Print graph segment in otherwise empty table row */
html("<tr class='nohover'><td class='commitgraph'>");
html(graphbuf.buf);
htmlf("</td><td colspan='%d' /></tr>\n", cols);
strbuf_setlen(&graphbuf, 0);
}
/* Current commit's graph segment is now ready in graphbuf */
}
info = cgit_parse_commit(commit);
htmlf("<tr%s>", ctx.qry.showmsg ? " class='logheader'" : "");
if (revs->graph) {
/* Print graph segment for current commit */
html("<td class='commitgraph'>");
html(graphbuf.buf);
html("</td>");
strbuf_setlen(&graphbuf, 0);
}
else {
html("<td>");
- tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
- tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
- html_link_open(tmp, NULL, NULL);
cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
- html_link_close();
html("</td>");
}
htmlf("<td%s>", ctx.qry.showmsg ? " class='logsubject'" : "");
if (ctx.qry.showmsg) {
/* line-wrap long commit subjects instead of truncating them */
size_t subject_len = strlen(info->subject);
if (subject_len > ctx.cfg.max_msg_len &&
ctx.cfg.max_msg_len >= 15) {
/* symbol for signaling line-wrap (in PAGE_ENCODING) */
const char wrap_symbol[] = { ' ', 0xE2, 0x86, 0xB5, 0 };
int i = ctx.cfg.max_msg_len - strlen(wrap_symbol);
/* Rewind i to preceding space character */
while (i > 0 && !isspace(info->subject[i]))
--i;
if (!i) /* Oops, zero spaces. Reset i */
i = ctx.cfg.max_msg_len - strlen(wrap_symbol);
/* add remainder starting at i to msgbuf */
strbuf_add(&msgbuf, info->subject + i, subject_len - i);
strbuf_trim(&msgbuf);
strbuf_add(&msgbuf, "\n\n", 2);
/* Place wrap_symbol at position i in info->subject */
strcpy(info->subject + i, wrap_symbol);
}
}
cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
show_commit_decorations(commit);
html("</td><td>");
html_txt(info->author);
if (revs->graph) {
html("</td><td>");
- tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
- tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
- html_link_open(tmp, NULL, NULL);
cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
- html_link_close();
}
if (ctx.repo->enable_log_filecount) {
files = 0;
add_lines = 0;
rem_lines = 0;
cgit_diff_commit(commit, inspect_files, ctx.qry.vpath);
html("</td><td>");
htmlf("%d", files);
if (ctx.repo->enable_log_linecount) {
html("</td><td>");
htmlf("-%d/+%d", rem_lines, add_lines);
}
}
html("</td></tr>\n");
if (revs->graph || ctx.qry.showmsg) { /* Print a second table row */
html("<tr class='nohover'>");
if (ctx.qry.showmsg) {
/* Concatenate commit message + notes in msgbuf */
if (info->msg && *(info->msg)) {
strbuf_addstr(&msgbuf, info->msg);
strbuf_addch(&msgbuf, '\n');
}
format_note(NULL, commit->object.sha1, &msgbuf,
PAGE_ENCODING,
NOTES_SHOW_HEADER | NOTES_INDENT);
strbuf_addch(&msgbuf, '\n');
strbuf_ltrim(&msgbuf);
}
if (revs->graph) {
int lines = 0;
/* Calculate graph padding */
if (ctx.qry.showmsg) {
/* Count #lines in commit message + notes */
const char *p = msgbuf.buf;
lines = 1;
while ((p = strchr(p, '\n'))) {
p++;
lines++;
}
}
/* Print graph padding */
html("<td class='commitgraph'>");