summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-02-16 20:16:53 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-02-16 20:48:19 (UTC)
commitb88fb016d0209f7041ac7d3b4d2c077318407a4d (patch) (side-by-side diff)
tree777e9cd042c3da9caaefe1f63363a52b56601521
parentd1f3bbe9d22029f45a77bb938c176ccc0c827d46 (diff)
downloadcgit-b88fb016d0209f7041ac7d3b4d2c077318407a4d.zip
cgit-b88fb016d0209f7041ac7d3b4d2c077318407a4d.tar.gz
cgit-b88fb016d0209f7041ac7d3b4d2c077318407a4d.tar.bz2
Improve initialization of git directory
Using the functions offered by libgit feels like the right thing to do. Also, make sure that config errors gets properly reported. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c17
-rw-r--r--ui-shared.c2
2 files changed, 9 insertions, 10 deletions
diff --git a/cgit.c b/cgit.c
index b270fdc..2c933dc 100644
--- a/cgit.c
+++ b/cgit.c
@@ -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'>");