aboutsummaryrefslogtreecommitdiffstats
path: root/ui-repolist.c
diff options
context:
space:
mode:
authorGravatar Lars Hjemli <hjemli@gmail.com>2009-08-24 06:09:31 (JST)
committerGravatar Lars Hjemli <hjemli@gmail.com>2009-08-24 17:22:58 (JST)
commit63816ec59748c622623f20e653a7bed87f4f05a4 (patch)
treea2dfcc17487d41d0f585eb8fd56b7e4ee6387c8a /ui-repolist.c
parent39398545787179bc8075d64a443f9da3845c4f67 (diff)
downloadcgit-63816ec59748c622623f20e653a7bed87f4f05a4.zip
cgit-63816ec59748c622623f20e653a7bed87f4f05a4.tar.gz
ui-repolist.c: sort by section name, repo name as default
When no sorting is requested by the client, cgit will now sort by section name followed by repo name. This allows repos to be registered/ discovered independently of their display order. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-repolist.c')
-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
@@ -136,6 +136,18 @@ static int cmp(const char *s1, const char *s2)
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;
@@ -178,6 +190,7 @@ struct sortcolumn {
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},
@@ -219,6 +232,8 @@ void cgit_print_repolist()
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++) {