diff options
Diffstat (limited to 'lib/PublicInbox/LeiToMail.pm')
-rw-r--r-- | lib/PublicInbox/LeiToMail.pm | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm index f71f74cc..88468c34 100644 --- a/lib/PublicInbox/LeiToMail.pm +++ b/lib/PublicInbox/LeiToMail.pm @@ -503,10 +503,12 @@ sub _do_augment_imap { sub _pre_augment_mbox { my ($self, $lei) = @_; my $dst = $lei->{ovv}->{dst}; - my $out = $lei->{1}; - if ($dst ne '/dev/stdout') { + my $out; + my $devfd = $lei->path_to_fd($dst) // die "bad $dst"; + if ($devfd >= 0) { + $out = $lei->{$devfd}; + } else { # normal-looking path if (-p $dst) { - $out = undef; open $out, '>', $dst or die "open($dst): $!"; } elsif (-f _ || !-e _) { require PublicInbox::MboxLock; @@ -514,12 +516,14 @@ sub _pre_augment_mbox { PublicInbox::MboxLock->defaults; $self->{mbl} = PublicInbox::MboxLock->acq($dst, 1, $m); $out = $self->{mbl}->{fh}; + } else { + die "$dst is not a file or FIFO\n"; } $lei->{old_1} = $lei->{1}; # keep for spawning MUA } # Perl does SEEK_END even with O_APPEND :< $self->{seekable} = seek($out, 0, SEEK_SET); - if (!$self->{seekable} && $! != ESPIPE && $dst ne '/dev/stdout') { + if (!$self->{seekable} && $! != ESPIPE && !defined($devfd)) { die "seek($dst): $!\n"; } if (!$self->{seekable}) { |