Use new insert_file() subroutine to insert HTML chunks from external files: $site_header, $home_text (by default indextext.html), $site_footer, and $projectroot/$project/REAME.html. All non-ASCII chars of those files will be broken by Perl IO layer without decoding to utf8, so insert_file() does to_utf8() on each printed line; alternate solution would be to open those files with "binmode $fh, ':utf8'", or even all files with "use open qw(:std :utf8)". Note that inserting README.html lost one of checks for simplicity. Noticed-by: Tatsuki Sugiura <sugi@xxxxxxxxx> Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- This is more complete solution that the one provided by Tatsuki Sugiura in original patch [PATCH] gitweb: fix encode handling for site_{header,footer} Msg-Id: <87vdumbxgc.wl@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> http://thread.gmane.org/gmane.comp.version-control.git/101199 but it is in principle the same solution. I think this one as it is a bugfix should go in git 1.6.1 gitweb/gitweb.perl | 33 +++++++++++++++++---------------- 1 files changed, 17 insertions(+), 16 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 933e137..82262a3 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -2740,6 +2740,15 @@ sub get_file_owner { return to_utf8($owner); } +# assume that file exists +sub insert_file { + my $filename = shift; + + open my $fd, '<', $filename; + print map(to_utf8, <$fd>); + close $fd; +} + ## ...................................................................... ## mimetype related functions @@ -2928,9 +2937,7 @@ EOF "<body>\n"; if (-f $site_header) { - open (my $fd, $site_header); - print <$fd>; - close $fd; + insert_file($site_header); } print "<div class=\"page_header\">\n" . @@ -3017,9 +3024,7 @@ sub git_footer_html { print "</div>\n"; # class="page_footer" if (-f $site_footer) { - open (my $fd, $site_footer); - print <$fd>; - close $fd; + insert_file($site_footer); } print "</body>\n" . @@ -4358,9 +4363,7 @@ sub git_project_list { git_header_html(); if (-f $home_text) { print "<div class=\"index_include\">\n"; - open (my $fd, $home_text); - print <$fd>; - close $fd; + insert_file($home_text); print "</div>\n"; } print $cgi->startform(-method => "get") . @@ -4472,13 +4475,11 @@ sub git_summary { print "</table>\n"; if (-s "$projectroot/$project/README.html") { - if (open my $fd, "$projectroot/$project/README.html") { - print "<div class=\"title\">readme</div>\n" . - "<div class=\"readme\">\n"; - print $_ while (<$fd>); - print "\n</div>\n"; # class="readme" - close $fd; - } + print "<div class=\"title\">readme</div>\n" . + "<div class=\"readme\">\n"; + insert_file("$projectroot/$project/README.html"); + print "\n</div>\n"; # class="readme" + close $fd; } # we need to request one more than 16 (0..15) to check if -- 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