Code

gc: use parse_options
[git.git] / git-add--interactive.perl
index be6881496c88fcffc52031e482bfdd8d03faa66c..ac598f88e62fc8f48aaaac8376ccde63cb3e2643 100755 (executable)
@@ -360,7 +360,9 @@ sub hunk_splittable {
 sub parse_hunk_header {
        my ($line) = @_;
        my ($o_ofs, $o_cnt, $n_ofs, $n_cnt) =
-           $line =~ /^@@ -(\d+)(?:,(\d+)) \+(\d+)(?:,(\d+)) @@/;
+           $line =~ /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
+       $o_cnt = 1 unless defined $o_cnt;
+       $n_cnt = 1 unless defined $n_cnt;
        return ($o_ofs, $o_cnt, $n_ofs, $n_cnt);
 }
 
@@ -372,9 +374,8 @@ sub split_hunk {
        # it can be split, but we would need to take care of
        # overlaps later.
 
-       my ($o_ofs, $o_cnt, $n_ofs, $n_cnt) = parse_hunk_header($text->[0]);
+       my ($o_ofs, undef, $n_ofs) = parse_hunk_header($text->[0]);
        my $hunk_start = 1;
-       my $next_hunk_start;
 
       OUTER:
        while (1) {
@@ -441,8 +442,8 @@ sub split_hunk {
        for my $hunk (@split) {
                $o_ofs = $hunk->{OLD};
                $n_ofs = $hunk->{NEW};
-               $o_cnt = $hunk->{OCNT};
-               $n_cnt = $hunk->{NCNT};
+               my $o_cnt = $hunk->{OCNT};
+               my $n_cnt = $hunk->{NCNT};
 
                my $head = ("@@ -$o_ofs" .
                            (($o_cnt != 1) ? ",$o_cnt" : '') .
@@ -457,7 +458,7 @@ sub split_hunk {
 sub find_last_o_ctx {
        my ($it) = @_;
        my $text = $it->{TEXT};
-       my ($o_ofs, $o_cnt, $n_ofs, $n_cnt) = parse_hunk_header($text->[0]);
+       my ($o_ofs, $o_cnt) = parse_hunk_header($text->[0]);
        my $i = @{$text};
        my $last_o_ctx = $o_ofs + $o_cnt;
        while (0 < --$i) {
@@ -529,8 +530,7 @@ sub coalesce_overlapping_hunks {
 
        for (grep { $_->{USE} } @in) {
                my $text = $_->{TEXT};
-               my ($o_ofs, $o_cnt, $n_ofs, $n_cnt) =
-                   parse_hunk_header($text->[0]);
+               my ($o_ofs) = parse_hunk_header($text->[0]);
                if (defined $last_o_ctx &&
                    $o_ofs <= $last_o_ctx) {
                        merge_hunk($out[-1], $_);
@@ -697,7 +697,7 @@ sub patch_update_cmd {
 
        @hunk = coalesce_overlapping_hunks(@hunk);
 
-       my ($o_lofs, $n_lofs) = (0, 0);
+       my $n_lofs = 0;
        my @result = ();
        for (@hunk) {
                my $text = $_->{TEXT};
@@ -705,9 +705,6 @@ sub patch_update_cmd {
                    parse_hunk_header($text->[0]);
 
                if (!$_->{USE}) {
-                       if (!defined $o_cnt) { $o_cnt = 1; }
-                       if (!defined $n_cnt) { $n_cnt = 1; }
-
                        # We would have added ($n_cnt - $o_cnt) lines
                        # to the postimage if we were to use this hunk,
                        # but we didn't.  So the line number that the next
@@ -719,10 +716,10 @@ sub patch_update_cmd {
                        if ($n_lofs) {
                                $n_ofs += $n_lofs;
                                $text->[0] = ("@@ -$o_ofs" .
-                                             ((defined $o_cnt)
+                                             (($o_cnt != 1)
                                               ? ",$o_cnt" : '') .
                                              " +$n_ofs" .
-                                             ((defined $n_cnt)
+                                             (($n_cnt != 1)
                                               ? ",$n_cnt" : '') .
                                              " @@\n");
                        }
@@ -807,8 +804,6 @@ sub main_loop {
        }
 }
 
-my @z;
-
 refresh();
 status_cmd();
 main_loop();