X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=script%2Flei;fp=script%2Flei;h=56e9d299593b95c907aaf2a8482ce862a91d5aba;hb=e002b3bef06e9b812e95f67fcf723a1aaf632dd7;hp=76217ab9ba575e4e580aba0a789a67f634619dce;hpb=74c0a24d49855321883f23decd687a1a866df24e;p=public-inbox.git diff --git a/script/lei b/script/lei index 76217ab9..56e9d299 100755 --- a/script/lei +++ b/script/lei @@ -33,6 +33,9 @@ my $exec_cmd = sub { push @rdr, shift(@old), $newfh; } my $do_exec = sub { + while (my ($io, $newfh) = splice(@rdr, 0, 2)) { + open $io, '+<&', $newfh or die "open +<&=: $!"; + } my %env = map { split(/=/, $_, 2) } splice(@argv, $argc); @ENV{keys %env} = values %env; exec(@argv); @@ -42,20 +45,17 @@ my $exec_cmd = sub { $SIG{CHLD} = $sigchld; my $pid = fork // die "fork: $!"; if ($pid == 0) { - while (my ($io, $newfh) = splice(@rdr, 0, 2)) { - open $io, '+<&', $newfh or die "open +<&=: $!"; - } - $do_exec->() if scalar(@$fds); # git-credential, pager + $do_exec->() if $fds->[1]; # git-credential, pager # parent backgrounds on MUA POSIX::setsid() > 0 or die "setsid: $!"; @parent = ($parent); return; # continue $recv_cmd in background } - if (scalar(@$fds)) { + if ($fds->[1]) { $pids{$pid} = undef; } else { - $do_exec->(); # MUA reuses all FDs + $do_exec->(); # MUA reuses stdout } };