diff options
Diffstat (limited to '')
| -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)  	char *title, *tmp;  	int show_search;  	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();  		return;  	}  	title = fmt("%s - %s", ctx.repo->name, ctx.repo->desc);  	show_search = 0; -	setenv("GIT_DIR", ctx.repo->path, 1);  	if (!ctx.qry.head) {  		ctx.qry.head = xstrdup(find_default_branch(ctx.repo)); @@ -179,10 +182,8 @@ static void cgit_print_repo_page(struct cacheitem *item)  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);  	if (use_cache) { @@ -203,8 +204,6 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache)  			     "Restoring original STDOUT");  		chk_zero(close(stdout2), "Closing temporary STDOUT");  	} - -	chdir(buf);  }  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)  	htmlf("'><img src='%s' alt='cgit'/></a>\n",  	      ctx.cfg.logo);  	html("</td></tr>\n<tr><td class='sidebar'>\n"); -	if (ctx.qry.repo) { +	if (ctx.repo) {  		html("<h1 class='first'>");  		html_txt(strrpart(ctx.repo->name, 20));  		html("</h1>\n"); | 
