X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pattern.c;h=a0457c93194dadc984b6ab5e802506d96e2502a8;hp=f9c0e11e8b05bdaf24462a99c691d47bfd55bce3;hb=be99cd72fc79e2f10aec2b06d62abb16c16aa34d;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1 diff --git a/pattern.c b/pattern.c index f9c0e11..a0457c9 100644 --- a/pattern.c +++ b/pattern.c @@ -16,6 +16,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ +#if HAVE_CONFIG_H +# include "config.h" +#endif + #include "mutt.h" #include "mapping.h" #include "keymap.h" @@ -58,6 +62,7 @@ Flags[] = { 'g', M_CRYPT_SIGN, 0, NULL }, { 'G', M_CRYPT_ENCRYPT, 0, NULL }, { 'h', M_HEADER, M_FULL_MSG, eat_regexp }, + { 'H', M_HORMEL, 0, eat_regexp }, { 'i', M_ID, 0, eat_regexp }, { 'k', M_PGP_KEY, 0, NULL }, { 'L', M_ADDRESS, 0, eat_regexp }, @@ -85,6 +90,7 @@ Flags[] = { 'y', M_XLABEL, 0, eat_regexp }, { 'z', M_SIZE, 0, eat_range }, { '=', M_DUPLICATED, 0, NULL }, + { '$', M_UNREFERENCED, 0, NULL }, { 0 } }; @@ -1005,9 +1011,9 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, return (pat->not ^ match_adrlist (pat->rx, flags & M_MATCH_FULL_ADDRESS, pat->alladdr, 1, h->env->cc)); case M_SUBJECT: - return (pat->not ^ (h->env->subject && regexec (pat->rx, h->env->subject, 0, NULL, 0) == 0)); + return (pat->not ^ (h->env && h->env->subject && regexec (pat->rx, h->env->subject, 0, NULL, 0) == 0)); case M_ID: - return (pat->not ^ (h->env->message_id && regexec (pat->rx, h->env->message_id, 0, NULL, 0) == 0)); + return (pat->not ^ (h->env && h->env->message_id && regexec (pat->rx, h->env->message_id, 0, NULL, 0) == 0)); case M_SCORE: return (pat->not ^ (h->score >= pat->min && (pat->max == M_MAXRANGE || h->score <= pat->max))); @@ -1016,18 +1022,18 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, case M_REFERENCE: return (pat->not ^ match_reference (pat->rx, h->env->references)); case M_ADDRESS: - return (pat->not ^ match_adrlist (pat->rx, flags & M_MATCH_FULL_ADDRESS, + return (pat->not ^ (h->env && match_adrlist (pat->rx, flags & M_MATCH_FULL_ADDRESS, pat->alladdr, 4, h->env->from, - h->env->sender, h->env->to, h->env->cc)); + h->env->sender, h->env->to, h->env->cc))); case M_RECIPIENT: - return (pat->not ^ match_adrlist (pat->rx, flags & M_MATCH_FULL_ADDRESS, - pat->alladdr, 2, h->env->to, h->env->cc)); + return (pat->not ^ (h->env && match_adrlist (pat->rx, flags & M_MATCH_FULL_ADDRESS, + pat->alladdr, 2, h->env->to, h->env->cc))); case M_LIST: - return (pat->not ^ mutt_is_list_recipient (pat->alladdr, h->env->to, h->env->cc)); + return (pat->not ^ (h->env && mutt_is_list_recipient (pat->alladdr, h->env->to, h->env->cc))); case M_PERSONAL_RECIP: - return (pat->not ^ match_user (pat->alladdr, h->env->to, h->env->cc)); + return (pat->not ^ (h->env && match_user (pat->alladdr, h->env->to, h->env->cc))); case M_PERSONAL_FROM: - return (pat->not ^ match_user (pat->alladdr, h->env->from, NULL)); + return (pat->not ^ (h->env && match_user (pat->alladdr, h->env->from, NULL))); case M_COLLAPSED: return (pat->not ^ (h->collapsed && h->num_hidden > 1)); case M_CRYPT_SIGN: @@ -1048,8 +1054,12 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, return (pat->not ^ ((h->security & APPLICATION_PGP) && (h->security & PGPKEY))); case M_XLABEL: return (pat->not ^ (h->env->x_label && regexec (pat->rx, h->env->x_label, 0, NULL, 0) == 0)); + case M_HORMEL: + return (pat->not ^ (h->env->spam && h->env->spam->data && regexec (pat->rx, h->env->spam->data, 0, NULL, 0) == 0)); case M_DUPLICATED: return (pat->not ^ (h->thread && h->thread->duplicate_thread)); + case M_UNREFERENCED: + return (pat->not ^ (h->thread && !h->thread->child)); #ifdef USE_NNTP case M_NEWSGROUPS: return (pat->not ^ (h->env->newsgroups && regexec (pat->rx, h->env->newsgroups, 0, NULL, 0) == 0));