all repos — cgit @ 447025f62ccbbb6e038d42009368e28f3e162460

a hyperfast web frontend for git written in c

ui-repolist.c (view raw)

 1/* ui-repolist.c: functions for generating the repolist page
 2 *
 3 * Copyright (C) 2006 Lars Hjemli
 4 *
 5 * Licensed under GNU General Public License v2
 6 *   (see COPYING for full license text)
 7 */
 8
 9#include "cgit.h"
10
11void cgit_print_repolist(struct cacheitem *item)
12{
13	DIR *d;
14	struct dirent *de;
15	struct stat st;
16	char *name;
17
18	chdir(cgit_root);
19	cgit_print_docstart(cgit_root_title, item);
20	cgit_print_pageheader(cgit_root_title, 0);
21
22	if (!(d = opendir("."))) {
23		cgit_print_error(fmt("Unable to scan repository directory: %s",
24				     strerror(errno)));
25		cgit_print_docend();
26		return;
27	}
28
29	html("<h2>Repositories</h2>\n");
30	html("<table class='list nowrap'>");
31	html("<tr>"
32	     "<th class='left'>Name</th>"
33	     "<th class='left'>Description</th>"
34	     "<th class='left'>Owner</th></tr>\n");
35	while ((de = readdir(d)) != NULL) {
36		if (de->d_name[0] == '.')
37			continue;
38		if (stat(de->d_name, &st) < 0)
39			continue;
40		if (!S_ISDIR(st.st_mode))
41			continue;
42
43		cgit_repo_name = cgit_repo_desc = cgit_repo_owner = NULL;
44		name = fmt("%s/info/cgit", de->d_name);
45		if (cgit_read_config(name, cgit_repo_config_cb))
46			continue;
47
48		html("<tr><td>");
49		html_link_open(cgit_repourl(de->d_name), NULL, NULL);
50		html_txt(cgit_repo_name);
51		html_link_close();
52		html("</td><td>");
53		html_txt(cgit_repo_desc);
54		html("</td><td>");
55		html_txt(cgit_repo_owner);
56		html("</td></tr>\n");
57	}
58	closedir(d);
59	html("</table>");
60	cgit_print_docend();
61}
62
63