Re: [PATCH] notmuch-mutt: check that the search cache Maildir is not a real Maildir WAS: Re: Data loss

Subject: Re: [PATCH] notmuch-mutt: check that the search cache Maildir is not a real Maildir WAS: Re: Data loss

Date: Sat, 27 May 2023 21:10:25 -0300

To: Paul Wise, notmuch

Cc:

From: David Bremner


Paul Wise <pabs3@bonedaddy.net> writes:

> I think a better option is to detect if the search cache Maildir is
> actually a Maildir and doesn't contain any data that could be lost.
>
> I have attached three patches I created to improve notmuch-mutt safety.

If possible, please use git-send-email for future series. 

> +    my %required = map { $_ => 1 } @required;
> +    foreach my $d (@contents) {
> +        -l "$maildir/$d" and die_dir( $maildir, "contains symlink $d");
> +        -d "$maildir/$d" or die_dir( $maildir, "contains non-directory $d");
> +        exists($required[$d]) or die_dir( $maildir, "contains directory $d");
> +    }
> +}

This seems to have introduced a warning, and I think there's a bug.

% notmuch mutt search tag:inbox 
Argument "new" isn't numeric in array or hash lookup at /usr/bin/notmuch-mutt line 70.
Argument "cur" isn't numeric in array or hash lookup at /usr/bin/notmuch-mutt line 70.
Argument "tmp" isn't numeric in array or hash lookup at /usr/bin/notmuch-mutt line 70.

If I remember correctly you need to use {} for hash references in Perl.

>  
>  # create an empty search cache maildir (if missing) or empty existing one
>  sub empty_search_cache_maildir($) {
>      my ($maildir) = (@_);
> +    check_search_cache_maildir($maildir);
>      rmtree($maildir) if (-d $maildir);
>      my $folder = new Mail::Box::Maildir(folder => $maildir,
>  					create => 1);

It might clearer to use the return value from (a possibly renamed
check_search_cache (then the -d can be eliminated / folded into the new
function).
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: