diff options
| -rw-r--r-- | cgit.c | 17 | ||||
| -rw-r--r-- | ui-shared.c | 2 |
2 files changed, 9 insertions, 10 deletions
| @@ -83,20 +83,23 @@ static void cgit_print_repo_page(struct cacheitem *item) | |||
| 83 | char *title, *tmp; | 83 | char *title, *tmp; |
| 84 | int show_search; | 84 | int show_search; |
| 85 | unsigned char sha1[20]; | 85 | unsigned char sha1[20]; |
| 86 | int nongit = 0; | ||
| 86 | 87 | ||
| 87 | if (chdir(ctx.repo->path)) { | 88 | setenv("GIT_DIR", ctx.repo->path, 1); |
| 88 | title = fmt("%s - %s", ctx.cfg.root_title, "Bad request"); | 89 | setup_git_directory_gently(&nongit); |
| 90 | if (nongit) { | ||
| 91 | title = fmt("%s - %s", ctx.cfg.root_title, "config error"); | ||
| 92 | tmp = fmt("Not a git repository: '%s'", ctx.repo->path); | ||
| 93 | ctx.repo = NULL; | ||
| 89 | cgit_print_docstart(title, item); | 94 | cgit_print_docstart(title, item); |
| 90 | cgit_print_pageheader(title, 0); | 95 | cgit_print_pageheader(title, 0); |
| 91 | cgit_print_error(fmt("Unable to scan repository: %s", | 96 | cgit_print_error(tmp); |
| 92 | strerror(errno))); | ||
| 93 | cgit_print_docend(); | 97 | cgit_print_docend(); |
| 94 | return; | 98 | return; |
| 95 | } | 99 | } |
| 96 | 100 | ||
| 97 | title = fmt("%s - %s", ctx.repo->name, ctx.repo->desc); | 101 | title = fmt("%s - %s", ctx.repo->name, ctx.repo->desc); |
| 98 | show_search = 0; | 102 | show_search = 0; |
| 99 | setenv("GIT_DIR", ctx.repo->path, 1); | ||
| 100 | 103 | ||
| 101 | if (!ctx.qry.head) { | 104 | if (!ctx.qry.head) { |
| 102 | ctx.qry.head = xstrdup(find_default_branch(ctx.repo)); | 105 | ctx.qry.head = xstrdup(find_default_branch(ctx.repo)); |
| @@ -179,10 +182,8 @@ static void cgit_print_repo_page(struct cacheitem *item) | |||
| 179 | 182 | ||
| 180 | static void cgit_fill_cache(struct cacheitem *item, int use_cache) | 183 | static void cgit_fill_cache(struct cacheitem *item, int use_cache) |
| 181 | { | 184 | { |
| 182 | static char buf[PATH_MAX]; | ||
| 183 | int stdout2; | 185 | int stdout2; |
| 184 | 186 | ||
| 185 | getcwd(buf, sizeof(buf)); | ||
| 186 | item->st.st_mtime = time(NULL); | 187 | item->st.st_mtime = time(NULL); |
| 187 | 188 | ||
| 188 | if (use_cache) { | 189 | if (use_cache) { |
| @@ -203,8 +204,6 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) | |||
| 203 | "Restoring original STDOUT"); | 204 | "Restoring original STDOUT"); |
| 204 | chk_zero(close(stdout2), "Closing temporary STDOUT"); | 205 | chk_zero(close(stdout2), "Closing temporary STDOUT"); |
| 205 | } | 206 | } |
| 206 | |||
| 207 | chdir(buf); | ||
| 208 | } | 207 | } |
| 209 | 208 | ||
| 210 | static void cgit_check_cache(struct cacheitem *item) | 209 | static void cgit_check_cache(struct cacheitem *item) |
diff --git a/ui-shared.c b/ui-shared.c index b9f487a..cc1ab8b 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
| @@ -476,7 +476,7 @@ void cgit_print_pageheader(char *title, int show_search) | |||
| 476 | htmlf("'><img src='%s' alt='cgit'/></a>\n", | 476 | htmlf("'><img src='%s' alt='cgit'/></a>\n", |
| 477 | ctx.cfg.logo); | 477 | ctx.cfg.logo); |
| 478 | html("</td></tr>\n<tr><td class='sidebar'>\n"); | 478 | html("</td></tr>\n<tr><td class='sidebar'>\n"); |
| 479 | if (ctx.qry.repo) { | 479 | if (ctx.repo) { |
| 480 | html("<h1 class='first'>"); | 480 | html("<h1 class='first'>"); |
| 481 | html_txt(strrpart(ctx.repo->name, 20)); | 481 | html_txt(strrpart(ctx.repo->name, 20)); |
| 482 | html("</h1>\n"); | 482 | html("</h1>\n"); |
