return @o;
}
-sub analyse_chunk () {
+sub analyse_chunk_core () {
die "plain deletion\n" unless defined $after;
die "plain insertion\n" unless defined $before;
my @before = semiparse $before;
flush STDOUT;
}
+sub analyse_chunk () {
+ for (;;) {
+ eval { analyse_chunk_core(); };
+ return unless length $@;
+ if ($@ =~ m{^missing end of here doc (\S+)\n}) {
+ # fudge this
+ $before .= "\n$1\n";
+ $after .= "\n$1\n";
+ analyse_chunk_core();
+ } else {
+ die $@;
+ }
+ }
+}
+
for ($ifilehead = 0; l_ok $ifilehead; $ifilehead++) {
m{^diff} or next;
while (l_ok $ifilehead and m{^diff|^index|^---|^\Q+++\E}) { $ifilehead++ }