-rw-r--r-- | ui-shared.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ui-shared.c b/ui-shared.c index a2e0dd2..4818e70 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -33,8 +33,23 @@ void cgit_print_error(char *msg) html_txt(msg); html("</div>\n"); } +char *cgit_hosturl() +{ + char *host, *port; + + 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) return fmt("%s/", ctx.cfg.virtual_root); @@ -435,8 +450,9 @@ 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("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); html("<head>\n"); html("<title>"); @@ -452,8 +468,15 @@ void cgit_print_docstart(struct cgit_context *ctx) html("<link rel='shortcut icon' href='"); html_attr(ctx->cfg.favicon); html("'/>\n"); } + if (host && ctx->repo) { + html("<link rel='alternate' title='Atom feed' href='http://"); + html_attr(cgit_hosturl()); + html_attr(cgit_fileurl(ctx->repo->url, "atom", ctx->qry.path, + fmt("h=%s", ctx->qry.head))); + html("' type='application/atom+xml'/>"); + } html("</head>\n"); html("<body>\n"); } |