Merge branch 'pw/unquote-path-in-git-pm'
authorJunio C Hamano <gitster@pobox.com>
Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)
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

1  2 
git-add--interactive.perl
index 0e8543c8652f2ec55dd9bc33d7d0a485d33aa9c7,7ea3591edc056d4405b1f18800ffd2d0b351f93c..28b325d75481b74e8f7b16485e1fc18ad854161c
@@@ -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;
        }