about summary refs log tree commit diff
path: root/ui-shared.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui-shared.c')
-rw-r--r--ui-shared.c51
1 files changed, 22 insertions, 29 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 015c52b..cf06511 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -36,10 +36,7 @@ void cgit_print_error(char *msg)
 
 char *cgit_httpscheme()
 {
-	char *https;
-
-	https = getenv("HTTPS");
-	if (https != NULL && strcmp(https, "on") == 0)
+	if (ctx.env.https && !strcmp(ctx.env.https, "on"))
 		return "https://";
 	else
 		return "http://";
@@ -47,22 +44,13 @@ char *cgit_httpscheme()
 
 char *cgit_hosturl()
 {
-	char *host, *port;
-
-	host = getenv("HTTP_HOST");
-	if (host) {
-		host = xstrdup(host);
-	} else {
-		host = getenv("SERVER_NAME");
-		if (!host)
-			return NULL;
-		port = getenv("SERVER_PORT");
-		if (port && atoi(port) != 80)
-			host = xstrdup(fmt("%s:%d", host, atoi(port)));
-		else
-			host = xstrdup(host);
-	}
-	return host;
+	if (ctx.env.http_host)
+		return ctx.env.http_host;
+	if (!ctx.env.server_name)
+		return NULL;
+	if (!ctx.env.server_port || atoi(ctx.env.server_port) == 80)
+		return ctx.env.server_name;
+	return xstrdup(fmt("%s:%s", ctx.env.server_name, ctx.env.server_port));
 }
 
 char *cgit_rooturl()
@@ -467,9 +455,7 @@ void cgit_print_age(time_t t, time_t max_relative, char *format)
 
 void cgit_print_http_headers(struct cgit_context *ctx)
 {
-	const char *method = getenv("REQUEST_METHOD");
-
-	if (ctx->cfg.embedded)
+	if (ctx->env.no_http && !strcmp(ctx->env.no_http, "1"))
 		return;
 
 	if (ctx->page.status)
@@ -489,14 +475,17 @@ void cgit_print_http_headers(struct cgit_context *ctx)
 	if (ctx->page.etag)
 		htmlf("ETag: \"%s\"\n", ctx->page.etag);
 	html("\n");
-	if (method && !strcmp(method, "HEAD"))
+	if (ctx->env.request_method && !strcmp(ctx->env.request_method, "HEAD"))
 		exit(0);
 }
 
 void cgit_print_docstart(struct cgit_context *ctx)
 {
-	if (ctx->cfg.embedded)
+	if (ctx->cfg.embedded) {
+		if (ctx->cfg.header)
+			html_include(ctx->cfg.header);
 		return;
+	}
 
 	char *host = cgit_hosturl();
 	html(cgit_doctype);
@@ -534,7 +523,13 @@ void cgit_print_docstart(struct cgit_context *ctx)
 
 void cgit_print_docend()
 {
-	html("</div>");
+	html("</div> <!-- class=content -->\n");
+	if (ctx.cfg.embedded) {
+		html("</div> <!-- id=cgit -->\n");
+		if (ctx.cfg.footer)
+			html_include(ctx.cfg.footer);
+		return;
+	}
 	if (ctx.cfg.footer)
 		html_include(ctx.cfg.footer);
 	else {
@@ -543,9 +538,7 @@ void cgit_print_docend()
 		cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time);
 		html("</div>\n");
 	}
-	html("</div>");
-	if (ctx.cfg.embedded)
-		return;
+	html("</div> <!-- id=cgit -->\n");
 	html("</body>\n</html>\n");
 }