зеркало из https://github.com/microsoft/git.git
gitweb: Fix handling of non-ASCII characters in inserted HTML files
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@nemui.org> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
3273ebc759
Коммит
2dcb5e1ac8
|
@ -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,10 @@ 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"
|
||||
}
|
||||
|
||||
# we need to request one more than 16 (0..15) to check if
|
||||
|
|
Загрузка…
Ссылка в новой задаче