Use 'text/plain' for files which are text and can be viewed in a browser, and are not among a few 'text/*' mimetypes universally recognized by web browsers. This means files with 'text/*' which are not text/html, text/css, text/sgml or text/xml, and files with 'application/x-*' mimetype which are nevertheless text: javascript, shell, Perl, Tcl, (La)TeX,... Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- Tired of my web browser (Mozilla) asking me what I want to do with shell script, Perl script or LaTeX document when using 'blob_plain' (raw) view, because of declaration in mimetypes file I have added mimetype sanitizing to gitweb. It is an RFC partially because list of mimetypes is a bit arbitrary. Additionally I guess that the mimetype sanitizing should be separated into subroutine. But most of all beause proper solution is to create mimetype file for use by gitweb. gitweb/gitweb.perl | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 491a3f4..1cfe293 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -2366,7 +2366,28 @@ sub blob_mimetype { if ($filename) { my $mime = mimetype_guess($filename); - $mime and return $mime; + + if ($mime) { + # try to sanitize mimetype + + # return text/plain on unknown text/* mimetype + if ($mime =~ m!^text/! && + $mime !~ m!^text/(?:html|css|sgml|xml)$!) { + return 'text/plain' . + ($default_text_plain_charset ? + '; charset='.$default_text_plain_charset : ''); + } + # return text/plain for known programming languages and like + if ($mime =~ m!^application/x-(?: + javascript|csshell|shell|csh|perl| + sh|shar|tcl|latex|tex|texinfo)!x) { + return 'text/plain' . + ($default_text_plain_charset ? + '; charset='.$default_text_plain_charset : ''); + } + # otherwise return mimetype found in mimetypes file(s) + return $mime; + } } # just in case -- 1.5.3.5 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html