X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/66cacd053ba900c8eb3b7962027370c84a97f990..5b94c96a83f19a0175a8e1699d71080965793cc2:/cgit.c diff --git a/cgit.c b/cgit.c index fedf355..1d7a83f 100644 --- a/cgit.c +++ b/cgit.c @@ -15,7 +15,7 @@ static struct repoinfo *cgit_get_repoinfo(char *url) { int i; struct repoinfo *repo; - + for (i=0; iurl, url)) @@ -43,12 +43,12 @@ static int cgit_prepare_cache(struct cacheitem *item) } if (!cgit_query_page) { - item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, + item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, cgit_repo->url)); item->ttl = cgit_cache_repo_ttl; } else { - item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, - cgit_repo->url, cgit_query_page, + item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, + cgit_repo->url, cgit_query_page, cache_safe_filename(cgit_querystring))); if (cgit_query_has_symref) item->ttl = cgit_cache_dynamic_ttl; @@ -79,11 +79,16 @@ static void cgit_print_repo_page(struct cacheitem *item) show_search = 0; setenv("GIT_DIR", cgit_repo->path, 1); - if (cgit_repo->snapshots && cgit_query_page && - !strcmp(cgit_query_page, "snapshot")) { - cgit_print_snapshot(item, cgit_query_sha1, "zip", + if (cgit_query_page) { + if (cgit_repo->snapshots && !strcmp(cgit_query_page, "snapshot")) { + cgit_print_snapshot(item, cgit_query_sha1, "zip", cgit_repo->url, cgit_query_name); return; + } + if (!strcmp(cgit_query_page, "blob")) { + cgit_print_blob(item, cgit_query_sha1, cgit_query_path); + return; + } } if (cgit_query_page && !strcmp(cgit_query_page, "log")) @@ -102,16 +107,17 @@ static void cgit_print_repo_page(struct cacheitem *item) cgit_print_pageheader(cgit_query_page, show_search); if (!strcmp(cgit_query_page, "log")) { - cgit_print_log(cgit_query_head, cgit_query_ofs, 100, - cgit_query_search); + cgit_print_log(cgit_query_head, cgit_query_ofs, + cgit_max_commit_count, cgit_query_search, + cgit_query_path); } else if (!strcmp(cgit_query_page, "tree")) { - cgit_print_tree(cgit_query_sha1, cgit_query_path); + cgit_print_tree(cgit_query_head, cgit_query_sha1, cgit_query_path); } else if (!strcmp(cgit_query_page, "commit")) { cgit_print_commit(cgit_query_sha1); } else if (!strcmp(cgit_query_page, "view")) { - cgit_print_view(cgit_query_sha1); + cgit_print_view(cgit_query_sha1, cgit_query_path); } else if (!strcmp(cgit_query_page, "diff")) { - cgit_print_diff(cgit_query_sha1, cgit_query_sha2); + cgit_print_diff(cgit_query_sha1, cgit_query_sha2, cgit_query_path); } else { cgit_print_error("Invalid request"); } @@ -127,7 +133,7 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) item->st.st_mtime = time(NULL); if (use_cache) { - stdout2 = chk_positive(dup(STDOUT_FILENO), + stdout2 = chk_positive(dup(STDOUT_FILENO), "Preserving STDOUT"); chk_zero(close(STDOUT_FILENO), "Closing STDOUT"); chk_positive(dup2(item->fd, STDOUT_FILENO), "Dup2(cachefile)"); @@ -140,7 +146,7 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) if (use_cache) { chk_zero(close(STDOUT_FILENO), "Close redirected STDOUT"); - chk_positive(dup2(stdout2, STDOUT_FILENO), + chk_positive(dup2(stdout2, STDOUT_FILENO), "Restoring original STDOUT"); chk_zero(close(stdout2), "Closing temporary STDOUT"); }