{"thread":{"id":"43665","subject":"[PATCH] gitweb: Do not use esc_html in esc_path","startedAt":"2006-11-21T20:43:43Z","lastAt":"2006-11-21T20:43:43Z","messageCount":1,"participants":["Jakub Narebski"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"296449","messageId":"11641418231756-git-send-email-jnareb@gmail.com","threadId":"43665","inReplyTo":null,"subject":"[PATCH] gitweb: Do not use esc_html in esc_path","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-11-21T20:43:43Z","receivedAt":"2006-11-21T20:43:43Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Do not use esc_html in esc_path subroutine to avoid double quoting;\nexpand esc_html body (except quoting) in esc_path.\n\nMove esc_path before quot_cec and quot_upr. Add some comments.\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\n gitweb/gitweb.perl |   28 +++++++++++++++++-----------\n 1 files changed, 17 insertions(+), 11 deletions(-)\n\ndiff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl\nindex ce185d9..53214b0 100755\n--- a/gitweb/gitweb.perl\n+++ b/gitweb/gitweb.perl\n@@ -585,7 +585,21 @@ sub esc_html ($;%) {\n \treturn $str;\n }\n \n-# Make control characterss \"printable\".\n+# quote control characters and escape filename to HTML\n+sub esc_path {\n+\tmy $str = shift;\n+\tmy %opts = @_;\n+\n+\t$str = to_utf8($str);\n+\t$str = escapeHTML($str);\n+\tif ($opts{'-nbsp'}) {\n+\t\t$str =~ s/ /&nbsp;/g;\n+\t}\n+\t$str =~ s|([[:cntrl:]])|quot_cec($1)|eg;\n+\treturn $str;\n+}\n+\n+# Make control characters \"printable\", using character escape codes (CEC)\n sub quot_cec {\n \tmy $cntrl = shift;\n \tmy %es = ( # character escape codes, aka escape sequences\n@@ -605,22 +619,14 @@ sub quot_cec {\n \treturn \"<span class=\\\"cntrl\\\">$chr</span>\";\n }\n \n-# Alternatively use unicode control pictures codepoints.\n+# Alternatively use unicode control pictures codepoints,\n+# Unicode \"printable representation\" (PR)\n sub quot_upr {\n \tmy $cntrl = shift;\n \tmy $chr = sprintf('&#%04d;', 0x2400+ord($cntrl));\n \treturn \"<span class=\\\"cntrl\\\">$chr</span>\";\n }\n \n-# quote control characters and escape filename to HTML\n-sub esc_path {\n-\tmy $str = shift;\n-\n-\t$str = esc_html($str);\n-\t$str =~ s|([[:cntrl:]])|quot_cec($1)|eg;\n-\treturn $str;\n-}\n-\n # git may return quoted and escaped filenames\n sub unquote {\n \tmy $str = shift;\n-- \n1.4.3.4\n"}]}