|
diff --git a/cgit.c b/cgit.c index e302a7c..e498030 100644 --- a/ cgit.c+++ b/ cgit.c |
|
@@ -736,50 +736,53 @@ static int calc_ttl() |
736 | |
736 | |
737 | return ctx.cfg.cache_repo_ttl; |
737 | return ctx.cfg.cache_repo_ttl; |
738 | } |
738 | } |
739 | |
739 | |
740 | int main(int argc, const char **argv) |
740 | int main(int argc, const char **argv) |
741 | { |
741 | { |
742 | const char *path; |
742 | const char *path; |
743 | char *qry; |
743 | char *qry; |
744 | int err, ttl; |
744 | int err, ttl; |
745 | |
745 | |
746 | prepare_context(&ctx); |
746 | prepare_context(&ctx); |
747 | cgit_repolist.length = 0; |
747 | cgit_repolist.length = 0; |
748 | cgit_repolist.count = 0; |
748 | cgit_repolist.count = 0; |
749 | cgit_repolist.repos = NULL; |
749 | cgit_repolist.repos = NULL; |
750 | |
750 | |
751 | cgit_parse_args(argc, argv); |
751 | cgit_parse_args(argc, argv); |
752 | parse_configfile(expand_macros(ctx.env.cgit_config), config_cb); |
752 | parse_configfile(expand_macros(ctx.env.cgit_config), config_cb); |
753 | ctx.repo = NULL; |
753 | ctx.repo = NULL; |
754 | http_parse_querystring(ctx.qry.raw, querystring_cb); |
754 | http_parse_querystring(ctx.qry.raw, querystring_cb); |
755 | |
755 | |
756 | /* If virtual-root isn't specified in cgitrc, lets pretend |
756 | /* If virtual-root isn't specified in cgitrc, lets pretend |
757 | * that virtual-root equals SCRIPT_NAME, minus any possibly |
757 | * that virtual-root equals SCRIPT_NAME, minus any possibly |
758 | * trailing slashes. |
758 | * trailing slashes. |
759 | */ |
759 | */ |
760 | if (!ctx.cfg.virtual_root) |
760 | if (!ctx.cfg.virtual_root && ctx.cfg.script_name) { |
761 | ctx.cfg.virtual_root = trim_end(ctx.cfg.script_name, '/'); |
761 | ctx.cfg.virtual_root = trim_end(ctx.cfg.script_name, '/'); |
| |
762 | if (!ctx.cfg.virtual_root) |
| |
763 | ctx.cfg.virtual_root = ""; |
| |
764 | } |
762 | |
765 | |
763 | /* If no url parameter is specified on the querystring, lets |
766 | /* If no url parameter is specified on the querystring, lets |
764 | * use PATH_INFO as url. This allows cgit to work with virtual |
767 | * use PATH_INFO as url. This allows cgit to work with virtual |
765 | * urls without the need for rewriterules in the webserver (as |
768 | * urls without the need for rewriterules in the webserver (as |
766 | * long as PATH_INFO is included in the cache lookup key). |
769 | * long as PATH_INFO is included in the cache lookup key). |
767 | */ |
770 | */ |
768 | path = ctx.env.path_info; |
771 | path = ctx.env.path_info; |
769 | if (!ctx.qry.url && path) { |
772 | if (!ctx.qry.url && path) { |
770 | if (path[0] == '/') |
773 | if (path[0] == '/') |
771 | path++; |
774 | path++; |
772 | ctx.qry.url = xstrdup(path); |
775 | ctx.qry.url = xstrdup(path); |
773 | if (ctx.qry.raw) { |
776 | if (ctx.qry.raw) { |
774 | qry = ctx.qry.raw; |
777 | qry = ctx.qry.raw; |
775 | ctx.qry.raw = xstrdup(fmt("%s?%s", path, qry)); |
778 | ctx.qry.raw = xstrdup(fmt("%s?%s", path, qry)); |
776 | free(qry); |
779 | free(qry); |
777 | } else |
780 | } else |
778 | ctx.qry.raw = xstrdup(ctx.qry.url); |
781 | ctx.qry.raw = xstrdup(ctx.qry.url); |
779 | cgit_parse_url(ctx.qry.url); |
782 | cgit_parse_url(ctx.qry.url); |
780 | } |
783 | } |
781 | |
784 | |
782 | ttl = calc_ttl(); |
785 | ttl = calc_ttl(); |
783 | ctx.page.expires += ttl*60; |
786 | ctx.page.expires += ttl*60; |
784 | if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD")) |
787 | if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD")) |
785 | ctx.cfg.nocache = 1; |
788 | ctx.cfg.nocache = 1; |
|