From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id DE0081FA40 for ; Thu, 9 Nov 2023 10:09:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1699524588; bh=KzPm2OIZtCgo+QM0cDF4eUlRKbVzOApHI+nPyiqTKx0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=F9s8oHfgX/kRRwkpZsfWHj2PZSu1qMWB9trkUQqEPIUGiClDRu8Z4pPug20qwqDUU 7fhOnpacsOed9PB1xrLR1EtgpRD5EpMODl2WSn/2P37i5fXWccmbbuMBkczydql6SL sdS+74CCaph2Bbx6sR9GuLRi0pzHQaxNFyq6T6Lg= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 11/13] xapcmd: get rid of scalar wantarray popen_rd Date: Thu, 9 Nov 2023 10:09:44 +0000 Message-ID: <20231109100946.1440611-12-e@80x24.org> In-Reply-To: <20231109100946.1440611-1-e@80x24.org> References: <20231109100946.1440611-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: We can rely on Process::IO->attached_pid and work towards simplifying popen_rd. --- lib/PublicInbox/Xapcmd.pm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm index c2b66e69..69f0af43 100644 --- a/lib/PublicInbox/Xapcmd.pm +++ b/lib/PublicInbox/Xapcmd.pm @@ -329,8 +329,8 @@ sub progress_pfx ($) { } sub kill_compact { # setup_signals callback - my ($sig, $pidref) = @_; - kill($sig, $$pidref) if defined($$pidref); + my ($sig, $ioref) = @_; + kill($sig, $$ioref->attached_pid // return) if defined($$ioref); } # xapian-compact wrapper @@ -358,18 +358,16 @@ sub compact ($$) { # cb_spawn callback } $pr->("$pfx `".join(' ', @$cmd)."'\n") if $pr; push @$cmd, $src, $dst; - my ($rd, $pid); local @SIG{keys %SIG} = values %SIG; - setup_signals(\&kill_compact, \$pid); - ($rd, $pid) = popen_rd($cmd, undef, $rdr); + setup_signals(\&kill_compact, \my $rd); + $rd = popen_rd($cmd, undef, $rdr); while (<$rd>) { if ($pr) { s/\r/\r$pfx /g; $pr->("$pfx $_"); } } - waitpid($pid, 0); - die "@$cmd failed: \$?=$?\n" if $?; + $rd->close or die "@$cmd failed: \$?=$?\n"; } sub cpdb_loop ($$$;$$) {