X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiToMail.pm;h=851c015bee36847f8e640dbdee0743e76c2afd0f;hb=af0b0fb7a454470a32c452119d0392e0dedb3fe1;hp=5b80eb2706ac0fba9d5f756b178b09638e09f38d;hpb=fee0f2529ece728f59330c8d01d624d32f9eca06;p=public-inbox.git diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm index 5b80eb27..851c015b 100644 --- a/lib/PublicInbox/LeiToMail.pm +++ b/lib/PublicInbox/LeiToMail.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2020 all contributors +# Copyright (C) 2020-2021 all contributors # License: AGPL-3.0+ # Writes PublicInbox::Eml objects atomically to a mbox variant or Maildir @@ -231,10 +231,11 @@ sub _mbox_write_cb ($$$$) { if ($dst eq '/dev/stdout') { $out = $lei->{1}; } else { # TODO: mbox locking (but mairix doesn't...) - if (!$lei->{opt}->{augment} && -f $dst and !unlink($dst)) { + my $mode = -p $dst ? '>' : '+>>'; + if (-f _ && !$lei->{opt}->{augment} and !unlink($dst)) { die "unlink $dst: $!" if $! != ENOENT; } - open $out, '+>>', $dst or die "open $dst: $!"; + open $out, $mode, $dst or die "open $dst: $!"; # Perl does SEEK_END even with O_APPEND :< $seekable = seek($out, 0, SEEK_SET); die "seek $dst: $!\n" if !$seekable && $! != ESPIPE;