`stat' can fail due to bugs on our end or ENOMEM, but there's
no autodie support for it. So just die if `unlink' fails, since
the FS wouldn't be usable for tmpfiles in that state, anyways.
-# Copyright (C) 2019-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
package PublicInbox::Tmpfile;
-use strict;
-use v5.10.1;
+use v5.12;
use parent qw(Exporter);
+use autodie qw(unlink);
our @EXPORT = qw(tmpfile);
use Fcntl qw(:DEFAULT);
use Errno qw(EEXIST);
if (defined $sock) {
# add the socket inode number so we can figure out which
# socket it belongs to
- my @st = stat($sock);
+ my @st = stat($sock) or die "stat($sock): $!";
$id .= '-ino:'.$st[1];
}
$id =~ tr!/!^!;
do {
my $fn = File::Spec->tmpdir . "/$id-".time.'-'.rand;
if (sysopen(my $fh, $fn, $fl, 0600)) { # likely
- unlink($fn) or warn "unlink($fn): $!"; # FS broken
+ unlink($fn);
return $fh; # success
}
} while ($! == EEXIST);