X-Git-Url: https://git.chrismorgan.info/gitweb/blobdiff_plain/662457e5a80e8f1037547efc535d6e888a7d5a74..997771613b0b40fa6b973e741773e564fd241534:/gitweb.cgi diff --git a/gitweb.cgi b/gitweb.cgi index ea06c90..28a64ea 100755 --- a/gitweb.cgi +++ b/gitweb.cgi @@ -1862,7 +1862,7 @@ sub esc_html_hl_regions { $out .= esc_html(substr($str, $pos, $begin - $pos), %opts) if ($begin - $pos > 0); - $out .= $cgi->span({-class => $css_class}, $escaped); + $out .= "$escaped"; $pos = $end; } @@ -1892,7 +1892,7 @@ sub esc_html_match_hl { my @matches = matchpos_list($str, $regexp); return esc_html($str) unless @matches; - return esc_html_hl_regions($str, 'match', @matches); + return esc_html_hl_regions($str, undef, @matches); } @@ -1924,7 +1924,7 @@ sub esc_html_match_hl_chopped { push @filtered, $m; } - return esc_html_hl_regions($chopped . $tail, 'match', @filtered); + return esc_html_hl_regions($chopped . $tail, undef, @filtered); } ## ---------------------------------------------------------------------- @@ -3032,7 +3032,7 @@ sub git_populate_project_tagcloud { $title =~ s/^/ /g; $title =~ s/$/ /g; if (defined $matched && $matched eq $ctag) { - $title = qq($title); + $title = qq($title); } $cloud->add($title, href(project=>undef, ctag=>$ctag), $ctags_lc{$ctag}->{count}); @@ -3042,7 +3042,7 @@ sub git_populate_project_tagcloud { foreach my $ctag (keys %ctags_lc) { my $title = esc_html($ctags_lc{$ctag}->{topname}, -nbsp=>1); if (defined $matched && $matched eq $ctag) { - $title = qq($title); + $title = qq($title); } $cloud->{$ctag}{count} = $ctags_lc{$ctag}->{count}; $cloud->{$ctag}{ctag} = @@ -4086,11 +4086,11 @@ sub print_feed_meta { } else { printf(''."\n", - esc_attr($site_name), + esc_attr(to_utf8($site_name)), esc_attr(href(project=>undef, action=>"project_index"))); printf(''."\n", - esc_attr($site_name), + esc_attr(to_utf8($site_name)), esc_attr(href(project=>undef, action=>"opml"))); } } @@ -4848,11 +4848,11 @@ sub git_difftree_body { my ($difftree, $hash, @parents) = @_; my ($parent) = $parents[0]; my $have_blame = gitweb_check_feature('blame'); - print "
\n"; if ($#{$difftree} > 10) { + print "
\n"; print(($#{$difftree} + 1) . " files changed:\n"); + print "
\n"; } - print "
\n"; print " 1 ? "combined " : "") . @@ -5877,11 +5877,13 @@ sub git_log_body { $from = 0 unless defined $from; $to = $#{$commitlist} if (!defined $to || $#{$commitlist} < $to); + print "
\n"; for (my $i = 0; $i <= $to; $i++) { my %co = %{$commitlist->[$i]}; next if !%co; my $commit = $co{'id'}; my $ref = format_ref_marker($refs, $commit); + print "
\n"; git_print_header_div('commit', "" . esc_html($co{'title'}) . $ref, @@ -5900,7 +5902,9 @@ sub git_log_body { print "
\n"; git_print_log($co{'comment'}); print "
\n"; + print "
\n"; } + print "
\n"; if ($extra) { print "
\n"; print "$extra\n"; @@ -6319,7 +6323,7 @@ sub git_search_changes { print $cgi->a({-href => href(action=>"blob", hash_base=>$co{'id'}, hash=>$set{'to_id'}, file_name=>$set{'to_file'}), -class => "list"}, - "" . esc_path($set{'file'}) . "") . + "" . esc_path($set{'file'}) . "") . "
\n"; } } @@ -6394,9 +6398,9 @@ sub git_search_files { $ltext = untabify($ltext); if ($ltext =~ m/^(.*)($search_regexp)(.*)$/i) { $ltext = esc_html($1, -nbsp=>1); - $ltext .= ''; + $ltext .= ''; $ltext .= esc_html($2, -nbsp=>1); - $ltext .= ''; + $ltext .= ''; $ltext .= esc_html($3, -nbsp=>1); } else { $ltext = esc_html($ltext, -nbsp=>1); @@ -6461,7 +6465,7 @@ sub git_search_grep_body { $match = esc_html($match); $trail = esc_html($trail); - print "$lead$match$trail
"; + print "$lead$match$trail
"; } } print "\n" . @@ -6625,51 +6629,66 @@ sub git_summary { print "
\n"; + print("
\n"); + # If XSS prevention is on, we don't include README.html. # TODO: Allow a readme in some safe format. if (!$prevent_xss && -s "$projectroot/$project/README.html") { + print("
\n"); print "
readme
\n" . "
\n"; insert_file("$projectroot/$project/README.html"); print "\n
\n"; # class="readme" + print("
\n"); } # we need to request one more than 16 (0..15) to check if # those 16 are all my @commitlist = $head ? parse_commits($head, 17) : (); if (@commitlist) { + print("
\n"); git_print_header_div('shortlog'); git_shortlog_body(\@commitlist, 0, 15, $refs, $#commitlist <= 15 ? undef : $cgi->a({-href => href(action=>"shortlog")}, "...")); + print("
\n"); } if (@taglist) { + print("
\n"); git_print_header_div('tags'); git_tags_body(\@taglist, 0, 15, $#taglist <= 15 ? undef : $cgi->a({-href => href(action=>"tags")}, "...")); + print("
\n"); } if (@headlist) { + print("
\n"); git_print_header_div('heads'); git_heads_body(\@headlist, $head, 0, 15, $#headlist <= 15 ? undef : $cgi->a({-href => href(action=>"heads")}, "...")); + print("
\n"); } if (%remotedata) { + print("
\n"); git_print_header_div('remotes'); git_remotes_body(\%remotedata, 15, $head); + print("
\n"); } if (@forklist) { + print("
\n"); git_print_header_div('forks'); git_project_list_body(\@forklist, 'age', 0, 15, $#forklist <= 15 ? undef : $cgi->a({-href => href(action=>"forks")}, "..."), 'no_header'); + print("
\n"); } + print("
\n"); git_footer_html(); } @@ -8199,7 +8218,7 @@ sub git_feed { return if ($cgi->request_method() eq 'HEAD'); # header variables - my $title = "$site_name - $project/$action"; + my $title = to_utf8($site_name) . " - $project/$action"; my $feed_type = 'log'; if (defined $hash) { $title .= " - '$hash'"; @@ -8362,7 +8381,7 @@ sub git_opml { -charset => 'utf-8', -content_disposition => 'inline; filename="opml.xml"'); - my $title = esc_html($site_name); + my $title = esc_html(to_utf8($site_name)); my $filter = " within subdirectory "; if (defined $project_filter) { $filter .= esc_html($project_filter);