1 # Copyright (C) 2016 all contributors <meta@public-inbox.org>
2 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
4 package PublicInbox::MsgIter;
8 our @EXPORT = qw(msg_iter);
11 # Workaround Email::MIME versions without
12 # commit dcef9be66c49ae89c7a5027a789bbbac544499ce
13 # ("removing all trailing newlines was too much")
14 # This is necessary for Debian jessie
17 my $ver = $Email::MIME::VERSION;
18 my $extra_nl = 1 if ($ver >= $bad && $ver < $good);
20 # Like Email::MIME::walk_parts, but this is:
22 # * passes depth and indices to the iterator callback
25 my @parts = $mime->subparts;
28 @parts = map { [ $_, 1, ++$i ] } @parts;
29 while (my $p = shift @parts) {
30 my ($part, $depth, @idx) = @$p;
31 my @sub = $part->subparts;
35 @sub = map { [ $_, $depth, @idx, ++$i ] } @sub;
36 @parts = (@sub, @parts);
39 ${$part->{body}} .= $part->{mycrlf};