export qw{clean_temp_files};
sub clean_temp_files () {
+ no autodie qw{kill opendir unlink};
my $d;
- eval { opendir $d, $TMP; };
- if ($@) {
- if ($@->isa("autodie::exception") && $@->errno == ENOENT) { return; }
- else { die $@; }
+ unless (opendir $d, $TMP) {
+ if ($! == ENOENT) { return }
+ else { die "failed to read temporary directory `$TMP': $!"; }
}
my $now = time;
FILE: while (my $name = readdir $d) {
my $pid = $1;
next FILE if kill 0, $pid;
my $f = "$TMP/$name";
- my $st = stat $name;
+ my $st = stat $f;
+ if (!defined $st) {
+ if ($! == ENOENT) { next FILE; }
+ else { die "failed to read file metadata for `$f': $!"; }
+ }
next FILE if $now - $st->mtime() < 300;
- unlink $f;
+ unless (unlink $f) {
+ if ($! == ENOENT) { next FILE; }
+ else { die "failed to delete file `$f': $!"; }
+ }
}
closedir $d;
}
###----- That's all, folks --------------------------------------------------
-clean_temp_files;
-
1;