diff options
author | Eric Wong <e@80x24.org> | 2019-01-18 12:50:59 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-01-18 21:42:47 +0000 |
commit | c22651c2da862ba829dc037e18d726193e4bcbcd (patch) | |
tree | b882915fbe3122da723afa5dadcff1619833d827 /lib/PublicInbox | |
parent | 743ac758eb34f18c7e2544cbc48299662074b1ef (diff) | |
download | public-inbox-c22651c2da862ba829dc037e18d726193e4bcbcd.tar.gz |
We need to work with 0x22 (double-quote) and 0x5c (backslash); even if they're oddball characters in filenames which wouldn't be used by projects I'd want to work on.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/Git.pm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 4601f259..90b9214a 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -23,13 +23,15 @@ my %GIT_ESC = ( r => "\r", t => "\t", v => "\013", + '"' => '"', + '\\' => '\\', ); # unquote pathnames used by git, see quote.c::unquote_c_style.c in git.git sub git_unquote ($) { return $_[0] unless ($_[0] =~ /\A"(.*)"\z/); $_[0] = $1; - $_[0] =~ s/\\([abfnrtv])/$GIT_ESC{$1}/g; + $_[0] =~ s/\\([\\"abfnrtv])/$GIT_ESC{$1}/g; $_[0] =~ s/\\([0-7]{1,3})/chr(oct($1))/ge; $_[0]; } |