diff options
| author | 2008-05-21 15:17:54 (JST) | |
|---|---|---|
| committer | 2008-08-02 05:12:34 (JST) | |
| commit | b2a3d31e8839b53a623b4c99124c2c637d0e3cbb (patch) | |
| tree | 7335ff15fdbe92aa0afb31e4a54e2f863760c217 /ui-shared.c | |
| parent | 0f0ab148c6d444316af10e6b4c7a60630fed45d3 (diff) | |
| download | cgit-b2a3d31e8839b53a623b4c99124c2c637d0e3cbb.zip cgit-b2a3d31e8839b53a623b4c99124c2c637d0e3cbb.tar.gz | |
Add atom-support
This enables a page which generates atom feeds for the current branch and
path, heavily inspired by the atom-support in gitweb.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-shared.c')
| -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 197ee37..37c60b2 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
| @@ -34,6 +34,21 @@ void cgit_print_error(char *msg) | |||
| 34 | html("</div>\n"); | 34 | html("</div>\n"); |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | char *cgit_hosturl() | ||
| 38 | { | ||
| 39 | char *host, *port; | ||
| 40 | |||
| 41 | host = getenv("SERVER_NAME"); | ||
| 42 | if (!host) | ||
| 43 | return NULL; | ||
| 44 | port = getenv("SERVER_PORT"); | ||
| 45 | if (port && atoi(port) != 80) | ||
| 46 | host = xstrdup(fmt("%s:%d", host, atoi(port))); | ||
| 47 | else | ||
| 48 | host = xstrdup(host); | ||
| 49 | return host; | ||
| 50 | } | ||
| 51 | |||
| 37 | char *cgit_rooturl() | 52 | char *cgit_rooturl() |
| 38 | { | 53 | { |
| 39 | if (ctx.cfg.virtual_root) | 54 | if (ctx.cfg.virtual_root) |
| @@ -428,6 +443,7 @@ void cgit_print_http_headers(struct cgit_context *ctx) | |||
| 428 | 443 | ||
| 429 | void cgit_print_docstart(struct cgit_context *ctx) | 444 | void cgit_print_docstart(struct cgit_context *ctx) |
| 430 | { | 445 | { |
| 446 | char *host = cgit_hosturl(); | ||
| 431 | html(cgit_doctype); | 447 | html(cgit_doctype); |
| 432 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); | 448 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); |
| 433 | html("<head>\n"); | 449 | html("<head>\n"); |
| @@ -445,6 +461,13 @@ void cgit_print_docstart(struct cgit_context *ctx) | |||
| 445 | html_attr(ctx->cfg.favicon); | 461 | html_attr(ctx->cfg.favicon); |
| 446 | html("'/>\n"); | 462 | html("'/>\n"); |
| 447 | } | 463 | } |
| 464 | if (host && ctx->repo) { | ||
| 465 | html("<link rel='alternate' title='Atom feed' href='http://"); | ||
| 466 | html_attr(cgit_hosturl()); | ||
| 467 | html_attr(cgit_fileurl(ctx->repo->url, "atom", ctx->qry.path, | ||
| 468 | fmt("h=%s", ctx->qry.head))); | ||
| 469 | html("' type='application/atom+xml'/>"); | ||
| 470 | } | ||
| 448 | html("</head>\n"); | 471 | html("</head>\n"); |
| 449 | html("<body>\n"); | 472 | html("<body>\n"); |
| 450 | } | 473 | } |
