make mutt_match_spam_list a generic rx function: rx_list_match2 that does
[apps/madmutt.git] / lib-mime / rfc822parse.c
index 65b03b4..b03a17a 100644 (file)
@@ -1044,29 +1044,25 @@ mutt_read_rfc822_header(FILE *f, HEADER *hdr, short user_hdrs, short weed)
             break;                    /* end of header */
         }
 
-        if (mutt_match_spam_list(line, SpamList, buf, sizeof(buf))) {
-            if (!rx_list_match(NoSpamList, line)) {
-                /* if spam tag already exists, figure out how to amend it */
-                if (e->spam && *buf) {
-                    if (SpamSep) {
-                        /* If SpamSep defined, append with separator */
-                        mutt_buffer_addstr(e->spam, SpamSep);
-                        mutt_buffer_addstr(e->spam, buf);
-                    } else {
-                        /* else overwrite */
-                        mutt_buffer_reset(e->spam);
-                        mutt_buffer_addstr(e->spam, buf);
-                    }
-                }
-                else if (!e->spam && *buf) {
-                    /* spam tag is new, and match expr is non-empty; copy */
-                    e->spam = mutt_buffer_from(NULL, buf);
-                }
-                else if (!e->spam) {
-                    /* match expr is empty; plug in null string if no existing tag */
-                    e->spam = mutt_buffer_from(NULL, "");
+        if (rx_list_match2(SpamList, line, buf, sizeof(buf))
+        && !rx_list_match(NoSpamList, line))
+        {
+            /* if spam tag already exists, figure out how to amend it */
+            if (e->spam && *buf) {
+                if (SpamSep) {
+                    /* If SpamSep defined, append with separator */
+                    mutt_buffer_addstr(e->spam, SpamSep);
+                    mutt_buffer_addstr(e->spam, buf);
+                } else {
+                    /* else overwrite */
+                    mutt_buffer_reset(e->spam);
+                    mutt_buffer_addstr(e->spam, buf);
                 }
             }
+
+            if (!e->spam) {
+                e->spam = mutt_buffer_from(NULL, buf);
+            }
         }
 
         *p++ = '\0';