Move functions for repolist output into ui-repolist.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Mon, 11 Dec 2006 16:48:03 +0100
5 files changed,
90 insertions(+),
70 deletions(-)
M
cgit.c
→
cgit.c
@@ -84,26 +84,6 @@ cgit_query_has_sha1 = 1;
} } -char *cgit_repourl(const char *reponame) -{ - if (cgit_virtual_root) { - return fmt("%s/%s/", cgit_virtual_root, reponame); - } else { - return fmt("?r=%s", reponame); - } -} - -char *cgit_pageurl(const char *reponame, const char *pagename, - const char *query) -{ - if (cgit_virtual_root) { - return fmt("%s/%s/%s/?%s", cgit_virtual_root, reponame, - pagename, query); - } else { - return fmt("?r=%s&p=%s&%s", reponame, pagename, query); - } -} - static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, int flags, void *cb_data) {@@ -132,55 +112,6 @@ htmlf("*** bad ref %s", sha1_to_hex(sha1));
html("</td></tr>\n"); } return 0; -} - -static void cgit_print_repolist(struct cacheitem *item) -{ - DIR *d; - struct dirent *de; - struct stat st; - char *name; - - chdir(cgit_root); - cgit_print_docstart(cgit_root_title, item); - cgit_print_pageheader(cgit_root_title); - - if (!(d = opendir("."))) { - cgit_print_error(fmt("Unable to scan repository directory: %s", - strerror(errno))); - cgit_print_docend(); - return; - } - - html("<h2>Repositories</h2>\n"); - html("<table class='list'>"); - html("<tr><th>Name</th><th>Description</th><th>Owner</th></tr>\n"); - while ((de = readdir(d)) != NULL) { - if (de->d_name[0] == '.') - continue; - if (stat(de->d_name, &st) < 0) - continue; - if (!S_ISDIR(st.st_mode)) - continue; - - cgit_repo_name = cgit_repo_desc = cgit_repo_owner = NULL; - name = fmt("%s/info/cgit", de->d_name); - if (cgit_read_config(name, cgit_repo_config_cb)) - continue; - - html("<tr><td>"); - html_link_open(cgit_repourl(de->d_name), NULL, NULL); - html_txt(cgit_repo_name); - html_link_close(); - html("</td><td>"); - html_txt(cgit_repo_desc); - html("</td><td>"); - html_txt(cgit_repo_owner); - html("</td></tr>\n"); - } - closedir(d); - html("</table>"); - cgit_print_docend(); } static void cgit_print_branches()
M
cgit.h
→
cgit.h
@@ -65,10 +65,18 @@ extern int cache_unlock(struct cacheitem *item);
extern int cache_exist(struct cacheitem *item); extern int cache_expired(struct cacheitem *item); +extern char *cgit_repourl(const char *reponame); +extern char *cgit_pageurl(const char *reponame, const char *pagename, + const char *query); + extern void cgit_print_error(char *msg); extern void cgit_print_docstart(char *title, struct cacheitem *item); extern void cgit_print_docend(); extern void cgit_print_pageheader(char *title); +extern void cgit_print_repolist(struct cacheitem *item); + + +extern void cgit_repo_config_cb(const char *name, const char *value); #endif /* CGIT_H */
A
ui-repolist.c
@@ -0,0 +1,60 @@
+/* ui-repolist.c: functions for generating the repolist page + * + * Copyright (C) 2006 Lars Hjemli + * + * Licensed under GNU General Public License v2 + * (see COPYING for full license text) + */ + +#include "cgit.h" + +void cgit_print_repolist(struct cacheitem *item) +{ + DIR *d; + struct dirent *de; + struct stat st; + char *name; + + chdir(cgit_root); + cgit_print_docstart(cgit_root_title, item); + cgit_print_pageheader(cgit_root_title); + + if (!(d = opendir("."))) { + cgit_print_error(fmt("Unable to scan repository directory: %s", + strerror(errno))); + cgit_print_docend(); + return; + } + + html("<h2>Repositories</h2>\n"); + html("<table class='list'>"); + html("<tr><th>Name</th><th>Description</th><th>Owner</th></tr>\n"); + while ((de = readdir(d)) != NULL) { + if (de->d_name[0] == '.') + continue; + if (stat(de->d_name, &st) < 0) + continue; + if (!S_ISDIR(st.st_mode)) + continue; + + cgit_repo_name = cgit_repo_desc = cgit_repo_owner = NULL; + name = fmt("%s/info/cgit", de->d_name); + if (cgit_read_config(name, cgit_repo_config_cb)) + continue; + + html("<tr><td>"); + html_link_open(cgit_repourl(de->d_name), NULL, NULL); + html_txt(cgit_repo_name); + html_link_close(); + html("</td><td>"); + html_txt(cgit_repo_desc); + html("</td><td>"); + html_txt(cgit_repo_owner); + html("</td></tr>\n"); + } + closedir(d); + html("</table>"); + cgit_print_docend(); +} + +