From: "Jan N. Klug" <jan.n.k...@rub.de> For those messages, compute a synthetic Message-ID based on the SHA1 of the whole message, in the same way that notmuch would do. See: http://git.notmuchmail.org/git/notmuch/blob/HEAD:/lib/sha1.c
To do the above, rewrite get_message_id() to scan the current message line by line, incrementally computing a SHA1. As a consequence, drop the dependency on Mail::Internet. Signed-off-by: Stefano Zacchiroli <zack at upsilon.cc> --- contrib/notmuch-mutt/README | 4 ++-- contrib/notmuch-mutt/notmuch-mutt | 23 ++++++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/contrib/notmuch-mutt/README b/contrib/notmuch-mutt/README index c661447..0013ed0 100644 --- a/contrib/notmuch-mutt/README +++ b/contrib/notmuch-mutt/README @@ -33,10 +33,10 @@ Requirements To *run* notmuch-mutt you will need Perl with the following libraries: +- Digest::SHA <https://metacpan.org/release/Digest-SHA> + (Debian package: libdigest-sha-perl) - Mail::Box <https://metacpan.org/pod/Mail::Box> (Debian package: libmail-box-perl) -- Mail::Internet <https://metacpan.org/pod/Mail::Internet> - (Debian package: libmailtools-perl) - String::ShellQuote <https://metacpan.org/pod/String::ShellQuote> (Debian package: libstring-shellquote-perl) - Term::ReadLine::Gnu <https://metacpan.org/pod/Term::ReadLine::Gnu> diff --git a/contrib/notmuch-mutt/notmuch-mutt b/contrib/notmuch-mutt/notmuch-mutt index 4969e4b..4d30b0b 100755 --- a/contrib/notmuch-mutt/notmuch-mutt +++ b/contrib/notmuch-mutt/notmuch-mutt @@ -13,11 +13,11 @@ use warnings; use File::Path; use Getopt::Long qw(:config no_getopt_compat); -use Mail::Internet; use Mail::Box::Maildir; use Pod::Usage; use String::ShellQuote; use Term::ReadLine; +use Digest::SHA; my $xdg_cache_dir = "$ENV{HOME}/.cache"; @@ -75,10 +75,23 @@ sub prompt($$) { } sub get_message_id() { - my $mail = Mail::Internet->new(\*STDIN); - my $mid = $mail->head->get("message-id") or return undef; - $mid =~ /^<(.*)>$/; # get message-id value - return $1; + my $mid = undef; + my $sha = Digest::SHA->new(1); # SHA1 hashing + + while(<STDIN>) { # scan message line by line, looking for mid + if ($_ =~ /^Message-ID:\s*<(.*)>$/i) { + $mid = $1; + last; # message-id found, abort scan + } + $sha->add($_); # update hash + } + + # Generate message-id from hash if none was found, in the same way + # that notmuch would do. + # See: http://git.notmuchmail.org/git/notmuch/blob/HEAD:/lib/sha1.c + $mid ||= "notmuch-sha1-".$sha->hexdigest; + + return $mid; } sub search_action($$$@) { -- 2.1.4