} else { # localize and run everything in the same process:
# note: "local *STDIN = *STDIN;" and so forth did not work in
# old versions of perl
+ my $umask = umask;
local %ENV = $env ? (%ENV, %$env) : %ENV;
- local %SIG = %SIG;
+ local @SIG{keys %SIG} = map { undef } values %SIG;
+ local $SIG{FPE} = 'IGNORE'; # Perl default
local $0 = join(' ', @$cmd);
my $orig_io = _prepare_redirects($fhref);
my $cwdfh = $lei_cwdfh;
die "fchdir(restore): $!" if $cwdfh && !chdir($cwdfh);
_undo_redirects($orig_io);
select STDOUT;
+ umask($umask);
}
# slurp the redirects back into user-supplied strings
$ENV{LISTEN_PID} = $$;
$ENV{LISTEN_FDS} = $fds;
}
+ if ($opt->{-C}) { chdir($opt->{-C}) or die "chdir: $!" }
$0 = join(' ', @$cmd);
if ($sub) {
eval { PublicInbox::DS->Reset };