Merge branch 'pw/unquote-path-in-git-pm' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -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 c55c612455205a045bbcae134fa6eeb2c2a3a5bb,7ea3591edc056d4405b1f18800ffd2d0b351f93c..daef1c14fb099261a2ee49900c1434def9d7f415
@@@ -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");
@@@ -175,47 -175,6 +175,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 |'
@@@ -1085,7 -1044,7 +1044,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;
  
@@@ -1140,7 -1099,6 +1099,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;
        }