On Thu, Jul 23 2020, David Bremner wrote:

> From: Kevin McCarthy <ke...@8t8.us>
> Subject: Bug#966100: notmuch-mutt: symlinking now fails for indexed mailboxes 
> with a space in the name
> To: Debian Bug Tracking System <sub...@bugs.debian.org>
> Date: Wed, 22 Jul 2020 19:06:27 -0700
>
> Package: notmuch-mutt
> Version: 0.30-1
> Severity: important
> Tags: upstream
>
> Dear Maintainer,

Hi Kevin, others.

>
> After recently updating from stable to testing, notmuch-mutt search
> and thread commands stopped including results from my "Sent Items"
> maildir folder.  There are broken links in the results folder, and
> symlink error messages in the terminal window after exiting mutt.
>
> I tracked this down to upstream commit
> <https://git.notmuchmail.org/git?p=notmuch;a=commitdiff;h=1fcf068e331b9b79e14f79c8b126711fc3d72cbb>
> but unfortunately my shell-fu is not good enough to understand exactly
> why the new version isn't working.
>
> If I manually swap revert the diff then my Sent Items results start
> working again.  So somehow the backslash-escaping works for xargs but
> not for the shell while/read loop.
>
> Here's the part of the commit above causing the breakage.
>
> - - - - - - - - -
> diff --git a/contrib/notmuch-mutt/notmuch-mutt 
> b/contrib/notmuch-mutt/notmuch-mutt
> index 
> 0e46a8c1b95e76163eed68694aa5a1a973c8b371..d33223bdd88e776acf79ae8b4ba2703ff1e6cc58
>  100755 (executable)
> --- a/contrib/notmuch-mutt/notmuch-mutt
> +++ b/contrib/notmuch-mutt/notmuch-mutt
> @@ -50,7 +50,7 @@ sub search($$$) {
>      empty_maildir($maildir);
>      system("notmuch search --output=files $dup_option $query"
>            . " | sed -e 's: :\\\\ :g'"
> -          . " | xargs -r -I searchoutput ln -s searchoutput $maildir/cur/");
> +          . " | while IFS= read -r searchoutput; do ln -s \$searchoutput 
> $maildir/cur/; done");
>  }

This could work, cannot test (compiles OK w/ perl -c when I outcommented
packages I don't have.

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

diff --git a/contrib/notmuch-mutt/notmuch-mutt 
b/contrib/notmuch-mutt/notmuch-mutt
index d33223bd..b6c2d7b5 100755
--- a/contrib/notmuch-mutt/notmuch-mutt
+++ b/contrib/notmuch-mutt/notmuch-mutt
@@ -12,6 +12,7 @@ use strict;
 use warnings;
 
 use File::Path;
+use File::Basename;
 use Getopt::Long qw(:config no_getopt_compat);
 use Mail::Header;
 use Mail::Box::Maildir;
@@ -41,16 +42,19 @@ sub search($$$) {
     my ($maildir, $remove_dups, $query) = @_;
     my $dup_option = "";
 
-    $query = shell_quote($query);
-
+    my @args = qw/notmuch search --output=files/;
     if ($remove_dups) {
-      $dup_option = "--duplicate=1";
+       push @args, "--duplicate=1";
     }
+    push @args, $query;
 
     empty_maildir($maildir);
-    system("notmuch search --output=files $dup_option $query"
-          . " | sed -e 's: :\\\\ :g'"
-          . " | while IFS= read -r searchoutput; do ln -s \$searchoutput 
$maildir/cur/; done");
+    open my $p, '-|', @args or die "Running @args failed: $!\n";
+    while (<$p>) {
+       chomp;
+       my $bn = basename $_;
+       symlink $_, "$maildir/cur/$bn";  # fixme: check (report?) error
+    }
 }
 
 sub prompt($$) {

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--


>  
>  sub prompt($$) {
> - - - - - - - - -
>
>
> -- System Information:
> Debian Release: bullseye/sid
>   APT prefers testing
>   APT policy: (500, 'testing')
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 5.7.0-1-amd64 (SMP w/16 CPU threads)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not 
> set
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
>
> Versions of packages notmuch-mutt depends on:
> ii  libmail-box-perl           3.008-1
> ii  libmailtools-perl          2.21-1
> ii  libstring-shellquote-perl  1.04-1
> ii  libterm-readline-gnu-perl  1.36-2+b1
> ii  notmuch                    0.30-1
> ii  perl                       5.30.3-4
>
> Versions of packages notmuch-mutt recommends:
> pn  mutt  <none>
>
> notmuch-mutt suggests no packages.
>
> -- no debconf information
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org

Reply via email to