- struct commit *commit;
- char buf[256], *url;
-
- commit = lookup_commit(sha1);
- if (commit && !parse_commit(commit)){
- html("<tr><td>");
- url = cgit_pageurl(cgit_query_repo, "log",
- fmt("h=%s", refname));
- html_link_open(url, NULL, NULL);
- strncpy(buf, refname, sizeof(buf));
- html_txt(buf);
- html_link_close();
- html("</td><td>");
- pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0, buf,
- sizeof(buf), 0, NULL, NULL, 0);
- html_txt(buf);
- html("</td></tr>\n");
- } else {
- html("<tr><td>");
- html_txt(buf);
- html("</td><td>");
- htmlf("*** bad ref %s", sha1_to_hex(sha1));
- html("</td></tr>\n");
- }
- return 0;
-}
-
-static void cgit_print_docstart(char *title)
-{
- html("Content-Type: text/html; charset=utf-8\n");
- html("\n");
- html(cgit_doctype);
- html("<html>\n");
- html("<head>\n");
- html("<title>");
- html_txt(title);
- html("</title>\n");
- html("<link rel='stylesheet' type='text/css' href='");
- html_attr(cgit_css);
- html("'/>\n");
- html("</head>\n");
- html("<body>\n");
-}
-
-static void cgit_print_docend()
-{
- html("</body>\n</html>\n");
-}
-
-static void cgit_print_pageheader(char *title)
-{
- html("<div id='header'>");
- htmlf("<a href='%s'>", cgit_logo_link);
- htmlf("<img id='logo' src='%s'/>\n", cgit_logo);
- htmlf("</a>");
- html_txt(title);
- html("</div>");
-}
-
-static void cgit_print_repolist()
-{
- DIR *d;
- struct dirent *de;
- struct stat st;
- char *name;
-
- cgit_print_docstart(cgit_root_title);
- cgit_print_pageheader(cgit_root_title);
-
- if (!(d = opendir("."))) {
- htmlf(cgit_lib_error, "Unable to scan repository directory",
- strerror(errno));
+ if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) ||
+ cgit_read_config("info/cgit", cgit_repo_config_cb)) {
+ char *title = fmt("%s - %s", cgit_root_title, "Bad request");
+ cgit_print_docstart(title, item);
+ cgit_print_pageheader(title);
+ cgit_print_error(fmt("Unable to scan repository: %s",
+ strerror(errno)));