summaryrefslogtreecommitdiffabout
path: root/shared.c
authorLars Hjemli <hjemli@gmail.com>2010-07-18 13:03:30 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-07-18 13:03:30 (UTC)
commit6821d8ea4a64d15b8f284d1af01ab184ef1e76c3 (patch) (unidiff)
treee9d2ea0555f801653cc9caa382e33afc7c5d804d /shared.c
parent5c5d189635287a3bfaa1a4aef133dc0c582a27c2 (diff)
parent72ef913514288bd2aae23509581097bfd3edf8c4 (diff)
downloadcgit-6821d8ea4a64d15b8f284d1af01ab184ef1e76c3.zip
cgit-6821d8ea4a64d15b8f284d1af01ab184ef1e76c3.tar.gz
cgit-6821d8ea4a64d15b8f284d1af01ab184ef1e76c3.tar.bz2
Merge branch 'jh/ignorews'
Diffstat (limited to 'shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--shared.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/shared.c b/shared.c
index 9f7d6a5..b42c2a2 100644
--- a/shared.c
+++ b/shared.c
@@ -261,13 +261,13 @@ int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
261 return 0; 261 return 0;
262} 262}
263 263
264int cgit_diff_files(const unsigned char *old_sha1, 264int cgit_diff_files(const unsigned char *old_sha1,
265 const unsigned char *new_sha1, unsigned long *old_size, 265 const unsigned char *new_sha1, unsigned long *old_size,
266 unsigned long *new_size, int *binary, int context, 266 unsigned long *new_size, int *binary, int context,
267 linediff_fn fn) 267 int ignorews, linediff_fn fn)
268{ 268{
269 mmfile_t file1, file2; 269 mmfile_t file1, file2;
270 xpparam_t diff_params; 270 xpparam_t diff_params;
271 xdemitconf_t emit_params; 271 xdemitconf_t emit_params;
272 xdemitcb_t emit_cb; 272 xdemitcb_t emit_cb;
273 273
@@ -288,12 +288,14 @@ int cgit_diff_files(const unsigned char *old_sha1,
288 } 288 }
289 289
290 memset(&diff_params, 0, sizeof(diff_params)); 290 memset(&diff_params, 0, sizeof(diff_params));
291 memset(&emit_params, 0, sizeof(emit_params)); 291 memset(&emit_params, 0, sizeof(emit_params));
292 memset(&emit_cb, 0, sizeof(emit_cb)); 292 memset(&emit_cb, 0, sizeof(emit_cb));
293 diff_params.flags = XDF_NEED_MINIMAL; 293 diff_params.flags = XDF_NEED_MINIMAL;
294 if (ignorews)
295 diff_params.flags |= XDF_IGNORE_WHITESPACE;
294 emit_params.ctxlen = context > 0 ? context : 3; 296 emit_params.ctxlen = context > 0 ? context : 3;
295 emit_params.flags = XDL_EMIT_FUNCNAMES; 297 emit_params.flags = XDL_EMIT_FUNCNAMES;
296 emit_cb.outf = filediff_cb; 298 emit_cb.outf = filediff_cb;
297 emit_cb.priv = fn; 299 emit_cb.priv = fn;
298 xdl_diff(&file1, &file2, &diff_params, &emit_params, &emit_cb); 300 xdl_diff(&file1, &file2, &diff_params, &emit_params, &emit_cb);
299 if (file1.size) 301 if (file1.size)
@@ -302,23 +304,25 @@ int cgit_diff_files(const unsigned char *old_sha1,
302 free(file2.ptr); 304 free(file2.ptr);
303 return 0; 305 return 0;
304} 306}
305 307
306void cgit_diff_tree(const unsigned char *old_sha1, 308void cgit_diff_tree(const unsigned char *old_sha1,
307 const unsigned char *new_sha1, 309 const unsigned char *new_sha1,
308 filepair_fn fn, const char *prefix) 310 filepair_fn fn, const char *prefix, int ignorews)
309{ 311{
310 struct diff_options opt; 312 struct diff_options opt;
311 int ret; 313 int ret;
312 int prefixlen; 314 int prefixlen;
313 315
314 diff_setup(&opt); 316 diff_setup(&opt);
315 opt.output_format = DIFF_FORMAT_CALLBACK; 317 opt.output_format = DIFF_FORMAT_CALLBACK;
316 opt.detect_rename = 1; 318 opt.detect_rename = 1;
317 opt.rename_limit = ctx.cfg.renamelimit; 319 opt.rename_limit = ctx.cfg.renamelimit;
318 DIFF_OPT_SET(&opt, RECURSIVE); 320 DIFF_OPT_SET(&opt, RECURSIVE);
321 if (ignorews)
322 DIFF_XDL_SET(&opt, IGNORE_WHITESPACE);
319 opt.format_callback = cgit_diff_tree_cb; 323 opt.format_callback = cgit_diff_tree_cb;
320 opt.format_callback_data = fn; 324 opt.format_callback_data = fn;
321 if (prefix) { 325 if (prefix) {
322 opt.nr_paths = 1; 326 opt.nr_paths = 1;
323 opt.paths = &prefix; 327 opt.paths = &prefix;
324 prefixlen = strlen(prefix); 328 prefixlen = strlen(prefix);
@@ -337,13 +341,14 @@ void cgit_diff_tree(const unsigned char *old_sha1,
337void cgit_diff_commit(struct commit *commit, filepair_fn fn) 341void cgit_diff_commit(struct commit *commit, filepair_fn fn)
338{ 342{
339 unsigned char *old_sha1 = NULL; 343 unsigned char *old_sha1 = NULL;
340 344
341 if (commit->parents) 345 if (commit->parents)
342 old_sha1 = commit->parents->item->object.sha1; 346 old_sha1 = commit->parents->item->object.sha1;
343 cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL); 347 cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL,
348 ctx.qry.ignorews);
344} 349}
345 350
346int cgit_parse_snapshots_mask(const char *str) 351int cgit_parse_snapshots_mask(const char *str)
347{ 352{
348 const struct cgit_snapshot_format *f; 353 const struct cgit_snapshot_format *f;
349 static const char *delim = " \t,:/|;"; 354 static const char *delim = " \t,:/|;";