]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiToMail.pm
lei up: support --all for IMAP folders
[public-inbox.git] / lib / PublicInbox / LeiToMail.pm
index be6e178fe2c3019575afa815ba4faeac3a61c80f..01f083844d136954b86efe48ddab689c5e953c9d 100644 (file)
@@ -109,32 +109,25 @@ sub _mboxcl_common ($$$) {
        $$buf .= 'Content-Length: '.length($$bdy).$crlf.
                'Lines: '.$lines.$crlf.$crlf;
        substr($$bdy, 0, 0, $$buf); # prepend header
-       $_[0] = $bdy;
+       $$bdy .= $crlf;
+       $bdy;
 }
 
 # mboxcl still escapes "From " lines
 sub eml2mboxcl {
        my ($eml, $smsg) = @_;
        my $buf = _mbox_hdr_buf($eml, 'mboxcl', $smsg);
-       my $crlf = $eml->{crlf};
-       if (my $bdy = delete $eml->{bdy}) {
-               $$bdy =~ s/^From />From /gm;
-               _mboxcl_common($buf, $bdy, $crlf);
-       }
-       $$buf .= $crlf;
-       $buf;
+       my $bdy = delete($eml->{bdy}) // \(my $empty = '');
+       $$bdy =~ s/^From />From /gm;
+       _mboxcl_common($buf, $bdy, $eml->{crlf});
 }
 
 # mboxcl2 has no "From " escaping
 sub eml2mboxcl2 {
        my ($eml, $smsg) = @_;
        my $buf = _mbox_hdr_buf($eml, 'mboxcl2', $smsg);
-       my $crlf = $eml->{crlf};
-       if (my $bdy = delete $eml->{bdy}) {
-               _mboxcl_common($buf, $bdy, $crlf);
-       }
-       $$buf .= $crlf;
-       $buf;
+       my $bdy = delete($eml->{bdy}) // \(my $empty = '');
+       _mboxcl_common($buf, $bdy, $eml->{crlf});
 }
 
 sub git_to_mail { # git->cat_async callback
@@ -403,10 +396,11 @@ sub new {
        } elsif ($fmt =~ /\Aimaps?\z/) {
                require PublicInbox::NetWriter;
                require PublicInbox::URIimap;
-               my $net = PublicInbox::NetWriter->new;
+               # {net} may exist from "lei up" for auth
+               my $net = $lei->{net} // PublicInbox::NetWriter->new;
                $net->{quiet} = $lei->{opt}->{quiet};
                my $uri = PublicInbox::URIimap->new($dst)->canonical;
-               $net->add_url($uri);
+               $net->add_url($$uri);
                my $err = $net->errors($lei);
                return $lei->fail($err) if $err;
                $uri->mailbox or return $lei->fail("No mailbox: $dst");
@@ -790,6 +784,4 @@ sub net_merge_all_done {
        $self->wq_close(1);
 }
 
-no warnings 'once'; # the following works even when LeiAuth is lazy-loaded
-*net_merge_all = \&PublicInbox::LeiAuth::net_merge_all;
 1;