-rw-r--r-- | ui-repolist.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/ui-repolist.c b/ui-repolist.c index 4dea3b3..d56654d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -133,12 +133,24 @@ static int cmp(const char *s1, const char *s2) | |||
133 | return -1; | 133 | return -1; |
134 | if (s2 && !s1) | 134 | if (s2 && !s1) |
135 | return 1; | 135 | return 1; |
136 | return 0; | 136 | return 0; |
137 | } | 137 | } |
138 | 138 | ||
139 | static int sort_section(const void *a, const void *b) | ||
140 | { | ||
141 | const struct cgit_repo *r1 = a; | ||
142 | const struct cgit_repo *r2 = b; | ||
143 | int result; | ||
144 | |||
145 | result = cmp(r1->section, r2->section); | ||
146 | if (!result) | ||
147 | result = cmp(r1->name, r2->name); | ||
148 | return result; | ||
149 | } | ||
150 | |||
139 | static int sort_name(const void *a, const void *b) | 151 | static int sort_name(const void *a, const void *b) |
140 | { | 152 | { |
141 | const struct cgit_repo *r1 = a; | 153 | const struct cgit_repo *r1 = a; |
142 | const struct cgit_repo *r2 = b; | 154 | const struct cgit_repo *r2 = b; |
143 | 155 | ||
144 | return cmp(r1->name, r2->name); | 156 | return cmp(r1->name, r2->name); |
@@ -175,12 +187,13 @@ static int sort_idle(const void *a, const void *b) | |||
175 | struct sortcolumn { | 187 | struct sortcolumn { |
176 | const char *name; | 188 | const char *name; |
177 | int (*fn)(const void *a, const void *b); | 189 | int (*fn)(const void *a, const void *b); |
178 | }; | 190 | }; |
179 | 191 | ||
180 | struct sortcolumn sortcolumn[] = { | 192 | struct sortcolumn sortcolumn[] = { |
193 | {"section", sort_section}, | ||
181 | {"name", sort_name}, | 194 | {"name", sort_name}, |
182 | {"desc", sort_desc}, | 195 | {"desc", sort_desc}, |
183 | {"owner", sort_owner}, | 196 | {"owner", sort_owner}, |
184 | {"idle", sort_idle}, | 197 | {"idle", sort_idle}, |
185 | {NULL, NULL} | 198 | {NULL, NULL} |
186 | }; | 199 | }; |
@@ -216,12 +229,14 @@ void cgit_print_repolist() | |||
216 | 229 | ||
217 | if (ctx.cfg.index_header) | 230 | if (ctx.cfg.index_header) |
218 | html_include(ctx.cfg.index_header); | 231 | html_include(ctx.cfg.index_header); |
219 | 232 | ||
220 | if(ctx.qry.sort) | 233 | if(ctx.qry.sort) |
221 | sorted = sort_repolist(ctx.qry.sort); | 234 | sorted = sort_repolist(ctx.qry.sort); |
235 | else | ||
236 | sort_repolist("section"); | ||
222 | 237 | ||
223 | html("<table summary='repository list' class='list nowrap'>"); | 238 | html("<table summary='repository list' class='list nowrap'>"); |
224 | for (i=0; i<cgit_repolist.count; i++) { | 239 | for (i=0; i<cgit_repolist.count; i++) { |
225 | ctx.repo = &cgit_repolist.repos[i]; | 240 | ctx.repo = &cgit_repolist.repos[i]; |
226 | if (!(is_match(ctx.repo) && is_in_url(ctx.repo))) | 241 | if (!(is_match(ctx.repo) && is_in_url(ctx.repo))) |
227 | continue; | 242 | continue; |