]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei: default "-f $mfolder" args for common MUAs
authorEric Wong <e@80x24.org>
Sat, 23 Jan 2021 10:27:50 +0000 (10:27 +0000)
committerEric Wong <e@80x24.org>
Sat, 23 Jan 2021 23:45:29 +0000 (23:45 +0000)
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

index ba744ef36de5238845eb18ab6e2269e534e2060a..890be575fe3ad7799761db990c4043be319cb7d6 100644 (file)
@@ -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);