diff options
| -rw-r--r-- | ui-repolist.c | 38 |
1 files 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) | |||
| 184 | return 0; | 184 | return 0; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | static int sort_section(const void *a, const void *b) | ||
| 188 | { | ||
| 189 | const struct cgit_repo *r1 = a; | ||
| 190 | const struct cgit_repo *r2 = b; | ||
| 191 | int result; | ||
| 192 | time_t t; | ||
| 193 | |||
| 194 | result = cmp(r1->section, r2->section); | ||
| 195 | if (!result) { | ||
| 196 | if (!strcmp(ctx.cfg.repository_sort, "age")) { | ||
| 197 | // get_repo_modtime caches the value in r->mtime, so we don't | ||
| 198 | // have to worry about inefficiencies here. | ||
| 199 | if (get_repo_modtime(r1, &t) && get_repo_modtime(r2, &t)) | ||
| 200 | result = r2->mtime - r1->mtime; | ||
| 201 | } | ||
| 202 | if (!result) | ||
| 203 | result = cmp(r1->name, r2->name); | ||
| 204 | } | ||
| 205 | return result; | ||
| 206 | } | ||
| 207 | |||
| 208 | static int sort_name(const void *a, const void *b) | 187 | static int sort_name(const void *a, const void *b) |
| 209 | { | 188 | { |
| 210 | const struct cgit_repo *r1 = a; | 189 | const struct cgit_repo *r1 = a; |
| @@ -241,6 +220,23 @@ static int sort_idle(const void *a, const void *b) | |||
| 241 | return t2 - t1; | 220 | return t2 - t1; |
| 242 | } | 221 | } |
| 243 | 222 | ||
| 223 | static int sort_section(const void *a, const void *b) | ||
| 224 | { | ||
| 225 | const struct cgit_repo *r1 = a; | ||
| 226 | const struct cgit_repo *r2 = b; | ||
| 227 | int result; | ||
| 228 | time_t t; | ||
| 229 | |||
| 230 | result = cmp(r1->section, r2->section); | ||
| 231 | if (!result) { | ||
| 232 | if (!strcmp(ctx.cfg.repository_sort, "age")) | ||
| 233 | result = sort_idle(r1, r2); | ||
| 234 | if (!result) | ||
| 235 | result = cmp(r1->name, r2->name); | ||
| 236 | } | ||
| 237 | return result; | ||
| 238 | } | ||
| 239 | |||
| 244 | struct sortcolumn { | 240 | struct sortcolumn { |
| 245 | const char *name; | 241 | const char *name; |
| 246 | int (*fn)(const void *a, const void *b); | 242 | int (*fn)(const void *a, const void *b); |
