/* 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(); }