]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Spawn.pm
remove "no warnings 'once'" in a few places
[public-inbox.git] / lib / PublicInbox / Spawn.pm
index 9161bb5b2f8dab4f1f50fe4817535d87028907c7..c64812ddf4a3fb01e6bb13f3c1489316a78693c1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2018 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2019 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 #
 # This allows vfork to be used for spawning subprocesses if
@@ -172,13 +172,12 @@ if (defined $vfork_spawn) {
 
 unless (defined $vfork_spawn) {
        require PublicInbox::SpawnPP;
-       no warnings 'once';
-       *pi_fork_exec = *PublicInbox::SpawnPP::pi_fork_exec
+       *pi_fork_exec = \&PublicInbox::SpawnPP::pi_fork_exec
 }
 
 sub which ($) {
        my ($file) = @_;
-       return $file if index($file, '/') == 0;
+       return $file if index($file, '/') >= 0;
        foreach my $p (split(':', $ENV{PATH})) {
                $p .= "/$file";
                return $p if -x $p;
@@ -193,17 +192,7 @@ sub spawn ($;$$) {
        my @env;
        $opts ||= {};
 
-       my %env = $opts->{-env} ? () : %ENV;
-       if ($env) {
-               foreach my $k (keys %$env) {
-                       my $v = $env->{$k};
-                       if (defined $v) {
-                               $env{$k} = $v;
-                       } else {
-                               delete $env{$k};
-                       }
-               }
-       }
+       my %env = $env ? (%ENV, %$env) : %ENV;
        while (my ($k, $v) = each %env) {
                push @env, "$k=$v";
        }