use v5.10.1;
use parent qw(PublicInbox::IPC);
use PublicInbox::Eml;
-use PublicInbox::InboxWritable qw(eml_from_path);
use PublicInbox::LeiStore;
use PublicInbox::LeiOverview;
sub mbox_cb {
my ($eml, $self) = @_;
- my @kw = PublicInbox::LeiStore::mbox_keywords($eml);
+ my $kw = PublicInbox::MboxReader::mbox_keywords($eml);
$eml->header_set($_) for qw(Status X-Status);
- $self->{wcb}->(undef, { kw => \@kw }, $eml);
+ $self->{wcb}->(undef, { kw => $kw }, $eml);
}
sub net_cb { # callback for ->imap_each, ->nntp_each
}
sub mdir_cb {
- my ($kw, $eml, $self) = @_;
+ my ($f, $kw, $eml, $self) = @_;
$self->{wcb}->(undef, { kw => $kw }, $eml);
}
$ifmt = lc $1;
}
if (-f $input) {
- open my $fh, '<', $input or
- return $lei->fail("open $input: $!");
- convert_fh($self, $ifmt, $fh, $input);
+ my $m = $lei->{opt}->{'lock'} //
+ ($ifmt eq 'eml' ? ['none'] :
+ PublicInbox::MboxLock->defaults);
+ my $mbl = PublicInbox::MboxLock->acq($input, 0, $m);
+ convert_fh($self, $ifmt, $mbl->{fh}, $input);
} elsif (-d _) {
PublicInbox::MdirReader::maildir_each_eml($input,
\&mdir_cb, $self);
$opt->{augment} = 1 unless $ovv->{dst} eq '/dev/stdout';
if ($opt->{stdin}) {
@inputs and return $lei->fail("--stdin and @inputs do not mix");
- $lei->check_input_format(undef, 'in-format') or return;
+ $lei->check_input_format(undef) or return;
$self->{0} = $lei->{0};
}
# e.g. Maildir:/home/user/Mail/ or imaps://example.com/INBOX
}
if (-f $input_path) {
+ require PublicInbox::MboxLock;
require PublicInbox::MboxReader;
PublicInbox::MboxReader->can($ifmt) or return
$lei->fail("$ifmt not supported");
elsif (-d _) { push @d, $input }
else { return $lei->fail("Unable to handle $input") }
}
- if (@f) { $lei->check_input_format(\@f, 'in-format') or return }
+ if (@f) { $lei->check_input_format(\@f) or return }
if (@d) { # TODO: check for MH vs Maildir, here
require PublicInbox::MdirReader;
}