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-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,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 4A1571FA18 for ; Sat, 23 Jan 2021 10:27:56 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 05/10] lei: default "-f $mfolder" args for common MUAs Date: Sat, 23 Jan 2021 10:27:50 +0000 Message-Id: <20210123102755.425-6-e@80x24.org> In-Reply-To: <20210123102755.425-1-e@80x24.org> References: <20210123102755.425-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: At least mail, mailx, mutt, and neomutt follow this convention. Heirloom mailx doesn't support Maildir (our default), but GNU mailutils mail/mailx does. --- lib/PublicInbox/LEI.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index ba744ef3..890be575 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -698,17 +698,21 @@ sub exec_buf ($$) { } sub start_mua { - my ($self, $sock) = @_; + my ($self) = @_; my $mua = $self->{opt}->{'mua-cmd'} // return; my $mfolder = $self->{ovv}->{dst}; - require Text::ParseWords; - my $replaced; - my @cmd = Text::ParseWords::shellwords($mua); - # mutt uses '%f' for open-hook with compressed folders, so we use %f - @cmd = map { $_ eq '%f' ? ($replaced = $mfolder) : $_ } @cmd; + my (@cmd, $replaced); + if ($mua =~ /\A(?:mutt|mailx|mail|neomutt)\z/) { + @cmd = ($mua, '-f'); + # TODO: help wanted: other common FOSS MUAs + } else { + require Text::ParseWords; + my @cmd = Text::ParseWords::shellwords($mua); + # mutt uses '%f' for open-hook with compressed mbox, we follow + @cmd = map { $_ eq '%f' ? ($replaced = $mfolder) : $_ } @cmd; + } push @cmd, $mfolder unless defined($replaced); - $sock //= $self->{sock}; - if ($sock) { # lei(1) client process runs it + if (my $sock = $self->{sock}) { # lei(1) client process runs it send($sock, exec_buf(\@cmd, {}), MSG_EOR); } else { # oneshot $self->{"mua.pid.$self.$$"} = spawn(\@cmd);