X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/0ffdc46f0830d89e32204e1b30145b4c26727e6c..fd00d2f9d6088223f57006949dc6ce7c36316a79:/cgit.c diff --git a/cgit.c b/cgit.c index afafcce..6f75db1 100644 --- a/cgit.c +++ b/cgit.c @@ -155,9 +155,7 @@ static void config_cb(const char *name, const char *value) else if (!strcmp(name, "strict-export")) ctx.cfg.strict_export = xstrdup(value); else if (!strcmp(name, "virtual-root")) { - ctx.cfg.virtual_root = trim_end(value, '/'); - if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) - ctx.cfg.virtual_root = ""; + ctx.cfg.virtual_root = ensure_end(value, '/'); } else if (!strcmp(name, "nocache")) ctx.cfg.nocache = atoi(value); else if (!strcmp(name, "noplainemail")) @@ -333,11 +331,6 @@ static void querystring_cb(const char *name, const char *value) } } -static char *xstrdupn(const char *str) -{ - return (str ? xstrdup(str) : NULL); -} - static void prepare_context(struct cgit_context *ctx) { memset(ctx, 0, sizeof(*ctx)); @@ -382,16 +375,16 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.summary_tags = 10; ctx->cfg.max_atom_items = 10; ctx->cfg.ssdiff = 0; - ctx->env.cgit_config = xstrdupn(getenv("CGIT_CONFIG")); - ctx->env.http_host = xstrdupn(getenv("HTTP_HOST")); - ctx->env.https = xstrdupn(getenv("HTTPS")); - ctx->env.no_http = xstrdupn(getenv("NO_HTTP")); - ctx->env.path_info = xstrdupn(getenv("PATH_INFO")); - ctx->env.query_string = xstrdupn(getenv("QUERY_STRING")); - ctx->env.request_method = xstrdupn(getenv("REQUEST_METHOD")); - ctx->env.script_name = xstrdupn(getenv("SCRIPT_NAME")); - ctx->env.server_name = xstrdupn(getenv("SERVER_NAME")); - ctx->env.server_port = xstrdupn(getenv("SERVER_PORT")); + ctx->env.cgit_config = getenv("CGIT_CONFIG"); + ctx->env.http_host = getenv("HTTP_HOST"); + ctx->env.https = getenv("HTTPS"); + ctx->env.no_http = getenv("NO_HTTP"); + ctx->env.path_info = getenv("PATH_INFO"); + ctx->env.query_string = getenv("QUERY_STRING"); + ctx->env.request_method = getenv("REQUEST_METHOD"); + ctx->env.script_name = getenv("SCRIPT_NAME"); + ctx->env.server_name = getenv("SERVER_NAME"); + ctx->env.server_port = getenv("SERVER_PORT"); ctx->page.mimetype = "text/html"; ctx->page.charset = PAGE_ENCODING; ctx->page.filename = NULL; @@ -401,9 +394,9 @@ static void prepare_context(struct cgit_context *ctx) ctx->page.etag = NULL; memset(&ctx->cfg.mimetypes, 0, sizeof(struct string_list)); if (ctx->env.script_name) - ctx->cfg.script_name = ctx->env.script_name; + ctx->cfg.script_name = xstrdup(ctx->env.script_name); if (ctx->env.query_string) - ctx->qry.raw = ctx->env.query_string; + ctx->qry.raw = xstrdup(ctx->env.query_string); if (!ctx->env.cgit_config) ctx->env.cgit_config = CGIT_CONFIG; } @@ -838,11 +831,8 @@ int main(int argc, const char **argv) * that virtual-root equals SCRIPT_NAME, minus any possibly * trailing slashes. */ - if (!ctx.cfg.virtual_root && ctx.cfg.script_name) { - ctx.cfg.virtual_root = trim_end(ctx.cfg.script_name, '/'); - if (!ctx.cfg.virtual_root) - ctx.cfg.virtual_root = ""; - } + if (!ctx.cfg.virtual_root && ctx.cfg.script_name) + ctx.cfg.virtual_root = ensure_end(ctx.cfg.script_name, '/'); /* If no url parameter is specified on the querystring, lets * use PATH_INFO as url. This allows cgit to work with virtual