Mainly around fork() calls, but some nearby places as well.
sub spawn ($;$$) {
my ($cmd, $env, $opts) = @_;
sub spawn ($;$$) {
my ($cmd, $env, $opts) = @_;
- my $f = which($cmd->[0]);
- defined $f or die "$cmd->[0]: command not found\n";
+ my $f = which($cmd->[0]) // die "$cmd->[0]: command not found\n";
for my $child_fd (0..2) {
my $parent_fd = $opts->{$child_fd};
if (defined($parent_fd) && $parent_fd !~ /\A[0-9]+\z/) {
for my $child_fd (0..2) {
my $parent_fd = $opts->{$child_fd};
if (defined($parent_fd) && $parent_fd !~ /\A[0-9]+\z/) {
- defined(my $fd = fileno($parent_fd)) or
+ my $fd = fileno($parent_fd) //
die "$parent_fd not an IO GLOB? $!";
$parent_fd = $fd;
}
die "$parent_fd not an IO GLOB? $!";
$parent_fd = $fd;
}
my $rlim = [];
foreach my $l (@RLIMITS) {
my $rlim = [];
foreach my $l (@RLIMITS) {
- defined(my $v = $opts->{$l}) or next;
+ my $v = $opts->{$l} // next;
my $r = eval "require BSD::Resource; BSD::Resource::$l();";
unless (defined $r) {
warn "$l undefined by BSD::Resource: $@\n";
my $r = eval "require BSD::Resource; BSD::Resource::$l();";
unless (defined $r) {
warn "$l undefined by BSD::Resource: $@\n";
my $cmd = [ key2script($key), @argv ];
my $pid = PublicInbox::Spawn::spawn($cmd, $env, $spawn_opt);
if (defined $pid) {
my $cmd = [ key2script($key), @argv ];
my $pid = PublicInbox::Spawn::spawn($cmd, $env, $spawn_opt);
if (defined $pid) {
- my $r = waitpid($pid, 0);
- defined($r) or die "waitpid: $!";
+ my $r = waitpid($pid, 0) // die "waitpid: $!";
$r == $pid or die "waitpid: expected $pid, got $r";
}
} else { # localize and run everything in the same process:
$r == $pid or die "waitpid: expected $pid, got $r";
}
} else { # localize and run everything in the same process:
- defined($tail_pid = fork) or die "fork: $!\n";
+ $tail_pid = fork // die "fork: $!";
if ($tail_pid == 0) {
# make sure files exist, first
open my $fh, '>>', $_ for @paths;
if ($tail_pid == 0) {
# make sure files exist, first
open my $fh, '>>', $_ for @paths;
wait_for_tail($tail_pid, scalar @paths);
}
}
wait_for_tail($tail_pid, scalar @paths);
}
}
- defined(my $pid = fork) or die "fork: $!\n";
+ my $pid = fork // die "fork: $!\n";
if ($pid == 0) {
eval { PublicInbox::DS->Reset };
# pretend to be systemd (cf. sd_listen_fds(3))
if ($pid == 0) {
eval { PublicInbox::DS->Reset };
# pretend to be systemd (cf. sd_listen_fds(3))
my ($self, $sig) = @_;
my $pid = delete $self->{pid} or return;
CORE::kill($sig, $pid) if defined $sig;
my ($self, $sig) = @_;
my $pid = delete $self->{pid} or return;
CORE::kill($sig, $pid) if defined $sig;
- my $ret = waitpid($pid, 0);
- defined($ret) or die "waitpid($pid): $!";
+ my $ret = waitpid($pid, 0) // die "waitpid($pid): $!";
$ret == $pid or die "waitpid($pid) != $ret";
}
$ret == $pid or die "waitpid($pid) != $ret";
}
my ($url, $intvl) = @$url_intvl;
pipe(my ($r, $w)) or die "pipe: $!";
my $seed = rand(0xffffffff);
my ($url, $intvl) = @$url_intvl;
pipe(my ($r, $w)) or die "pipe: $!";
my $seed = rand(0xffffffff);
- defined(my $pid = fork) or die "fork: $!";
+ my $pid = fork // die "fork: $!";
if ($pid == 0) {
srand($seed);
eval { Net::SSLeay::randomize() };
if ($pid == 0) {
srand($seed);
eval { Net::SSLeay::randomize() };
$w->blocking($blk);
seek($fh, 0, SEEK_SET) or BAIL_OUT "seek: $!";
truncate($fh, 0) or BAIL_OUT "truncate: $!";
$w->blocking($blk);
seek($fh, 0, SEEK_SET) or BAIL_OUT "seek: $!";
truncate($fh, 0) or BAIL_OUT "truncate: $!";
- defined(my $pid = fork) or BAIL_OUT "fork: $!";
+ my $pid = fork // BAIL_OUT "fork: $!";
if ($pid == 0) {
close $w;
tick; # wait for parent to block on writev
if ($pid == 0) {
close $w;
tick; # wait for parent to block on writev
diag "TEST_STRESS_NPROC=$nproc TEST_STRESS_NR=$nr";
require POSIX;
for my $n (1..$nproc) {
diag "TEST_STRESS_NPROC=$nproc TEST_STRESS_NR=$nr";
require POSIX;
for my $n (1..$nproc) {
- defined(my $pid = fork) or BAIL_OUT "fork: $!";
+ my $pid = fork // BAIL_OUT "fork: $!";
if ($pid == 0) {
my $url = "imap://example.com/INBOX.$$";
my $uidval = time;
if ($pid == 0) {
my $url = "imap://example.com/INBOX.$$";
my $uidval = time;
my $start_worker = sub {
my ($i, $j, $rd, $todo) = @_;
my $start_worker = sub {
my ($i, $j, $rd, $todo) = @_;
- defined(my $pid = fork) or DIE "fork: $!";
+ my $pid = fork // DIE "fork: $!";
if ($pid == 0) {
$worker = $$;
while (1) {
if ($pid == 0) {
$worker = $$;
while (1) {
for my $i (1..$nproc) {
my ($r, $w);
pipe($r, $w) or BAIL_OUT $!;
for my $i (1..$nproc) {
my ($r, $w);
pipe($r, $w) or BAIL_OUT $!;
+ my $pid = fork // BAIL_OUT "fork: $!";
if ($pid == 0) {
close $w;
while (my $i = <$r>) {
if ($pid == 0) {
close $w;
while (my $i = <$r>) {
- defined $pid or BAIL_OUT "fork: $!";
close $r or BAIL_OUT $!;
push @children, [ $w, $pid ];
$w->autoflush(1);
close $r or BAIL_OUT $!;
push @children, [ $w, $pid ];
$w->autoflush(1);