X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/0f0ab148c6d444316af10e6b4c7a60630fed45d3..a30453a5d3f6db4d6e055da2112343e054e7e7d5:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index 197ee37..c23bc75 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -34,6 +34,26 @@ void cgit_print_error(char *msg) html("\n"); } +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; +} + char *cgit_rooturl() { if (ctx.cfg.virtual_root) @@ -243,6 +263,12 @@ void cgit_tree_link(char *name, char *title, char *class, char *head, reporevlink("tree", name, title, class, head, rev, path); } +void cgit_plain_link(char *name, char *title, char *class, char *head, + char *rev, char *path) +{ + reporevlink("plain", name, title, class, head, rev, path); +} + void cgit_log_link(char *name, char *title, char *class, char *head, char *rev, char *path, int ofs, char *grep, char *pattern) { @@ -418,6 +444,8 @@ void cgit_print_http_headers(struct cgit_context *ctx) ctx->page.charset); else if (ctx->page.mimetype) htmlf("Content-Type: %s\n", ctx->page.mimetype); + if (ctx->page.size) + htmlf("Content-Length: %ld\n", ctx->page.size); if (ctx->page.filename) htmlf("Content-Disposition: inline; filename=\"%s\"\n", ctx->page.filename); @@ -428,6 +456,7 @@ void cgit_print_http_headers(struct cgit_context *ctx) void cgit_print_docstart(struct cgit_context *ctx) { + char *host = cgit_hosturl(); html(cgit_doctype); html("\n"); html("
\n"); @@ -445,6 +474,13 @@ void cgit_print_docstart(struct cgit_context *ctx) html_attr(ctx->cfg.favicon); html("'/>\n"); } + if (host && ctx->repo) { + html(""); + } html("\n"); html("\n"); }