- $new = _fn_in($self, 'new');
- } while (!link($tmp, $new) && $!{EEXIST});
- my @sn = stat($new) or die "stat $new failed: $!";
- my @st = stat($tmp) or die "stat $tmp failed: $!";
- if ($st[0] == $sn[0] && $st[1] == $sn[1]) {
- unlink($tmp) or warn "Failed to unlink $tmp: $!";
- } else {
- warn "stat($new) and stat($tmp) differ";
- }
+ $new = _fn_in($self, $pid, 'new');
+ } while (!($ok = link($tmp, $new)) && $! == EEXIST);
+ die "link($tmp, $new): $!" unless $ok;
+ unlink($tmp) or warn "Failed to unlink $tmp: $!";