tmp
[apps/madmutt.git] / lib-mime / mime.cpkg
index 332bc1f..b936a4c 100644 (file)
@@ -53,6 +53,8 @@ const char *BodyEncodings[] = {
 };
 
 rx_t *SpamList = NULL, *NoSpamList = NULL;
+string_list_t *AutoViewList, *AlternativeOrderList, *MimeLookupList;
+string_list_t *Ignore, *UnIgnore, *HeaderOrderList;
 
 static char *mailcap_init(void)
 {
@@ -63,7 +65,7 @@ static char *mailcap_init(void)
     return m_strdup(getenv("MAILCAPS") ?: path);
 }
 
-@package Mime {
+@package mod_mime {
     /*
      ** .pp
      ** ``$spam_separator'' controls what happens when multiple spam headers
@@ -110,87 +112,78 @@ static char *mailcap_init(void)
         }
         RETURN();
     };
-};
-
-/****************************************************************************/
-/* rfc822 header parameters                                                 */
-/****************************************************************************/
-
-char *parameter_getval(parameter_t *parm, const char *s)
-{
-    while (parm) {
-        if (!ascii_strcasecmp(parm->attribute, s))
-            return parm->value;
-        parm = parm->next;
-    }
-    return NULL;
-}
 
-void parameter_setval(parameter_t **p, const char *attribute, const char *value)
-{
-    while (*p) {
-        if (!ascii_strcasecmp(attribute, (*p)->attribute)) {
-            if (value) {
-                m_strreplace(&(*p)->value, value);
-            } else {
-                parameter_t *q = parameter_list_pop(p);
-                parameter_delete(&q);
-            }
-            return;
+    void auto_view(string_t s) {
+        string_list_add(&AutoViewList, s);
+        RETURN();
+    };
+    void unauto_view(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_remove(&AutoViewList, s);
+        } else {
+            string_list_wipe(&AutoViewList);
         }
-        p = &(*p)->next;
-    }
-
-    if (value) {
-        (*p) = parameter_new();
-        (*p)->attribute = m_strdup(attribute);
-        (*p)->value = m_strdup(value);
-    }
-}
+        RETURN();
+    };
 
-void parameter_delval(parameter_t **p, const char *attribute)
-{
-    while (*p) {
-        if (!ascii_strcasecmp(attribute, (*p)->attribute)) {
-            parameter_t *q = parameter_list_pop(p);
-            parameter_delete(&q);
-            return;
+    void alternative_order(string_t s) {
+        string_list_add(&AlternativeOrderList, s);
+        RETURN();
+    };
+    void unalternative_order(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_remove(&AlternativeOrderList, s);
+        } else {
+            string_list_wipe(&AlternativeOrderList);
         }
+        RETURN();
+    };
 
-        p = &(*p)->next;
-    }
-}
-
-int parameter_equal(const parameter_t *p1, const parameter_t *p2)
-{
-    while (p1 && p2) {
-        if (m_strcmp(p1->attribute, p2->attribute)
-        ||  m_strcmp(p1->value, p2->value))
-            return 0;
-
-        p1 = p1->next;
-        p2 = p2->next;
-    }
-
-    if (p1 || p2)
-        return 0;
-
-    return 1;
-}
-
-void parameter_set_boundary(parameter_t **parm)
-{
-    char rs[BOUNDARYLEN + 1];
-    int i;
-
-    for (i = 0; i < BOUNDARYLEN; i++) {
-        rs[i] = __m_b64chars[lrand48() % sizeof(__m_b64chars)];
-    }
-    rs[BOUNDARYLEN] = '\0';
+    void lookup(string_t s) {
+        string_list_add(&MimeLookupList, s);
+        RETURN();
+    };
+    void unlookup(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_remove(&MimeLookupList, s);
+        } else {
+            string_list_wipe(&MimeLookupList);
+        }
+        RETURN();
+    };
 
-    parameter_setval(parm, "boundary", rs);
-}
+    void hdr_order(string_t s) {
+        string_list_add(&HeaderOrderList, s);
+        RETURN();
+    };
+    void unhdr_order(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_remove(&HeaderOrderList, s);
+        } else {
+            string_list_wipe(&HeaderOrderList);
+        }
+        RETURN();
+    };
 
+    void ignore(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_remove(&UnIgnore, s);
+        } else {
+            string_list_wipe(&UnIgnore);
+        }
+        string_list_add(&Ignore, s);
+        RETURN();
+    };
+    void unignore(string_t s) {
+        if (m_strcmp(s, "*")) {
+            string_list_add(&UnIgnore, s);
+            string_list_remove(&Ignore, s);
+        } else {
+            string_list_wipe(&Ignore);
+        }
+        RETURN();
+    };
+};
 
 /****************************************************************************/
 /* XXX                                                                      */
@@ -215,12 +208,6 @@ void envelope_wipe(ENVELOPE *p)
     p_delete(&p->date);
     p_delete(&p->x_label);
     p_delete(&p->organization);
-#ifdef USE_NNTP
-    p_delete(&p->newsgroups);
-    p_delete(&p->xref);
-    p_delete(&p->followup_to);
-    p_delete(&p->x_comment_to);
-#endif
 
     mutt_buffer_free (&p->spam);
     string_list_wipe(&p->references);
@@ -230,9 +217,7 @@ void envelope_wipe(ENVELOPE *p)
 
 void body_wipe(BODY *b)
 {
-    if (b->parameter)
-        parameter_list_wipe(&b->parameter);
-
+    b->parameter = NULL;
     if (b->unlink && b->filename) {
         unlink (b->filename);
     }
@@ -261,7 +246,6 @@ void header_wipe(HEADER *h)
     p_delete(&h->maildir_flags);
     p_delete(&h->tree);
     p_delete(&h->path);
-    string_list_wipe(&h->chain);
     p_delete(&h->data);
 }