From: Jakub Narebski Date: Mon, 06 Nov 2006 21:58:08 GMT Subject: Re: [PATCH 2/n] gitweb: Use '&iquot;' instead of '?' in esc_path Message-ID: <200611062258.08320.jnareb@gmail.com> In-Reply-To: <200611032333.49794.jnareb@gmail.com> 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:]])/'' . quot($1) . ''/eg; return $str; } -- Jakub Narebski