summaryrefslogtreecommitdiffstats
path: root/development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch
diff options
context:
space:
mode:
author Robby Workman <rworkman@slackbuilds.org>2017-08-24 19:22:28 -0500
committer Willy Sudiarto Raharjo <willysr@slackbuilds.org>2017-08-26 07:20:38 +0700
commit4174da45a36fdf2f65914f22865dcc48433554c2 (patch)
tree14e161231bc5a8675857dbd5e124af8cc5864659 /development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch
parentdf75f0401ee693208abfaf397f480ae1f61862d1 (diff)
downloadslackbuilds-4174da45a36fdf2f65914f22865dcc48433554c2.tar.gz
slackbuilds-4174da45a36fdf2f65914f22865dcc48433554c2.tar.xz
development/cgit: Include some upstream git patches
Some general bugfixes, but more importantly, patch 0005 fixes a segfault in git's pathspec.c that we were seeing on the SBo git server. Thanks to John Keeping (cgit contributor) for helping with debug suggestions and identifying the specific commit we needed to fix it. Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
Diffstat (limited to 'development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch')
-rw-r--r--development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch b/development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch
new file mode 100644
index 0000000000..e48d97f2db
--- /dev/null
+++ b/development/cgit/patches/0006-ui-repolist-properly-sort-by-age.patch
@@ -0,0 +1,78 @@
+From 87c47488d02fcace4da0d468cd9ddd1651b7949e Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <Jason@zx2c4.com>
+Date: Thu, 30 Mar 2017 13:19:50 +0200
+Subject: [PATCH 06/15] ui-repolist: properly sort by age
+
+When empty repos exist, comparing them against an existing repo with a
+good mtime might, with particular qsort implementations, not sort
+correctly, because of this brokenness:
+
+ if (get_repo_modtime(r1, &t) && get_repo_modtime(r2, &t))
+
+However, sorting by the age column works as expected, so anyway, to tidy
+things up, we simply reuse that function.
+
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+---
+ ui-repolist.c | 38 +++++++++++++++++---------------------
+ 1 file changed, 17 insertions(+), 21 deletions(-)
+
+diff --git a/ui-repolist.c b/ui-repolist.c
+index b57ea60..20a4f56 100644
+--- a/ui-repolist.c
++++ b/ui-repolist.c
+@@ -184,27 +184,6 @@ static int cmp(const char *s1, const char *s2)
+ return 0;
+ }
+
+-static int sort_section(const void *a, const void *b)
+-{
+- const struct cgit_repo *r1 = a;
+- const struct cgit_repo *r2 = b;
+- int result;
+- time_t t;
+-
+- result = cmp(r1->section, r2->section);
+- if (!result) {
+- if (!strcmp(ctx.cfg.repository_sort, "age")) {
+- // get_repo_modtime caches the value in r->mtime, so we don't
+- // have to worry about inefficiencies here.
+- if (get_repo_modtime(r1, &t) && get_repo_modtime(r2, &t))
+- result = r2->mtime - r1->mtime;
+- }
+- if (!result)
+- result = cmp(r1->name, r2->name);
+- }
+- return result;
+-}
+-
+ static int sort_name(const void *a, const void *b)
+ {
+ const struct cgit_repo *r1 = a;
+@@ -241,6 +220,23 @@ static int sort_idle(const void *a, const void *b)
+ return t2 - t1;
+ }
+
++static int sort_section(const void *a, const void *b)
++{
++ const struct cgit_repo *r1 = a;
++ const struct cgit_repo *r2 = b;
++ int result;
++ time_t t;
++
++ result = cmp(r1->section, r2->section);
++ if (!result) {
++ if (!strcmp(ctx.cfg.repository_sort, "age"))
++ result = sort_idle(r1, r2);
++ if (!result)
++ result = cmp(r1->name, r2->name);
++ }
++ return result;
++}
++
+ struct sortcolumn {
+ const char *name;
+ int (*fn)(const void *a, const void *b);
+--
+2.14.1
+