Use p_new instead of xmalloc()
[apps/madmutt.git] / copy.c
diff --git a/copy.c b/copy.c
index 55a3f4f..55dd192 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -163,8 +163,8 @@ mutt_copy_hdr (FILE* in, FILE* out, off_t off_start, off_t off_end,
       /* note: CH_FROM takes precedence over header weeding. */
       if (!((flags & CH_FROM) && (flags & CH_FORCE_FROM) && this_is_from) &&
           (flags & CH_WEED) &&
-          mutt_matches_ignore (buf, Ignore) &&
-          !mutt_matches_ignore (buf, UnIgnore))
+          string_list_contains(Ignore, buf, "*") &&
+          !string_list_contains(UnIgnore, buf, "*"))
         continue;
       if ((flags & CH_WEED_DELIVERED) &&
           ascii_strncasecmp ("Delivered-To:", buf, 13) == 0)
@@ -826,85 +826,42 @@ static void format_address_header (char **h, address_t * a)
   m_strcat(*h, buflen, "\n");
 }
 
-static int address_header_decode (char **h)
+static int address_header_decode(char **h)
 {
-  char *s = *h;
-  int l;
+    address_t *a;
+    char *p, *s = *h;
 
-  address_t *a = NULL;
+    p = strchr(s, ':');
+    if (!p)
+        return 0;
 
-  switch (tolower ((unsigned char) *s)) {
-  case 'r':
-    {
-      if (ascii_strncasecmp (s, "return-path:", 12) == 0) {
-        l = 12;
-        break;
-      }
-      else if (ascii_strncasecmp (s, "reply-to:", 9) == 0) {
-        l = 9;
+    switch (mime_which_token(s, p - s)) {
+      case MIME_RETURN_PATH:
+      case MIME_REPLY_TO:
+      case MIME_FROM:
+      case MIME_CC:
+      case MIME_BCC:
+      case MIME_SENDER:
+      case MIME_TO:
+      case MIME_MAIL_FOLLOWUP_TO:
+        p++;
         break;
-      }
-      return 0;
-    }
-  case 'f':
-    {
-      if (ascii_strncasecmp (s, "from:", 5))
-        return 0;
-      l = 5;
-      break;
-    }
-  case 'c':
-    {
-      if (ascii_strncasecmp (s, "cc:", 3))
-        return 0;
-      l = 3;
-      break;
 
-    }
-  case 'b':
-    {
-      if (ascii_strncasecmp (s, "bcc:", 4))
-        return 0;
-      l = 4;
-      break;
-    }
-  case 's':
-    {
-      if (ascii_strncasecmp (s, "sender:", 7))
-        return 0;
-      l = 7;
-      break;
-    }
-  case 't':
-    {
-      if (ascii_strncasecmp (s, "to:", 3))
-        return 0;
-      l = 3;
-      break;
-    }
-  case 'm':
-    {
-      if (ascii_strncasecmp (s, "mail-followup-to:", 17))
+      default:
         return 0;
-      l = 17;
-      break;
     }
-  default:
-    return 0;
-  }
 
-  if ((a = rfc822_parse_adrlist (a, s + l)) == NULL)
-    return 0;
-
-  mutt_addrlist_to_local (a);
-  rfc2047_decode_adrlist (a);
-
-  *h = p_dupstr(s, l + 1);
+    a = rfc822_parse_adrlist(a, p);
+    if (!a)
+        return 0;
 
-  format_address_header (h, a);
+    mutt_addrlist_to_local(a);
+    rfc2047_decode_adrlist(a);
 
-  address_list_wipe(&a);
+    *h = p_dupstr(s, p - s);
+    format_address_header(h, a);
+    address_list_wipe(&a);
 
-  p_delete(&s);
-  return 1;
+    p_delete(&s);
+    return 1;
 }