]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: Do not use esc_html in esc_path
[Gitweb] / gitweb.perl
index e659783483cd1705d46496fb6b8cf9f3e1066500b21d86702d1c7b5ff81e278c..e1b5fde9422e4152206c2d0f302623883cb30d105f609402ddae5ba9eff8d72b 100755 (executable)
@@ -586,7 +586,21 @@ sub esc_html ($;%) {
        return $str;
 }
 
-# Make control characterss "printable".
+# quote control characters and escape filename to HTML
+sub esc_path {
+       my $str = shift;
+       my %opts = @_;
+
+       $str = to_utf8($str);
+       $str = escapeHTML($str);
+       if ($opts{'-nbsp'}) {
+               $str =~ s/ / /g;
+       }
+       $str =~ s|([[:cntrl:]])|quot_cec($1)|eg;
+       return $str;
+}
+
+# Make control characters "printable", using character escape codes (CEC)
 sub quot_cec {
        my $cntrl = shift;
        my %es = ( # character escape codes, aka escape sequences
@@ -606,22 +620,14 @@ sub quot_cec {
        return "<span class=\"cntrl\">$chr</span>";
 }
 
-# Alternatively use unicode control pictures codepoints.
+# Alternatively use unicode control pictures codepoints,
+# Unicode "printable representation" (PR)
 sub quot_upr {
        my $cntrl = shift;
        my $chr = sprintf('&#%04d;', 0x2400+ord($cntrl));
        return "<span class=\"cntrl\">$chr</span>";
 }
 
-# quote control characters and escape filename to HTML
-sub esc_path {
-       my $str = shift;
-
-       $str = esc_html($str);
-       $str =~ s|([[:cntrl:]])|quot_cec($1)|eg;
-       return $str;
-}
-
 # git may return quoted and escaped filenames
 sub unquote {
        my $str = shift;
@@ -2093,7 +2099,11 @@ sub git_difftree_body {
                                # link to patch
                                $patchno++;
                                print $cgi->a({-href => "#patch$patchno"}, "patch");
+                               print " | ";
                        }
+                       print $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
+                                                    hash_base=>$hash, file_name=>$diff{'file'})},
+                                     "blob") . " | ";
                        print "</td>\n";
 
                } elsif ($diff{'status'} eq "D") { # deleted
@@ -2113,13 +2123,11 @@ sub git_difftree_body {
                        }
                        print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
                                                     hash_base=>$parent, file_name=>$diff{'file'})},
-                                     "blob") . " | ";
+                                     "blob") . " | ";
                        if ($have_blame) {
-                               print $cgi->a({-href =>
-                                                  href(action=>"blame",
-                                                       hash_base=>$parent,
-                                                       file_name=>$diff{'file'})},
-                                             "blame") . " | ";
+                               print $cgi->a({-href => href(action=>"blame", hash_base=>$parent,
+                                                            file_name=>$diff{'file'})},
+                                             "blame") . " | ";
                        }
                        print $cgi->a({-href => href(action=>"history", hash_base=>$parent,
                                                     file_name=>$diff{'file'})},
@@ -2164,13 +2172,12 @@ sub git_difftree_body {
                                      " | ";
                        }
                        print $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
-                                                    hash_base=>$hash, file_name=>$diff{'file'})},
-                                     "blob") . " | ";
+                                                    hash_base=>$hash, file_name=>$diff{'file'})},
+                                      "blob") . " | ";
                        if ($have_blame) {
-                               print $cgi->a({-href => href(action=>"blame",
-                                                            hash_base=>$hash,
-                                                            file_name=>$diff{'file'})},
-                                             "blame") . " | ";
+                               print $cgi->a({-href => href(action=>"blame", hash_base=>$hash,
+                                                            file_name=>$diff{'file'})},
+                                             "blame") . " | ";
                        }
                        print $cgi->a({-href => href(action=>"history", hash_base=>$hash,
                                                     file_name=>$diff{'file'})},
@@ -2209,17 +2216,16 @@ sub git_difftree_body {
                                              "diff") .
                                      " | ";
                        }
-                       print $cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
-                                                    hash_base=>$parent, file_name=>$diff{'from_file'})},
-                                     "blob") . " | ";
+                       print $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
+                                                    hash_base=>$parent, file_name=>$diff{'to_file'})},
+                                     "blob") . " | ";
                        if ($have_blame) {
-                               print $cgi->a({-href => href(action=>"blame",
-                                                            hash_base=>$hash,
-                                                            file_name=>$diff{'to_file'})},
-                                             "blame") . " | ";
+                               print $cgi->a({-href => href(action=>"blame", hash_base=>$hash,
+                                                            file_name=>$diff{'to_file'})},
+                                             "blame") . " | ";
                        }
-                       print $cgi->a({-href => href(action=>"history", hash_base=>$parent,
-                                                   file_name=>$diff{'from_file'})},
+                       print $cgi->a({-href => href(action=>"history", hash_base=>$hash,
+                                                   file_name=>$diff{'to_file'})},
                                      "history");
                        print "</td>\n";
 
@@ -2919,8 +2925,8 @@ sub git_tag {
        print "<div class=\"page_body\">";
        my $comment = $tag{'comment'};
        foreach my $line (@$comment) {
-               chomp($line);
-               print esc_html($line) . "<br/>\n";
+               chomp $line;
+               print esc_html($line, -nbsp=>1) . "<br/>\n";
        }
        print "</div>\n";
        git_footer_html();
@@ -2989,7 +2995,7 @@ HTML
                        }
                }
                my $data = $_;
-               chomp($data);
+               chomp $data;
                my $rev = substr($full_rev, 0, 8);
                my $author = $meta->{'author'};
                my %date = parse_date($meta->{'author-time'},
This page took 0.135608 seconds and 4 git commands to generate.