diff options
author | John Keeping | 2013-10-06 12:14:41 +0100 |
---|---|---|
committer | Jason A. Donenfeld | 2014-01-08 14:59:38 +0100 |
commit | 407f71cc061564d63b7358dd36a5bfebda05b15a (patch) | |
tree | 9691450ae35a95e27fe0ff9d782a84675cad7681 /ui-plain.c | |
parent | d76c438eada18cd3fd2980c9555f542cbe636479 (diff) | |
download | cgit-407f71cc061564d63b7358dd36a5bfebda05b15a.tar.gz cgit-407f71cc061564d63b7358dd36a5bfebda05b15a.tar.bz2 cgit-407f71cc061564d63b7358dd36a5bfebda05b15a.zip |
plain: don't append charset for binary MIME types
When outputting the Content-Type HTTP header we print the MIME type and
then append "; charset=<charset>" if the charset variable is non-null.
We don't want a charset when we have selected "application/octet-stream"
or when the user has specified a custom MIME type, since they may have
specified their own charset. To avoid this, make sure we set the page's
charset to NULL in ui-plain before we generate the HTTP headers.
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Diffstat (limited to 'ui-plain.c')
-rw-r--r-- | ui-plain.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -83,17 +83,22 @@ static int print_object(const unsigned char *sha1, const char *path) | |||
83 | mime = string_list_lookup(&ctx.cfg.mimetypes, ext); | 83 | mime = string_list_lookup(&ctx.cfg.mimetypes, ext); |
84 | if (mime) { | 84 | if (mime) { |
85 | ctx.page.mimetype = (char *)mime->util; | 85 | ctx.page.mimetype = (char *)mime->util; |
86 | ctx.page.charset = NULL; | ||
86 | } else { | 87 | } else { |
87 | ctx.page.mimetype = get_mimetype_from_file(ctx.cfg.mimetype_file, ext); | 88 | ctx.page.mimetype = get_mimetype_from_file(ctx.cfg.mimetype_file, ext); |
88 | if (ctx.page.mimetype) | 89 | if (ctx.page.mimetype) { |
89 | freemime = 1; | 90 | freemime = 1; |
91 | ctx.page.charset = NULL; | ||
92 | } | ||
90 | } | 93 | } |
91 | } | 94 | } |
92 | if (!ctx.page.mimetype) { | 95 | if (!ctx.page.mimetype) { |
93 | if (buffer_is_binary(buf, size)) | 96 | if (buffer_is_binary(buf, size)) { |
94 | ctx.page.mimetype = "application/octet-stream"; | 97 | ctx.page.mimetype = "application/octet-stream"; |
95 | else | 98 | ctx.page.charset = NULL; |
99 | } else { | ||
96 | ctx.page.mimetype = "text/plain"; | 100 | ctx.page.mimetype = "text/plain"; |
101 | } | ||
97 | } | 102 | } |
98 | ctx.page.filename = path; | 103 | ctx.page.filename = path; |
99 | ctx.page.size = size; | 104 | ctx.page.size = size; |