Jakub Narebski <jnareb@xxxxxxxxx> writes: > Always add charset info from $default_text_plain_charset (if it is > defined) to "raw" (a=blob_plain) output for 'text/plain' blobs. > Adding charset info in a special case was removed from blob_mimetype(). > > Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> > --- Looks Ok but it took a bit of digging on the list for me to figure out that something like this was missing from the beginning of your commit log message: Earlier "blob_plain" view sent "charset=utf-8" only when gitweb guessed the content type to be text by reading from it, and not when the MIME type was obtained from /etc/mime.types. This fixes the bug by always adding.... But I wonder if moving of this to the calling site is the right thing to do. Wouldn't it become much more contained and robust if you did it this way? gitweb/gitweb.perl | 34 +++++++++++++++++++--------------- 1 files changed, 19 insertions(+), 15 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 57a1905..f5338e1 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -2471,29 +2471,33 @@ sub mimetype_guess { sub blob_mimetype { my $fd = shift; my $filename = shift; + my $mime; if ($filename) { - my $mime = mimetype_guess($filename); - $mime and return $mime; - } - - # just in case - return $default_blob_plain_mimetype unless $fd; - - if (-T $fd) { - return 'text/plain' . - ($default_text_plain_charset ? '; charset='.$default_text_plain_charset : ''); + $mime = mimetype_guess($filename); + } else if (!defined $fd) { + $mime = $default_blob_plain_mimetype; + } else if (-T $fd) { + $mime = 'text/plain'; } elsif (! $filename) { - return 'application/octet-stream'; + $mime = 'application/octet-stream'; } elsif ($filename =~ m/\.png$/i) { - return 'image/png'; + $mime = 'image/png'; } elsif ($filename =~ m/\.gif$/i) { - return 'image/gif'; + $mime = 'image/gif'; } elsif ($filename =~ m/\.jpe?g$/i) { - return 'image/jpeg'; + $mime = 'image/jpeg'; } else { - return 'application/octet-stream'; + $mime = 'application/octet-stream'; } + + # Type specific postprocessing can be added as needed... + if ($mime =~ /^text\//i && + $mime !~ /charset=/i && $default_text_plain_charset) { + $mime .= '; charset='.$default_text_plain_charset; + } + + return $mime; } ## ====================================================================== -- 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