From: Junio C Hamano Date: Mon, 10 Jul 2017 20:42:50 +0000 (-0700) Subject: Merge branch 'pw/unquote-path-in-git-pm' X-Git-Tag: v2.14.0-rc0~22 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/9bf8e0c73d28eeede51f8d5cb75865eb544e7d47?ds=inline;hp=-c Merge branch 'pw/unquote-path-in-git-pm' Code refactoring. * pw/unquote-path-in-git-pm: t9700: add tests for Git::unquote_path() Git::unquote_path(): throw an exception on bad path Git::unquote_path(): handle '\a' add -i: move unquote_path() to Git.pm --- 9bf8e0c73d28eeede51f8d5cb75865eb544e7d47 diff --combined git-add--interactive.perl index 0e8543c865,7ea3591edc..28b325d754 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@@ -3,7 -3,7 +3,7 @@@ use 5.008; use strict; use warnings; - use Git; + use Git qw(unquote_path); use Git::I18N; binmode(STDOUT, ":raw"); @@@ -46,6 -46,7 +46,6 @@@ my ($diff_new_color) my $normal_color = $repo->get_color("", "reset"); my $diff_algorithm = $repo->config('diff.algorithm'); -my $diff_indent_heuristic = $repo->config_bool('diff.indentheuristic'); my $diff_filter = $repo->config('interactive.difffilter'); my $use_readkey = 0; @@@ -174,47 -175,6 +174,6 @@@ if (!defined $GIT_DIR) } chomp($GIT_DIR); - my %cquote_map = ( - "b" => chr(8), - "t" => chr(9), - "n" => chr(10), - "v" => chr(11), - "f" => chr(12), - "r" => chr(13), - "\\" => "\\", - "\042" => "\042", - ); - - sub unquote_path { - local ($_) = @_; - my ($retval, $remainder); - if (!/^\042(.*)\042$/) { - return $_; - } - ($_, $retval) = ($1, ""); - while (/^([^\\]*)\\(.*)$/) { - $remainder = $2; - $retval .= $1; - for ($remainder) { - if (/^([0-3][0-7][0-7])(.*)$/) { - $retval .= chr(oct($1)); - $_ = $2; - last; - } - if (/^([\\\042btnvfr])(.*)$/) { - $retval .= $cquote_map{$1}; - $_ = $2; - last; - } - # This is malformed -- just return it as-is for now. - return $_[0]; - } - $_ = $remainder; - } - $retval .= $_; - return $retval; - } - sub refresh { my $fh; open $fh, 'git update-index --refresh |' @@@ -729,6 -689,9 +688,6 @@@ sub parse_diff if (defined $diff_algorithm) { splice @diff_cmd, 1, 0, "--diff-algorithm=${diff_algorithm}"; } - if ($diff_indent_heuristic) { - splice @diff_cmd, 1, 0, "--indent-heuristic"; - } if (defined $patch_mode_revision) { push @diff_cmd, get_diff_reference($patch_mode_revision); } @@@ -1081,7 -1044,7 +1040,7 @@@ EOF open $fh, '<', $hunkfile or die sprintf(__("failed to open hunk edit file for reading: %s"), $!); - my @newtext = grep { !/^$comment_line_char/ } <$fh>; + my @newtext = grep { !/^\Q$comment_line_char\E/ } <$fh>; close $fh; unlink $hunkfile; @@@ -1136,7 -1099,6 +1095,7 @@@ sub prompt_yesno while (1) { print colored $prompt_color, $prompt; my $line = prompt_single_character; + return undef unless defined $line; return 0 if $line =~ /^n/i; return 1 if $line =~ /^y/i; }