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) (unidiff)
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) (show 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
@@ -5,21 +5,21 @@
5prepare_tests "Check content on log page" 5prepare_tests "Check content on log page"
6 6
7run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp' 7run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp'
8run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' 8run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
9run_test 'find commit 5' 'grep -e "commit 5" trash/tmp' 9run_test 'find commit 5' 'grep -e "commit 5" trash/tmp'
10 10
11run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp' 11run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp'
12run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' 12run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
13run_test 'find commit 50' 'grep -e "commit 50" trash/tmp' 13run_test 'find commit 50' 'grep -e "commit 50" trash/tmp'
14 14
15run_test 'generate "with%20space/log?qt=grep&q=commit+1"' ' 15run_test 'generate "with%20space/log?qt=grep&q=commit+1"' '
16 cgit_url "with+space/log&qt=grep&q=commit+1" >trash/tmp 16 cgit_url "with+space/log&qt=grep&q=commit+1" >trash/tmp
17' 17'
18run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' 18run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
19run_test 'find link with %20 in path' 'grep -e "/with%20space/log/?qt=grep" trash/tmp' 19run_test 'find link with %20 in path' 'grep -e "/with%20space/log/?qt=grep" trash/tmp'
20run_test 'find link with + in arg' 'grep -e "/log/?qt=grep&q=commit+1" trash/tmp' 20run_test 'find link with + in arg' 'grep -e "/log/?qt=grep&q=commit+1" trash/tmp'
21run_test BUG 'no links with space in path' '! grep -e "href=./with space/" trash/tmp' 21run_test 'no links with space in path' '! grep -e "href=./with space/" trash/tmp'
22run_test 'no links with space in arg' '! grep -e "q=commit 1" trash/tmp' 22run_test 'no links with space in arg' '! grep -e "q=commit 1" trash/tmp'
23run_test 'commit 2 is not visible' '! grep -e "commit 2" trash/tmp' 23run_test 'commit 2 is not visible' '! grep -e "commit 2" trash/tmp'
24 24
25tests_done 25tests_done
diff --git a/ui-log.c b/ui-log.c
index 8add66a..15ed6a3 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -82,33 +82,32 @@ void show_commit_decorations(struct commit *commit)
82 ctx.qry.vpath, 0, NULL, NULL, 82 ctx.qry.vpath, 0, NULL, NULL,
83 ctx.qry.showmsg); 83 ctx.qry.showmsg);
84 } 84 }
85 else { 85 else {
86 strncpy(buf, deco->name, sizeof(buf) - 1); 86 strncpy(buf, deco->name, sizeof(buf) - 1);
87 cgit_commit_link(buf, NULL, "deco", ctx.qry.head, 87 cgit_commit_link(buf, NULL, "deco", ctx.qry.head,
88 sha1_to_hex(commit->object.sha1), 88 sha1_to_hex(commit->object.sha1),
89 ctx.qry.vpath, 0); 89 ctx.qry.vpath, 0);
90 } 90 }
91 deco = deco->next; 91 deco = deco->next;
92 } 92 }
93} 93}
94 94
95void print_commit(struct commit *commit, struct rev_info *revs) 95void print_commit(struct commit *commit, struct rev_info *revs)
96{ 96{
97 struct commitinfo *info; 97 struct commitinfo *info;
98 char *tmp;
99 int cols = revs->graph ? 3 : 2; 98 int cols = revs->graph ? 3 : 2;
100 struct strbuf graphbuf = STRBUF_INIT; 99 struct strbuf graphbuf = STRBUF_INIT;
101 struct strbuf msgbuf = STRBUF_INIT; 100 struct strbuf msgbuf = STRBUF_INIT;
102 101
103 if (ctx.repo->enable_log_filecount) { 102 if (ctx.repo->enable_log_filecount) {
104 cols++; 103 cols++;
105 if (ctx.repo->enable_log_linecount) 104 if (ctx.repo->enable_log_linecount)
106 cols++; 105 cols++;
107 } 106 }
108 107
109 if (revs->graph) { 108 if (revs->graph) {
110 /* Advance graph until current commit */ 109 /* Advance graph until current commit */
111 while (!graph_next_line(revs->graph, &graphbuf)) { 110 while (!graph_next_line(revs->graph, &graphbuf)) {
112 /* Print graph segment in otherwise empty table row */ 111 /* Print graph segment in otherwise empty table row */
113 html("<tr class='nohover'><td class='commitgraph'>"); 112 html("<tr class='nohover'><td class='commitgraph'>");
114 html(graphbuf.buf); 113 html(graphbuf.buf);
@@ -117,37 +116,33 @@ void print_commit(struct commit *commit, struct rev_info *revs)
117 } 116 }
118 /* Current commit's graph segment is now ready in graphbuf */ 117 /* Current commit's graph segment is now ready in graphbuf */
119 } 118 }
120 119
121 info = cgit_parse_commit(commit); 120 info = cgit_parse_commit(commit);
122 htmlf("<tr%s>", ctx.qry.showmsg ? " class='logheader'" : ""); 121 htmlf("<tr%s>", ctx.qry.showmsg ? " class='logheader'" : "");
123 122
124 if (revs->graph) { 123 if (revs->graph) {
125 /* Print graph segment for current commit */ 124 /* Print graph segment for current commit */
126 html("<td class='commitgraph'>"); 125 html("<td class='commitgraph'>");
127 html(graphbuf.buf); 126 html(graphbuf.buf);
128 html("</td>"); 127 html("</td>");
129 strbuf_setlen(&graphbuf, 0); 128 strbuf_setlen(&graphbuf, 0);
130 } 129 }
131 else { 130 else {
132 html("<td>"); 131 html("<td>");
133 tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
134 tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
135 html_link_open(tmp, NULL, NULL);
136 cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE); 132 cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
137 html_link_close();
138 html("</td>"); 133 html("</td>");
139 } 134 }
140 135
141 htmlf("<td%s>", ctx.qry.showmsg ? " class='logsubject'" : ""); 136 htmlf("<td%s>", ctx.qry.showmsg ? " class='logsubject'" : "");
142 if (ctx.qry.showmsg) { 137 if (ctx.qry.showmsg) {
143 /* line-wrap long commit subjects instead of truncating them */ 138 /* line-wrap long commit subjects instead of truncating them */
144 size_t subject_len = strlen(info->subject); 139 size_t subject_len = strlen(info->subject);
145 140
146 if (subject_len > ctx.cfg.max_msg_len && 141 if (subject_len > ctx.cfg.max_msg_len &&
147 ctx.cfg.max_msg_len >= 15) { 142 ctx.cfg.max_msg_len >= 15) {
148 /* symbol for signaling line-wrap (in PAGE_ENCODING) */ 143 /* symbol for signaling line-wrap (in PAGE_ENCODING) */
149 const char wrap_symbol[] = { ' ', 0xE2, 0x86, 0xB5, 0 }; 144 const char wrap_symbol[] = { ' ', 0xE2, 0x86, 0xB5, 0 };
150 int i = ctx.cfg.max_msg_len - strlen(wrap_symbol); 145 int i = ctx.cfg.max_msg_len - strlen(wrap_symbol);
151 146
152 /* Rewind i to preceding space character */ 147 /* Rewind i to preceding space character */
153 while (i > 0 && !isspace(info->subject[i])) 148 while (i > 0 && !isspace(info->subject[i]))
@@ -159,37 +154,33 @@ void print_commit(struct commit *commit, struct rev_info *revs)
159 strbuf_add(&msgbuf, info->subject + i, subject_len - i); 154 strbuf_add(&msgbuf, info->subject + i, subject_len - i);
160 strbuf_trim(&msgbuf); 155 strbuf_trim(&msgbuf);
161 strbuf_add(&msgbuf, "\n\n", 2); 156 strbuf_add(&msgbuf, "\n\n", 2);
162 157
163 /* Place wrap_symbol at position i in info->subject */ 158 /* Place wrap_symbol at position i in info->subject */
164 strcpy(info->subject + i, wrap_symbol); 159 strcpy(info->subject + i, wrap_symbol);
165 } 160 }
166 } 161 }
167 cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head, 162 cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
168 sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0); 163 sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
169 show_commit_decorations(commit); 164 show_commit_decorations(commit);
170 html("</td><td>"); 165 html("</td><td>");
171 html_txt(info->author); 166 html_txt(info->author);
172 167
173 if (revs->graph) { 168 if (revs->graph) {
174 html("</td><td>"); 169 html("</td><td>");
175 tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
176 tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
177 html_link_open(tmp, NULL, NULL);
178 cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE); 170 cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
179 html_link_close();
180 } 171 }
181 172
182 if (ctx.repo->enable_log_filecount) { 173 if (ctx.repo->enable_log_filecount) {
183 files = 0; 174 files = 0;
184 add_lines = 0; 175 add_lines = 0;
185 rem_lines = 0; 176 rem_lines = 0;
186 cgit_diff_commit(commit, inspect_files, ctx.qry.vpath); 177 cgit_diff_commit(commit, inspect_files, ctx.qry.vpath);
187 html("</td><td>"); 178 html("</td><td>");
188 htmlf("%d", files); 179 htmlf("%d", files);
189 if (ctx.repo->enable_log_linecount) { 180 if (ctx.repo->enable_log_linecount) {
190 html("</td><td>"); 181 html("</td><td>");
191 htmlf("-%d/+%d", rem_lines, add_lines); 182 htmlf("-%d/+%d", rem_lines, add_lines);
192 } 183 }
193 } 184 }
194 html("</td></tr>\n"); 185 html("</td></tr>\n");
195 186