From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 0425D1F934 for ; Mon, 13 Sep 2021 20:53:56 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/6] lei: stop_pager: restore stdout when done Date: Mon, 13 Sep 2021 20:53:51 +0000 Message-Id: <20210913205355.13002-3-e@80x24.org> In-Reply-To: <20210913205355.13002-1-e@80x24.org> References: <20210913205355.13002-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: The reason(s) we had for not restoring stdout haven't been valid since script/lei (and not lei-daemon) spawns the pager, nowadays. --- lib/PublicInbox/LEI.pm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 6d5d3c03..784e679d 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -464,11 +464,11 @@ sub x_it ($$) { # make sure client sees stdout before exit $self->{1}->autoflush(1) if $self->{1}; stop_pager($self); - if ($self->{pkt_op_p}) { # to top lei-daemon + if ($self->{pkt_op_p}) { # worker => lei-daemon $self->{pkt_op_p}->pkt_do('x_it', $code); - } elsif ($self->{sock}) { # to lei(1) client + } elsif ($self->{sock}) { # lei->daemon => lei(1) client send($self->{sock}, "x_it $code", MSG_EOR); - } elsif ($quit == \&CORE::exit) { # an admin command + } elsif ($quit == \&CORE::exit) { # an admin (one-shot) command exit($code >> 8); } # else ignore if client disconnected } @@ -1065,9 +1065,7 @@ sub pgr_err { start_pager($self, { LESS => 'RX' }); # no 'F' so we prompt print { $self->{2} } @msg; $self->{2}->autoflush(1); - my $pgr = delete($self->{pgr}) or return; - $self->{2} = $pgr->[2]; - $self->{1} = $pgr->[1]; + stop_pager($self); send($self->{sock}, 'wait', MSG_EOR); # wait for user to quit pager } @@ -1075,8 +1073,8 @@ sub stop_pager { my ($self) = @_; my $pgr = delete($self->{pgr}) or return; $self->{2} = $pgr->[2]; - # do not restore original stdout, just close it so we error out close(delete($self->{1})) if $self->{1}; + $self->{1} = $pgr->[1]; } sub accept_dispatch { # Listener {post_accept} callback