X-Git-Url: https://projects.mako.cc/source/muttjump/blobdiff_plain/105994a8817e4d4618aad762506f8bba11b8ab18..9ef362ae89acc75a6a164e5c213e29f5ab9c1d35:/muttjump diff --git a/muttjump b/muttjump index 53a44bb..82b9ea3 100755 --- a/muttjump +++ b/muttjump @@ -63,6 +63,10 @@ function quote () { echo \'${1//\'/\'\\\'\'}\' } +function quote_regexp () { + echo "$1" | sed 's/[][\^.$|)(*+?}{]/\\&/g' +} + function is_callable () { type $1 >/dev/null 2>&1 } @@ -145,7 +149,7 @@ case $MUTTJUMP_INDEXER in # mairix can't quote special characters (~,/=^) in search words. As a # workaround, split Message-ID in 31-character long AND-linked # substrings. - msgid_mairix=$(echo "$msgid_clean" | sed -e 's/[~,/=^]/=,/g' \ + msgid_mairix=$(echo "$msgid_clean" | sed -e 's/[~,/=^]\+/=,/g' \ -e 's/.\{31\}/&=,/g' -e 's/^\(=,\)\+//g' -e 's/$/=/' \ -e 's/\(=,\|=\)\+$/=/g') orig_msgfiles=$($MAIRIX -r "m:$msgid_mairix") @@ -158,7 +162,7 @@ case $MUTTJUMP_INDEXER in ;; nmzmail) nmzmail_results=$(mktemp -d) - echo "+message-id:$msgid" | $NMZMAIL -r "$nmzmail_results" + echo "+message-id:/^$msgid_quoted$/" | $NMZMAIL -r "$nmzmail_results" orig_msgfiles=$(find "$nmzmail_results" -type l -exec readlink {} \;) rm -rf "$nmzmail_results" ;; @@ -203,7 +207,8 @@ if [ ! -d "$orig_maildir/cur" ] ; then die "directory $(quote "$orig_maildir") doesn't exist or is no Maildir" fi -jump_expr="~i'$msgid'" +msgid_mutt=$(quote_regexp "$msgid_quoted") +jump_expr="~i'$msgid_mutt'" if [ "$MUTTJUMP_MULTI_SCREEN_MODE" = no ] ; then