summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-repolist.c15
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
139static 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
139static int sort_name(const void *a, const void *b) 151static 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)
175struct sortcolumn { 187struct 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
180struct sortcolumn sortcolumn[] = { 192struct 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;