X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Fmime.cpkg;h=1340ad442c242eaf9d571857324d26e5dbd43f53;hp=e953211edbbb1a62102757b5dd39e70b524ad35e;hb=92c3d4c767ddbc0e0c64dd6e132ce10627550580;hpb=98533911b5d5279b6f4574c66f77fbd6c772ac6f diff --git a/lib-mime/mime.cpkg b/lib-mime/mime.cpkg index e953211..1340ad4 100644 --- a/lib-mime/mime.cpkg +++ b/lib-mime/mime.cpkg @@ -52,6 +52,18 @@ const char *BodyEncodings[] = { "x-uuencoded", }; +rx_t *SpamList = NULL, *NoSpamList = NULL; +string_list_t *AutoViewList, *AlternativeOrderList, *MimeLookupList; + +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 +74,82 @@ 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(); + }; + + 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); + } + 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(); + }; + + 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(); + }; }; /****************************************************************************/