simplify some mime things
[apps/madmutt.git] / lib-mime / mime.cpkg
index e953211..332bc1f 100644 (file)
@@ -52,6 +52,17 @@ const char *BodyEncodings[] = {
     "x-uuencoded",
 };
 
+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
@@ -62,6 +73,43 @@ const char *BodyEncodings[] = {
      ** separator.
      */
     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_remove(&NoSpamList, rx);
+        rx_list_add2(&SpamList, &rx);
+        RETURN();
+    };
+
+    void nospam(rx_t rx) {
+        if (!m_strcmp(rx->pattern, "*")) {
+            rx_list_wipe(&SpamList);
+            rx_list_wipe(&NoSpamList);
+            rx_delete(&rx);
+        } else {
+            rx_list_remove(&SpamList, rx);
+            rx_list_add2(&NoSpamList, &rx);
+        }
+        RETURN();
+    };
 };
 
 /****************************************************************************/