summaryrefslogtreecommitdiffabout
path: root/ui-diff.c
authorJohan Herland <johan@herland.net>2010-06-10 18:15:27 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-06-19 11:00:07 (UTC)
commit6180e6169d6e87a3bea7e4da835dca17f93e5cfd (patch) (unidiff)
tree7caa053b419c75081179cc4a6056ce6533d01d99 /ui-diff.c
parenta2cbd3c30b64a26b52b2003ba6569f3c083f4092 (diff)
downloadcgit-6180e6169d6e87a3bea7e4da835dca17f93e5cfd.zip
cgit-6180e6169d6e87a3bea7e4da835dca17f93e5cfd.tar.gz
cgit-6180e6169d6e87a3bea7e4da835dca17f93e5cfd.tar.bz2
Add URL parameter 'context' for changing the number of context lines in diffs
The new ctx.qry.context variable is picked up by cgit_print_diff(), and passed via cgit_diff_files() to Git's diff machinery. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-diff.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-diff.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ui-diff.c b/ui-diff.c
index fb836df..d3a3b2c 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -118,25 +118,25 @@ static void count_diff_lines(char *line, int len)
118 } 118 }
119} 119}
120 120
121static void inspect_filepair(struct diff_filepair *pair) 121static void inspect_filepair(struct diff_filepair *pair)
122{ 122{
123 int binary = 0; 123 int binary = 0;
124 unsigned long old_size = 0; 124 unsigned long old_size = 0;
125 unsigned long new_size = 0; 125 unsigned long new_size = 0;
126 files++; 126 files++;
127 lines_added = 0; 127 lines_added = 0;
128 lines_removed = 0; 128 lines_removed = 0;
129 cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size, 129 cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size,
130 &binary, count_diff_lines); 130 &binary, 0, count_diff_lines);
131 if (files >= slots) { 131 if (files >= slots) {
132 if (slots == 0) 132 if (slots == 0)
133 slots = 4; 133 slots = 4;
134 else 134 else
135 slots = slots * 2; 135 slots = slots * 2;
136 items = xrealloc(items, slots * sizeof(struct fileinfo)); 136 items = xrealloc(items, slots * sizeof(struct fileinfo));
137 } 137 }
138 items[files-1].status = pair->status; 138 items[files-1].status = pair->status;
139 hashcpy(items[files-1].old_sha1, pair->one->sha1); 139 hashcpy(items[files-1].old_sha1, pair->one->sha1);
140 hashcpy(items[files-1].new_sha1, pair->two->sha1); 140 hashcpy(items[files-1].new_sha1, pair->two->sha1);
141 items[files-1].old_mode = pair->one->mode; 141 items[files-1].old_mode = pair->one->mode;
142 items[files-1].new_mode = pair->two->mode; 142 items[files-1].new_mode = pair->two->mode;
@@ -279,25 +279,25 @@ static void filepair_cb(struct diff_filepair *pair)
279 if (use_ssdiff) 279 if (use_ssdiff)
280 cgit_ssdiff_header_end(); 280 cgit_ssdiff_header_end();
281 if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) { 281 if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) {
282 if (S_ISGITLINK(pair->one->mode)) 282 if (S_ISGITLINK(pair->one->mode))
283 print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); 283 print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52);
284 if (S_ISGITLINK(pair->two->mode)) 284 if (S_ISGITLINK(pair->two->mode))
285 print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); 285 print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52);
286 if (use_ssdiff) 286 if (use_ssdiff)
287 cgit_ssdiff_footer(); 287 cgit_ssdiff_footer();
288 return; 288 return;
289 } 289 }
290 if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, 290 if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
291 &new_size, &binary, print_line_fn)) 291 &new_size, &binary, ctx.qry.context, print_line_fn))
292 cgit_print_error("Error running diff"); 292 cgit_print_error("Error running diff");
293 if (binary) { 293 if (binary) {
294 if (use_ssdiff) 294 if (use_ssdiff)
295 html("<tr><td colspan='4'>Binary files differ</td></tr>"); 295 html("<tr><td colspan='4'>Binary files differ</td></tr>");
296 else 296 else
297 html("Binary files differ"); 297 html("Binary files differ");
298 } 298 }
299 if (use_ssdiff) 299 if (use_ssdiff)
300 cgit_ssdiff_footer(); 300 cgit_ssdiff_footer();
301} 301}
302 302
303void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefix) 303void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefix)