simplify some mime things
[apps/madmutt.git] / lib-mime / mime.cpkg
index 1e97613..332bc1f 100644 (file)
@@ -54,6 +54,15 @@ const char *BodyEncodings[] = {
 
 rx_t *SpamList = NULL, *NoSpamList = NULL;
 
+static char *mailcap_init(void)
+{
+    /* Default search path from RFC1524 */
+    const char *path = "~/.mailcap:" PKGDATADIR "/mailcap:"
+        SYSCONFDIR "/mailcap:/etc/mailcap:"
+        "/usr/etc/mailcap:/usr/local/etc/mailcap";
+    return m_strdup(getenv("MAILCAPS") ?: path);
+}
+
 @package Mime {
     /*
      ** .pp
@@ -65,9 +74,28 @@ rx_t *SpamList = NULL, *NoSpamList = NULL;
      */
     string_t spam_separator = m_strdup(",");
 
+    /*
+     ** .pp
+     ** This variable specifies which files to consult when attempting to
+     ** display MIME bodies not directly supported by Madmutt.
+     */
+    string_t mailcap_path   = mailcap_init();
+
+    /*
+     ** .pp
+     ** If \fIset\fP, Madmutt will restrict possible characters in mailcap \fT%\fP expandos
+     ** to a well-defined set of safe characters.  This is the safe setting,
+     ** but we are not sure it doesn't break some more advanced MIME stuff.
+     ** .pp
+     ** \fBDON'T CHANGE THIS SETTING UNLESS YOU ARE REALLY SURE WHAT YOU ARE
+     ** DOING!\fP
+     */
+    bool mailcap_sanitize   = 1;
+
     void spam(rx_t rx, const string_t tpl) {
         rx_set_template(rx, tpl);
-        rx_list_append(&SpamList, rx);
+        rx_list_remove(&NoSpamList, rx);
+        rx_list_add2(&SpamList, &rx);
         RETURN();
     };
 
@@ -77,7 +105,8 @@ rx_t *SpamList = NULL, *NoSpamList = NULL;
             rx_list_wipe(&NoSpamList);
             rx_delete(&rx);
         } else {
-            rx_list_append(&NoSpamList, rx);
+            rx_list_remove(&SpamList, rx);
+            rx_list_add2(&NoSpamList, &rx);
         }
         RETURN();
     };