summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c2
-rw-r--r--cgit.h6
-rw-r--r--shared.c11
-rw-r--r--ui-diff.c11
-rw-r--r--ui-log.c3
-rw-r--r--ui-patch.c4
6 files changed, 25 insertions, 12 deletions
diff --git a/cgit.c b/cgit.c
index e9bafb5..9452884 100644
--- a/cgit.c
+++ b/cgit.c
@@ -253,4 +253,6 @@ static void querystring_cb(const char *name, const char *value)
} else if (!strcmp(name, "context")) {
ctx.qry.context = atoi(value);
+ } else if (!strcmp(name, "ignorews")) {
+ ctx.qry.ignorews = atoi(value);
}
}
diff --git a/cgit.h b/cgit.h
index bb8f598..1bdfbc6 100644
--- a/cgit.h
+++ b/cgit.h
@@ -147,4 +147,5 @@ struct cgit_query {
int ssdiff;
int context;
+ int ignorews;
char *vpath;
};
@@ -276,9 +277,10 @@ extern 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 *binary, int context, int ignorews,
+ linediff_fn fn);
extern 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);
extern void cgit_diff_commit(struct commit *commit, filepair_fn fn);
diff --git a/shared.c b/shared.c
index 7cf1e59..d0973ab 100644
--- a/shared.c
+++ b/shared.c
@@ -264,5 +264,5 @@ 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;
@@ -287,4 +287,6 @@ int cgit_diff_files(const unsigned char *old_sha1,
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;
@@ -297,5 +299,5 @@ 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;
@@ -308,4 +310,6 @@ void cgit_diff_tree(const unsigned char *old_sha1,
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;
@@ -332,5 +336,6 @@ 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);
}
diff --git a/ui-diff.c b/ui-diff.c
index e0a72f7..1656b77 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -128,5 +128,5 @@ static void inspect_filepair(struct diff_filepair *pair)
lines_removed = 0;
cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size,
- &binary, 0, count_diff_lines);
+ &binary, 0, ctx.qry.ignorews, count_diff_lines);
if (files >= slots) {
if (slots == 0)
@@ -175,5 +175,6 @@ void cgit_print_diffstat(const unsigned char *old_sha1,
html("<table summary='diffstat' class='diffstat'>");
max_changes = 0;
- cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix);
+ cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix,
+ ctx.qry.ignorews);
for(i = 0; i<files; i++)
print_fileinfo(&items[i]);
@@ -297,5 +298,6 @@ static void filepair_cb(struct diff_filepair *pair)
}
if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
- &new_size, &binary, ctx.qry.context, print_line_fn))
+ &new_size, &binary, ctx.qry.context,
+ ctx.qry.ignorews, print_line_fn))
cgit_print_error("Error running diff");
if (binary) {
@@ -357,5 +359,6 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi
html("<tr><td>");
}
- cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix);
+ cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix,
+ ctx.qry.ignorews);
if (!use_ssdiff)
html("</td></tr>");
diff --git a/ui-log.c b/ui-log.c
index 5eb5c81..354ee08 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -34,5 +34,6 @@ 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, count_lines);
+ &new_size, &binary, 0, ctx.qry.ignorews,
+ count_lines);
}
diff --git a/ui-patch.c b/ui-patch.c
index d13104c..ca008f3 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -72,5 +72,5 @@ static void filepair_cb(struct diff_filepair *pair)
}
if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
- &new_size, &binary, 0, print_line))
+ &new_size, &binary, 0, 0, print_line))
html("Error running diff");
if (binary)
@@ -125,5 +125,5 @@ void cgit_print_patch(char *hex, const char *prefix)
if (prefix)
htmlf("(limited to '%s')\n\n", prefix);
- cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix);
+ cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix, 0);
html("--\n");
htmlf("cgit %s\n", CGIT_VERSION);