From 74620f12e4f7e91cb0a0b4ca731e07272d1b65f6 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 11 Dec 2006 16:48:03 +0100 Subject: Move functions for repolist output into ui-repolist.c Signed-off-by: Lars Hjemli --- ui-repolist.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 ui-repolist.c (limited to 'ui-repolist.c') diff --git a/ui-repolist.c b/ui-repolist.c new file mode 100644 index 0000000..1fe7059 --- /dev/null +++ b/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("

Repositories

\n"); + html(""); + html("\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("\n"); + } + closedir(d); + html("
NameDescriptionOwner
"); + html_link_open(cgit_repourl(de->d_name), NULL, NULL); + html_txt(cgit_repo_name); + html_link_close(); + html(""); + html_txt(cgit_repo_desc); + html(""); + html_txt(cgit_repo_owner); + html("
"); + cgit_print_docend(); +} + + -- cgit v1.2.3