diff --git a/cgit.c b/cgit.c
index b7807ad..1d50129 100644
--- a/cgit.c
+++ b/cgit.c
@@ -298,6 +298,7 @@ static void querystring_cb(const char *name, const char *value)
ctx.qry.period = xstrdup(value);
} else if (!strcmp(name, "ss")) {
ctx.qry.ssdiff = atoi(value);
+ ctx.qry.has_ssdiff = 1;
} else if (!strcmp(name, "all")) {
ctx.qry.show_all = atoi(value);
} else if (!strcmp(name, "context")) {
diff --git a/cgit.h b/cgit.h
index bad66f0..c7ab5c6 100644
--- a/cgit.h
+++ b/cgit.h
@@ -137,6 +137,7 @@ struct reflist {
struct cgit_query {
int has_symref;
int has_sha1;
+ int has_ssdiff;
char *raw;
char *repo;
char *page;
diff --git a/ui-diff.c b/ui-diff.c
index d97a801..af24a6c 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -395,8 +395,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
}
}
- if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff))
- use_ssdiff = 1;
+ use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
if (show_ctrls)
cgit_print_diff_ctrls();
diff --git a/ui-log.c b/ui-log.c
index 4a295bd..6b12ca2 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -76,6 +76,8 @@ void show_commit_decorations(struct commit *commit)
cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf);
}
else if (!prefixcmp(deco->name, "refs/remotes/")) {
+ if (!ctx.repo->enable_remote_branches)
+ goto next;
strncpy(buf, deco->name + 13, sizeof(buf) - 1);
cgit_log_link(buf, NULL, "remote-deco", NULL,
sha1_to_hex(commit->object.sha1),
@@ -88,6 +90,7 @@ void show_commit_decorations(struct commit *commit)
sha1_to_hex(commit->object.sha1),
ctx.qry.vpath, 0);
}
+next:
deco = deco->next;
}
}
diff --git a/ui-repolist.c b/ui-repolist.c
index 25c36ce..a09a689 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -118,13 +118,13 @@ void print_header(int columns)
}
-void print_pager(int items, int pagelen, char *search)
+void print_pager(int items, int pagelen, char *search, char *sort)
{
int i;
html("
");
}
@@ -291,7 +291,7 @@ void cgit_print_repolist()
if (!hits)
cgit_print_error("No repositories found");
else if (hits > ctx.cfg.max_repo_count)
- print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search);
+ print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search, ctx.qry.sort);
cgit_print_docend();
}
diff --git a/ui-shared.c b/ui-shared.c
index 5aa9119..85c2096 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -133,7 +133,7 @@ char *cgit_currurl()
return fmt("%s/", ctx.cfg.virtual_root);
}
-static void site_url(const char *page, const char *search, int ofs)
+static void site_url(const char *page, const char *search, const char *sort, int ofs)
{
char *delim = "?";
@@ -154,6 +154,12 @@ static void site_url(const char *page, const char *search, int ofs)
html_attr(search);
delim = "&";
}
+ if (sort) {
+ html(delim);
+ html("s=");
+ html_attr(sort);
+ delim = "&";
+ }
if (ofs) {
html(delim);
htmlf("ofs=%d", ofs);
@@ -161,7 +167,7 @@ static void site_url(const char *page, const char *search, int ofs)
}
static void site_link(const char *page, const char *name, const char *title,
- const char *class, const char *search, int ofs)
+ const char *class, const char *search, const char *sort, int ofs)
{
html("");
html_txt(name);
html("");
}
void cgit_index_link(const char *name, const char *title, const char *class,
- const char *pattern, int ofs)
+ const char *pattern, const char *sort, int ofs)
{
- site_link(NULL, name, title, class, pattern, ofs);
+ site_link(NULL, name, title, class, pattern, sort, ofs);
}
static char *repolink(const char *title, const char *class, const char *page,
@@ -428,7 +434,7 @@ void cgit_self_link(char *name, const char *title, const char *class,
struct cgit_context *ctx)
{
if (!strcmp(ctx->qry.page, "repolist"))
- return cgit_index_link(name, title, class, ctx->qry.search,
+ return cgit_index_link(name, title, class, ctx->qry.search, ctx->qry.sort,
ctx->qry.ofs);
else if (!strcmp(ctx->qry.page, "summary"))
return cgit_summary_link(name, title, class, ctx->qry.head);
@@ -782,7 +788,7 @@ static void print_header(struct cgit_context *ctx)
html("");
if (ctx->repo) {
- cgit_index_link("index", NULL, NULL, NULL, 0);
+ cgit_index_link("index", NULL, NULL, NULL, NULL, 0);
html(" : ");
cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
html(" | ");
@@ -858,10 +864,10 @@ void cgit_print_pageheader(struct cgit_context *ctx)
html("\n");
html("\n");
} else {
- site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0);
+ site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, NULL, 0);
if (ctx->cfg.root_readme)
site_link("about", "about", NULL, hc(ctx, "about"),
- NULL, 0);
+ NULL, NULL, 0);
html(" | ");
html(" |