\n"; for $header ('received', split(/:/, "\L$opt_d")) { delete $headers{$header}; } @headers = (); for $header ('from', 'to', 'date', 'subject', 'message-id', 'references', 'cc', 'bcc') { $_ = $headers{$header}; if (defined $_) { delete $headers{$header}; push(@headers, "\u$header: " . ($address_headers{$header} ? &mark_address(&clean($_)) : &clean($_))); } } if ($opt_a) { for $header (sort keys %headers) { $_ = $headers{$header}; if (defined $_) { delete $headers{$header}; push(@headers, "\u$header: " . ($address_headers{$header} ? &mark_address(&clean($_)) : &clean($_))); } } } } } elsif ($state eq 'body') { chop; push(@body, $_); } } for $i (0..$#headers) { print $headers[$i], $i == $#headers ? "
\n" : "
\n";
}
while ($body[0] eq '') { shift @body; }
while ($body[-1] eq '') { pop @body; }
# then print
$state = 'base';
for $i (0..$#body) { $_ = $body[$i];
if (s/^>\s*//) {
if (/^>/) {
if ($state eq 'qquote')
{ }
elsif ($state eq 'quote')
{ print "
\n"; }
else
{ print "
\n"; } print &clean($_), "\n"; } elsif ($state eq 'table') { print "\n"; } print "\n"; print "\n";
\n"; $state = 'qquote'; } else { if ($state eq 'quote') { } elsif ($state eq 'qquote') { } else { print "\n"; } print &clean($_), "\n"; $state = 'quote'; } next; } if ($state =~ /^q?quote$/) { print "\n"; $state = 'base'; } if (/[^\s.!?] {2,}\S.*[^s.!?] {2,}\S|[^\s.!?] {3,}\S/) { if ($state ne 'table') { print "\n"; $state = 'table'; } print &clean($_), "\n"; next; } elsif ($state eq 'table') { if (/\S/) { print "\n"; $state = 'base'; } else { print "\n"; next; } } if (length) { print &clean($_), "\n"; } else { print "\n"; } } if ($state =~ /^q?quote$/) { print "