From f3c1a187fe2bc33f8423cd535d5045899699995b Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Mar 2008 00:51:19 +0100 Subject: Add struct cgit_page to cgit_context This struct is used when generating http headers, and as such is another small step towards the goal of the whole cleanup series; to invoke each page/view function with a function pointer. Signed-off-by: Lars Hjemli --- ui-shared.c | 112 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 51 insertions(+), 61 deletions(-) (limited to 'ui-shared.c') diff --git a/ui-shared.c b/ui-shared.c index 2eff79d..2596023 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -26,14 +26,6 @@ static char *http_date(time_t t) tm->tm_hour, tm->tm_min, tm->tm_sec); } -static long ttl_seconds(long ttl) -{ - if (ttl<0) - return 60 * 60 * 24 * 365; - else - return ttl * 60; -} - void cgit_print_error(char *msg) { html("
"); @@ -361,24 +353,34 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) secs * 1.0 / TM_YEAR); } -void cgit_print_docstart(char *title, struct cacheitem *item) +void cgit_print_http_headers(struct cgit_context *ctx) { - html("Content-Type: text/html; charset=" PAGE_ENCODING "\n"); - htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); - htmlf("Expires: %s\n", http_date(item->st.st_mtime + - ttl_seconds(item->ttl))); + if (ctx->page.mimetype && ctx->page.charset) + htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, + ctx->page.charset); + else if (ctx->page.mimetype) + htmlf("Content-Type: %s\n", ctx->page.mimetype); + if (ctx->page.filename) + htmlf("Content-Disposition: inline; filename=\"%s\"\n", + ctx->page.filename); + htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); + htmlf("Expires: %s\n", http_date(ctx->page.expires)); html("\n"); +} + +void cgit_print_docstart(struct cgit_context *ctx) +{ html(cgit_doctype); html("\n"); html("\n"); html(""); - html_txt(title); + html_txt(ctx->page.title); html("\n"); htmlf("\n", cgit_version); - if (ctx.cfg.robots && *ctx.cfg.robots) - htmlf("\n", ctx.cfg.robots); + if (ctx->cfg.robots && *ctx->cfg.robots) + htmlf("\n", ctx->cfg.robots); html("\n"); html("\n"); html("\n"); @@ -463,7 +465,7 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page) } } -void cgit_print_pageheader(char *title, int show_search) +void cgit_print_pageheader(struct cgit_context *ctx) { static const char *default_info = "This is cgit, a fast webinterface for git repositories"; int header = 0; @@ -475,40 +477,40 @@ void cgit_print_pageheader(char *title, int show_search) html("\ncgit\n", - ctx.cfg.logo); + ctx->cfg.logo); html("\n\n"); - if (ctx.repo) { + if (ctx->repo) { html("

"); - html_txt(strrpart(ctx.repo->name, 20)); + html_txt(strrpart(ctx->repo->name, 20)); html("

\n"); - html_txt(ctx.repo->desc); - if (ctx.repo->owner) { + html_txt(ctx->repo->desc); + if (ctx->repo->owner) { html("

owner

\n"); - html_txt(ctx.repo->owner); + html_txt(ctx->repo->owner); } html("

navigate

\n"); - reporevlink(NULL, "summary", NULL, "menu", ctx.qry.head, + reporevlink(NULL, "summary", NULL, "menu", ctx->qry.head, NULL, NULL); - cgit_log_link("log", NULL, "menu", ctx.qry.head, NULL, NULL, + cgit_log_link("log", NULL, "menu", ctx->qry.head, NULL, NULL, 0, NULL, NULL); - cgit_tree_link("tree", NULL, "menu", ctx.qry.head, - ctx.qry.sha1, NULL); - cgit_commit_link("commit", NULL, "menu", ctx.qry.head, - ctx.qry.sha1); - cgit_diff_link("diff", NULL, "menu", ctx.qry.head, - ctx.qry.sha1, ctx.qry.sha2, NULL); - cgit_patch_link("patch", NULL, "menu", ctx.qry.head, - ctx.qry.sha1); + cgit_tree_link("tree", NULL, "menu", ctx->qry.head, + ctx->qry.sha1, NULL); + cgit_commit_link("commit", NULL, "menu", ctx->qry.head, + ctx->qry.sha1); + cgit_diff_link("diff", NULL, "menu", ctx->qry.head, + ctx->qry.sha1, ctx->qry.sha2, NULL); + cgit_patch_link("patch", NULL, "menu", ctx->qry.head, + ctx->qry.sha1); for_each_ref(print_archive_ref, &header); - if (ctx.repo->clone_url || ctx.cfg.clone_prefix) { + if (ctx->repo->clone_url || ctx->cfg.clone_prefix) { html("

clone

\n"); - if (ctx.repo->clone_url) - url = ctx.repo->clone_url; + if (ctx->repo->clone_url) + url = ctx->repo->clone_url; else - url = fmt("%s%s", ctx.cfg.clone_prefix, - ctx.repo->url); + url = fmt("%s%s", ctx->cfg.clone_prefix, + ctx->repo->url); html("\n"); - add_hidden_formfields(0, 1, ctx.qry.page); + add_hidden_formfields(0, 1, ctx->qry.page); // html("
"); html("\n"); // html(""); html("\n"); @@ -532,22 +534,22 @@ void cgit_print_pageheader(char *title, int show_search) html("

search

\n"); html("
\n"); add_hidden_formfields(1, 0, "log"); html("\n"); html("\n"); html("
\n"); } else { - if (!ctx.cfg.index_info || html_include(ctx.cfg.index_info)) + if (!ctx->cfg.index_info || html_include(ctx->cfg.index_info)) html(default_info); } @@ -556,18 +558,6 @@ void cgit_print_pageheader(char *title, int show_search) html("
\n"); } - -void cgit_print_snapshot_start(const char *mimetype, const char *filename, - struct cacheitem *item) -{ - htmlf("Content-Type: %s\n", mimetype); - htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); - htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); - htmlf("Expires: %s\n", http_date(item->st.st_mtime + - ttl_seconds(item->ttl))); - html("\n"); -} - void cgit_print_filemode(unsigned short mode) { if (S_ISDIR(mode)) -- cgit v1.2.3