about summary refs log tree commit diff
path: root/shared.c
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2010-07-18 15:03:30 +0200
committerLars Hjemli <hjemli@gmail.com>2010-07-18 15:03:30 +0200
commit6821d8ea4a64d15b8f284d1af01ab184ef1e76c3 (patch)
treee9d2ea0555f801653cc9caa382e33afc7c5d804d /shared.c
parentMerge branch 'lh/macros' (diff)
parentui-diff: Add link to ignore/show whitespace changes in diffs (diff)
downloadcgit-pink-6821d8ea4a64d15b8f284d1af01ab184ef1e76c3.tar.gz
cgit-pink-6821d8ea4a64d15b8f284d1af01ab184ef1e76c3.zip
Merge branch 'jh/ignorews'
Diffstat (limited to '')
-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
@@ -264,7 +264,7 @@ int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
 int cgit_diff_files(const unsigned char *old_sha1,
 		    const unsigned char *new_sha1, unsigned long *old_size,
 		    unsigned long *new_size, int *binary, int context,
-		    linediff_fn fn)
+		    int ignorews, linediff_fn fn)
 {
 	mmfile_t file1, file2;
 	xpparam_t diff_params;
@@ -291,6 +291,8 @@ int cgit_diff_files(const unsigned char *old_sha1,
 	memset(&emit_params, 0, sizeof(emit_params));
 	memset(&emit_cb, 0, sizeof(emit_cb));
 	diff_params.flags = XDF_NEED_MINIMAL;
+	if (ignorews)
+		diff_params.flags |= XDF_IGNORE_WHITESPACE;
 	emit_params.ctxlen = context > 0 ? context : 3;
 	emit_params.flags = XDL_EMIT_FUNCNAMES;
 	emit_cb.outf = filediff_cb;
@@ -305,7 +307,7 @@ int cgit_diff_files(const unsigned char *old_sha1,
 
 void cgit_diff_tree(const unsigned char *old_sha1,
 		    const unsigned char *new_sha1,
-		    filepair_fn fn, const char *prefix)
+		    filepair_fn fn, const char *prefix, int ignorews)
 {
 	struct diff_options opt;
 	int ret;
@@ -316,6 +318,8 @@ void cgit_diff_tree(const unsigned char *old_sha1,
 	opt.detect_rename = 1;
 	opt.rename_limit = ctx.cfg.renamelimit;
 	DIFF_OPT_SET(&opt, RECURSIVE);
+	if (ignorews)
+		DIFF_XDL_SET(&opt, IGNORE_WHITESPACE);
 	opt.format_callback = cgit_diff_tree_cb;
 	opt.format_callback_data = fn;
 	if (prefix) {
@@ -340,7 +344,8 @@ void cgit_diff_commit(struct commit *commit, filepair_fn fn)
 
 	if (commit->parents)
 		old_sha1 = commit->parents->item->object.sha1;
-	cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL);
+	cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL,
+		       ctx.qry.ignorews);
 }
 
 int cgit_parse_snapshots_mask(const char *str)