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"))
}
}
-static char *xstrdupn(const char *str)
-{
- return (str ? xstrdup(str) : NULL);
-}
-
static void prepare_context(struct cgit_context *ctx)
{
memset(ctx, 0, sizeof(*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;
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;
}
* 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