all repos — cgit @ b88fb016d0209f7041ac7d3b4d2c077318407a4d

a hyperfast web frontend for git written in c

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>
Lars Hjemli hjemli@gmail.com
Sat, 16 Feb 2008 21:16:53 +0100
commit

b88fb016d0209f7041ac7d3b4d2c077318407a4d

parent

d1f3bbe9d22029f45a77bb938c176ccc0c827d46

2 files changed, 9 insertions(+), 10 deletions(-)

jump to
M cgit.ccgit.c

@@ -83,20 +83,23 @@ {

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_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 @@ chk_positive(dup2(stdout2, STDOUT_FILENO),

"Restoring original STDOUT"); chk_zero(close(stdout2), "Closing temporary STDOUT"); } - - chdir(buf); } static void cgit_check_cache(struct cacheitem *item)
M ui-shared.cui-shared.c

@@ -476,7 +476,7 @@ html_attr(cgit_rooturl());

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");