about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-01-23 10:27:50 +0000
committerEric Wong <e@80x24.org>2021-01-23 23:45:29 +0000
commit27ea6f3e84dbeb65589dccef22947f17919f2f9c (patch)
treeeaac386fcb9af2ac4807b8466cb49d4becfd249a /lib
parenta172cf093214f642081e88215aeb0381b1f19e11 (diff)
downloadpublic-inbox-27ea6f3e84dbeb65589dccef22947f17919f2f9c.tar.gz
At least mail, mailx, mutt, and neomutt follow this convention.
Heirloom mailx doesn't support Maildir (our default), but GNU
mailutils mail/mailx does.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/LEI.pm20
1 files 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);