static void print_rel_date(time_t t, double value,
const char *class, const char *suffix)
{
- char buf[64];
- struct tm *time;
-
- if (ctx.cfg.local_time)
- time = localtime(&t);
- else
- time = gmtime(&t);
- strftime(buf, sizeof(buf) - 1, FMT_LONGDATE, time);
-
htmlf("<span class='%s' title='", class);
- html_attr(buf);
+ html_attr(fmt_date(t, FMT_LONGDATE, ctx.cfg.local_time));
htmlf("'>%.0f %s</span>", value, suffix);
}
secs = 0;
if (secs > max_relative && max_relative >= 0) {
+ html("<span title='");
+ html_attr(fmt_date(t, FMT_LONGDATE, ctx.cfg.local_time));
+ html("'>");
cgit_print_date(t, format, ctx.cfg.local_time);
+ html("</span>");
return;
}
html("'/>\n");
}
if (host && ctx.repo && ctx.qry.head) {
+ char *fileurl;
struct strbuf sb = STRBUF_INIT;
strbuf_addf(&sb, "h=%s", ctx.qry.head);
html("<link rel='alternate' title='Atom feed' href='");
html(cgit_httpscheme());
html_attr(cgit_hosturl());
- html_attr(cgit_fileurl(ctx.repo->url, "atom", ctx.qry.vpath,
- sb.buf));
+ fileurl = cgit_fileurl(ctx.repo->url, "atom", ctx.qry.vpath,
+ sb.buf);
+ html_attr(fileurl);
html("' type='application/atom+xml'/>\n");
strbuf_release(&sb);
+ free(fileurl);
}
if (ctx.repo)
cgit_add_clone_urls(print_rel_vcs_link);
html("</body>\n</html>\n");
}
+void cgit_print_error_page(int code, const char *msg, const char *fmt, ...)
+{
+ va_list ap;
+ ctx.page.expires = ctx.cfg.cache_dynamic_ttl;
+ ctx.page.status = code;
+ ctx.page.statusmsg = msg;
+ cgit_print_http_headers();
+ cgit_print_docstart();
+ cgit_print_pageheader();
+ va_start(ap, fmt);
+ cgit_vprint_error(fmt, ap);
+ va_end(ap);
+ cgit_print_docend();
+}
+
+void cgit_print_layout_start(void)
+{
+ cgit_print_http_headers();
+ cgit_print_docstart();
+ cgit_print_pageheader();
+}
+
+void cgit_print_layout_end(void)
+{
+ cgit_print_docend();
+}
+
static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)
{
struct strbuf **url_list = strbuf_split_str(txt, ' ', 0);
ctx.qry.head, ctx.qry.vpath);
html("</td><td class='form'>");
html("<form class='right' method='get' action='");
- if (ctx.cfg.virtual_root)
- html_url_path(cgit_fileurl(ctx.qry.repo, "log",
- ctx.qry.vpath, NULL));
+ if (ctx.cfg.virtual_root) {
+ char *fileurl = cgit_fileurl(ctx.qry.repo, "log",
+ ctx.qry.vpath, NULL);
+ html_url_path(fileurl);
+ free(fileurl);
+ }
html("'>\n");
cgit_add_hidden_formfields(1, 0, "log");
html("<select name='qt'>\n");