-rw-r--r-- | cgit.c | 17 | ||||
-rw-r--r-- | ui-shared.c | 2 |
2 files changed, 9 insertions, 10 deletions
@@ -85,9 +85,13 @@ static void cgit_print_repo_page(struct cacheitem *item) unsigned char sha1[20]; + int nongit = 0; - if (chdir(ctx.repo->path)) { - title = fmt("%s - %s", ctx.cfg.root_title, "Bad request"); + setenv("GIT_DIR", ctx.repo->path, 1); + setup_git_directory_gently(&nongit); + if (nongit) { + title = fmt("%s - %s", ctx.cfg.root_title, "config error"); + tmp = fmt("Not a git repository: '%s'", ctx.repo->path); + ctx.repo = NULL; cgit_print_docstart(title, item); cgit_print_pageheader(title, 0); - cgit_print_error(fmt("Unable to scan repository: %s", - strerror(errno))); + cgit_print_error(tmp); cgit_print_docend(); @@ -98,3 +102,2 @@ static void cgit_print_repo_page(struct cacheitem *item) show_search = 0; - setenv("GIT_DIR", ctx.repo->path, 1); @@ -181,6 +184,4 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) { - static char buf[PATH_MAX]; int stdout2; - getcwd(buf, sizeof(buf)); item->st.st_mtime = time(NULL); @@ -205,4 +206,2 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) } - - chdir(buf); } diff --git a/ui-shared.c b/ui-shared.c index b9f487a..cc1ab8b 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -478,3 +478,3 @@ void cgit_print_pageheader(char *title, int show_search) html("</td></tr>\n<tr><td class='sidebar'>\n"); - if (ctx.qry.repo) { + if (ctx.repo) { html("<h1 class='first'>"); |