diff options
Diffstat (limited to 'source/ui-shared.c')
| -rw-r--r-- | source/ui-shared.c | 13 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 12 insertions, 1 deletion
diff --git a/source/ui-shared.c b/source/ui-shared.c index 3970c58..a112fb2 100644 --- a/source/ui-shared.c +++ b/source/ui-shared.c @@ -1424,6 +1424,15 @@ void cgit_print_age(time_t t, int tz, time_t max_relative) print_rel_date(t, tz, secs * 1.0 / SECONDS_PER_YEAR, "age-years", "years"); } +/* + * Whether a content type carries text a charset applies to, which is every + * text type and the XML ones, the atom feed among them. + */ +static int type_has_charset(const char *mimetype) +{ + return starts_with(mimetype, "text/") || strstr(mimetype, "xml"); +} + void cgit_print_http_headers(void) { ctx.page.headers_sent = 1; @@ -1436,7 +1445,9 @@ void cgit_print_http_headers(void) htmlf("Status: %d %s\n", ctx.page.status, ctx.page.statusmsg); else html("Status: 200 OK\n"); - if (ctx.page.mimetype && ctx.page.charset) + // A charset only means something for text, so an archive or a pack + // is sent without one. + if (ctx.page.mimetype && ctx.page.charset && type_has_charset(ctx.page.mimetype)) 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); |
