diff --git a/cgit.c b/cgit.c index 8c4517d..db60107 100644 --- a/cgit.c +++ b/cgit.c @@ -237,7 +237,7 @@ static void config_cb(const char *name, const char *value) else if (!strcmp(name, "summary-tags")) ctx.cfg.summary_tags = atoi(value); else if (!strcmp(name, "side-by-side-diffs")) - ctx.cfg.ssdiff = atoi(value); + ctx.cfg.difftype = atoi(value) ? DIFF_SSDIFF : DIFF_UNIFIED; else if (!strcmp(name, "agefile")) ctx.cfg.agefile = xstrdup(value); else if (!strcmp(name, "mimetype-file")) @@ -312,9 +312,13 @@ static void querystring_cb(const char *name, const char *value) ctx.qry.showmsg = atoi(value); } else if (!strcmp(name, "period")) { ctx.qry.period = xstrdup(value); + } else if (!strcmp(name, "dt")) { + ctx.qry.difftype = atoi(value); + ctx.qry.has_difftype = 1; } else if (!strcmp(name, "ss")) { - ctx.qry.ssdiff = atoi(value); - ctx.qry.has_ssdiff = 1; + /* No longer generated, but there may be links out there. */ + ctx.qry.difftype = atoi(value) ? DIFF_SSDIFF : DIFF_UNIFIED; + ctx.qry.has_difftype = 1; } else if (!strcmp(name, "all")) { ctx.qry.show_all = atoi(value); } else if (!strcmp(name, "context")) { @@ -372,7 +376,7 @@ static void prepare_context(void) ctx.cfg.summary_log = 10; ctx.cfg.summary_tags = 10; ctx.cfg.max_atom_items = 10; - ctx.cfg.ssdiff = 0; + ctx.cfg.difftype = DIFF_UNIFIED; ctx.env.cgit_config = getenv("CGIT_CONFIG"); ctx.env.http_host = getenv("HTTP_HOST"); ctx.env.https = getenv("HTTPS"); diff --git a/cgit.h b/cgit.h index 0badc64..0eb5ed5 100644 --- a/cgit.h +++ b/cgit.h @@ -52,6 +52,10 @@ typedef void (*configfn)(const char *name, const char *value); typedef void (*filepair_fn)(struct diff_filepair *pair); typedef void (*linediff_fn)(char *line, int len); +typedef enum { + DIFF_UNIFIED, DIFF_SSDIFF +} diff_type; + typedef enum { ABOUT, COMMIT, SOURCE, EMAIL, AUTH } filter_type; @@ -150,7 +154,7 @@ struct reflist { struct cgit_query { int has_symref; int has_sha1; - int has_ssdiff; + int has_difftype; char *raw; char *repo; char *page; @@ -168,7 +172,7 @@ struct cgit_query { int nohead; char *sort; int showmsg; - int ssdiff; + diff_type difftype; int show_all; int context; int ignorews; @@ -245,7 +249,7 @@ struct cgit_config { int summary_branches; int summary_log; int summary_tags; - int ssdiff; + diff_type difftype; int branch_sort; int commit_sort; struct string_list mimetypes; diff --git a/ui-diff.c b/ui-diff.c index 49bd748..a4ade4d 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -345,8 +345,8 @@ void cgit_print_diff_ctrls() html(""); html("mode:"); html(""); - html(""); + curr = ctx.qry.has_difftype ? ctx.qry.difftype : ctx.cfg.difftype; html_intoption(0, "unified", curr); html_intoption(1, "ssdiff", curr); html(""); @@ -362,6 +362,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, { struct commit *commit, *commit2; const unsigned char *old_tree_sha1, *new_tree_sha1; + diff_type difftype; if (!new_rev) new_rev = ctx.qry.head; @@ -420,7 +421,8 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, return; } - use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff; + difftype = ctx.qry.has_difftype ? ctx.qry.difftype : ctx.cfg.difftype; + use_ssdiff = difftype == DIFF_SSDIFF; if (show_ctrls) cgit_print_diff_ctrls(); diff --git a/ui-shared.c b/ui-shared.c index 68e0d7c..6243d1b 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -346,9 +346,9 @@ void cgit_commit_link(char *name, const char *title, const char *class, html_url_arg(rev); delim = "&"; } - if (ctx.qry.ssdiff) { + if (ctx.qry.difftype) { html(delim); - html("ss=1"); + htmlf("dt=%d", ctx.qry.difftype); delim = "&"; } if (ctx.qry.context > 0 && ctx.qry.context != 3) { @@ -402,9 +402,9 @@ void cgit_diff_link(const char *name, const char *title, const char *class, html_url_arg(old_rev); delim = "&"; } - if (ctx.qry.ssdiff) { + if (ctx.qry.difftype) { html(delim); - html("ss=1"); + htmlf("dt=%d", ctx.qry.difftype); delim = "&"; } if (ctx.qry.context > 0 && ctx.qry.context != 3) {