From: Rocco Rutte Date: Tue, 31 Mar 2009 12:50:05 +0000 (+0200) Subject: Perform case insensitive string search if pattern is lower case X-Git-Tag: mutt-1-5-20-rel~127^2~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e188c5c49589a4cdf2f459b72b5005e3f0e7762c;p=mutt Perform case insensitive string search if pattern is lower case ...since we do that for regex patterns already. It doesn't work for IMAP server-side searches. --- diff --git a/UPDATING b/UPDATING index 491b40fe..fe5860d4 100644 --- a/UPDATING +++ b/UPDATING @@ -5,6 +5,8 @@ The keys used are: !: modified feature, -: deleted feature, +: new feature hg tip: + + lower case patterns for string searches perform case-insensitive + search as regex patterns do (except IMAP) + $ssl_verify_dates controls whether mutt checks the validity period of SSL certificates + $ssl_verify_hostname controls whether mutt will accept certificates whose diff --git a/doc/manual.xml.head b/doc/manual.xml.head index fde989af..42325117 100644 --- a/doc/manual.xml.head +++ b/doc/manual.xml.head @@ -7006,9 +7006,9 @@ message bodies since a larger amount of input has to be searched. -Please note that string search is an exact case-sensitive search -while a regular expression search with only lower-case letters performs -a case-insensitive search. +As for regular expressions, a lower case string search pattern makes +Mutt perform a case-insensitive search except for IMAP (because for IMAP +Mutt performs server-side searches which don't support case-insensivity). diff --git a/mutt.h b/mutt.h index 87b41785..5ee1f1ba 100644 --- a/mutt.h +++ b/mutt.h @@ -817,6 +817,7 @@ typedef struct pattern_t unsigned int alladdr : 1; unsigned int stringmatch : 1; unsigned int groupmatch : 1; + unsigned int ign_case : 1; /* ignore case for local stringmatch searches */ int min; int max; struct pattern_t *next; diff --git a/pattern.c b/pattern.c index 22ff3691..24753ee1 100644 --- a/pattern.c +++ b/pattern.c @@ -277,6 +277,7 @@ static int eat_regexp (pattern_t *pat, BUFFER *s, BUFFER *err) if (pat->stringmatch) { pat->p.str = safe_strdup (buf.data); + pat->ign_case = mutt_which_case (buf.data) == REG_ICASE; FREE (&buf.data); } else if (pat->groupmatch) @@ -700,7 +701,8 @@ static int eat_date (pattern_t *pat, BUFFER *s, BUFFER *err) static int patmatch (const pattern_t* pat, const char* buf) { if (pat->stringmatch) - return !strstr (buf, pat->p.str); + return pat->ign_case ? !strcasestr (buf, pat->p.str) : + !strstr (buf, pat->p.str); else if (pat->groupmatch) return !mutt_group_match (pat->p.g, buf); else