$dup->{$_} = $lei->{$_} for qw(2 sock);
tie *$pp, 'PublicInbox::ProcessPipe', $pid, $w, \&reap_compress, $dup;
$lei->{1} = $pp;
- die 'BUG: unexpected {ovv}->{lock_path}' if $lei->{ovv}->{lock_path};
- $lei->{ovv}->ovv_out_lk_init;
}
sub decompress_src ($$$) {
my $out = $lei->{1};
if ($dst ne '/dev/stdout') {
if (-p $dst) {
+ $out = undef;
open $out, '>', $dst or die "open($dst): $!";
} elsif (-f _ || !-e _) {
require PublicInbox::MboxLock;
if (($self->{zsfx}) = ($dst =~ /\.($zsfx_allow)\z/)) {
pipe(my ($r, $w)) or die "pipe: $!";
$lei->{zpipe} = [ $r, $w ];
+ $lei->{ovv}->{lock_path} and
+ die 'BUG: unexpected {ovv}->{lock_path}';
+ $lei->{ovv}->ovv_out_lk_init;
+ } elsif (!$self->{seekable} && !$lei->{ovv}->{lock_path}) {
+ $lei->{ovv}->ovv_out_lk_init;
}
$lei->{1} = $out;
undef;
use IO::Uncompress::Gunzip qw(gunzip);
use IO::Compress::Gzip qw(gzip);
use PublicInbox::MboxReader;
+use PublicInbox::LeiToMail;
use PublicInbox::Spawn qw(popen_rd);
+my $exp = {
+ '<qp@example.com>' => eml_load('t/plack-qp.eml'),
+ '<testmessage@example.com>' => eml_load('t/utf8.eml'),
+};
+$exp->{'<qp@example.com>'}->header_set('Status', 'OR');
+$exp->{'<testmessage@example.com>'}->header_set('Status', 'O');
+
test_lei(sub {
lei_ok(qw(import -F eml t/plack-qp.eml));
my $o = "$ENV{HOME}/dst";
ok(!lei(qw(q --import-before bogus -o), "mboxrd:$o"),
'--import-before fails on non-seekable output');
is(do { local $/; <$cat> }, '', 'no output on FIFO');
+ close $cat;
+ $cat = popen_rd(['cat', $o]);
+ lei_ok(qw(q m:qp@example.com -o), "mboxrd:$o");
+ my $buf = do { local $/; <$cat> };
+ open my $fh, '<', \$buf or BAIL_OUT $!;
+ PublicInbox::MboxReader->mboxrd($fh, sub {
+ my ($eml) = @_;
+ $eml->header_set('Status', 'OR');
+ is_deeply($eml, $exp->{'<qp@example.com>'},
+ 'FIFO output works as expected');
+ });
};
lei_ok qw(import -F eml t/utf8.eml), \'for augment test';
}
};
-my $exp = {
- '<qp@example.com>' => eml_load('t/plack-qp.eml'),
- '<testmessage@example.com>' => eml_load('t/utf8.eml'),
-};
-$exp->{'<qp@example.com>'}->header_set('Status', 'OR');
-$exp->{'<testmessage@example.com>'}->header_set('Status', 'O');
for my $sfx ('', '.gz') {
$o = "$ENV{HOME}/dst.mboxrd$sfx";
lei_ok(qw(q -o), "mboxrd:$o", qw(m:qp@example.com));