htmlf("'>%.0f %s</span>", value, suffix);
}
-void cgit_print_age(time_t t, time_t max_relative, const char *format)
+void cgit_print_age(time_t t, time_t max_relative)
{
time_t now, secs;
html("<span title='");
html_attr(fmt_date(t, FMT_LONGDATE, ctx.cfg.local_time));
html("'>");
- cgit_print_date(t, format, ctx.cfg.local_time);
+ cgit_print_date(t, FMT_SHORTDATE, ctx.cfg.local_time);
html("</span>");
return;
}
htmlf("Content-Type: %s\n", ctx.page.mimetype);
if (ctx.page.size)
htmlf("Content-Length: %zd\n", ctx.page.size);
- if (ctx.page.filename)
- htmlf("Content-Disposition: inline; filename=\"%s\"\n",
- ctx.page.filename);
+ if (ctx.page.filename) {
+ html("Content-Disposition: inline; filename=\"");
+ html_header_arg_in_quotes(ctx.page.filename);
+ html("\"\n");
+ }
if (!ctx.env.authenticated)
html("Cache-Control: no-cache, no-store\n");
htmlf("Last-Modified: %s\n", http_date(ctx.page.modified));
void cgit_redirect(const char *url, bool permanent)
{
htmlf("Status: %d %s\n", permanent ? 301 : 302, permanent ? "Moved" : "Found");
- htmlf("Location: %s\n\n", url);
+ html("Location: ");
+ html_url_path(url);
+ html("\n\n");
exit(0);
}