Re: [PATCH 2/n] gitweb: Use '&iquot;' instead of '?' in esc_path
From: Jakub Narebski <hidden>
Date: 2016-08-11 20:02:30
Jakub Narebski wrote:
3. Use Character Escape Codes (CEC), using alphabetic and octal backslash sequences like those used in C. Probably need to escape backslash (quoting character) too. Has the advantage of being widely understood in POSIX world. Has the disadvantage of need for escape sequence table/hash. Has the advantage that it works for all characters - simple octal backslash sequence if they have no special escape sequence.
Here is example code for this:
sub esc_path {
my $str = shift;
sub quot {
my $seq = shift;
my %es = (
"\t" => '\t', # tab (HT, TAB)
"\n" => '\n', # newline (NL)
"\r" => '\r', # return (CR)
"\f" => '\f', # form feed (FF)
"\b" => '\b', # backspace (BS)
"\a" => '\a', # alarm (bell) (BEL)
"\e" => '\e', # escape (ESC)
"\013" => '\v', # vertical tab (VT)
);
if (exists $es{seq}) {
return $es{$seq};
}
return sprintf("\\%03o", ord($seq));
}
$str = esc_html($str);
$str =~ s/([[:cntrl:]])/'<span class="cntrl">' . quot($1) . '</span>'/eg;
return $str;
}
--
Jakub Narebski