diff --git a/bin/ed b/bin/ed index e7bb26e4..e184bec4 100755 --- a/bin/ed +++ b/bin/ed @@ -780,37 +780,15 @@ sub edInsert { $tmp_chars += length; } - # now that we've got it, figure out what to do with it - - if ($Mode == $INSERT_MODE) { - - shift @lines; # get rid of 0 line - if ($adrs[0] == 0 || $adrs[0] == 1) { - unshift(@lines,@tmp_lines); - $CurrentLineNum = scalar(@tmp_lines); - } else { - @tmp_lines2 = splice(@lines,0,$adrs[0]-1); - unshift(@lines,@tmp_lines); - unshift(@lines,@tmp_lines2); - $CurrentLineNum = $adrs[0] + scalar(@tmp_lines) - 1; - } - unshift @lines, undef; # put 0 line back - - } elsif ($Mode == $APPEND_MODE) { - - shift(@lines); # get rid of 0 line - if ($adrs[0] == 0) { - unshift(@lines,@tmp_lines); - $CurrentLineNum = scalar(@tmp_lines); - } else { - @tmp_lines2 = splice(@lines,0,$adrs[0]); - unshift(@lines,@tmp_lines); - unshift(@lines,@tmp_lines2); - $CurrentLineNum = $adrs[0] + scalar(@tmp_lines); - } - unshift(@lines,undef); # put 0 line back - - } + my $src = $adrs[0]; + $src-- if ($src && $Mode == $INSERT_MODE); + + shift @lines; # get rid of 0 line + @tmp_lines2 = splice @lines, 0, $src; + unshift @lines, @tmp_lines; + unshift @lines, @tmp_lines2; + $CurrentLineNum = $src + scalar(@tmp_lines); + unshift @lines, undef; # put 0 line back if ($tmp_chars) { $NeedToSave = 1;