X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc1524.c;h=fc0206292976aa7d5a1e2bc6ce0a00212e9885d2;hp=4fe4f2b355222dd09ffaeb2c6435b108fa24752a;hb=75b25db9f40ea7bbd11e63652d5fae591b3f1206;hpb=2a2f2f9a5bad73c883b7f9c9b4166d932b6aaf37 diff --git a/lib-mime/rfc1524.c b/lib-mime/rfc1524.c index 4fe4f2b..fc02062 100644 --- a/lib-mime/rfc1524.c +++ b/lib-mime/rfc1524.c @@ -35,24 +35,7 @@ * rfc1524. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include +#include #include @@ -60,6 +43,43 @@ #include "mime.h" #include "attach.h" +void rfc1524_entry_wipe(rfc1524_entry *p) +{ + p_delete(&p->command); + p_delete(&p->testcommand); + p_delete(&p->composecommand); + p_delete(&p->composetypecommand); + p_delete(&p->editcommand); + p_delete(&p->printcommand); + p_delete(&p->nametemplate); + p_delete(&p->convert); +} + +/* returns 1 if Mutt can't display this type of data, 0 otherwise */ +int rfc1524_mailcap_isneeded(BODY * m) +{ + int tok; + + switch (m->type) { + case TYPEMULTIPART: + case TYPEMESSAGE: + return 0; + + case TYPEAPPLICATION: + return !(mutt_is_application_pgp(m) || mutt_is_application_smime(m)); + + case TYPETEXT: + tok = mime_which_token(m->subtype, -1); + if (tok == MIME_PLAIN + || tok == MIME_RFC822_HEADERS + || tok == MIME_ENRICHED) + return 0; + break; + } + + return 1; +} + /* The command semantics include the following: * %s is the filename that contains the mail body data * %t is the content type, like text/plain @@ -149,7 +169,8 @@ static char *parse_field(char *p, char **field, char **value) *p++ = '\0'; case '\0': m_strrtrim(*field); - m_strrtrim(*value); + if (*value) + m_strrtrim(*value); return p; case '\\': @@ -281,7 +302,7 @@ rfc1524_mailcap_parse(BODY *a, const char *filename, const char *type, ssize_t len = m_strlen(value) + STRING; char *testcmd = p_new(char, len); - strcpy(testcmd, value); + m_strcpy(testcmd, len, value); rfc1524_expand_command(a, a->filename, type, testcmd, len); found = !mutt_system(testcmd); p_delete(&testcmd); @@ -318,7 +339,7 @@ rfc1524_mailcap_parse(BODY *a, const char *filename, const char *type, rfc1524_entry_init(entry); } } /* while (!found && (buf = mutt_read_line ())) */ - fclose (fp); + m_fclose(&fp); error: p_delete(&buf); @@ -354,7 +375,7 @@ int rfc1524_mailcap_lookup (BODY * a, char *type, rfc1524_entry * entry, return 0; } - mutt_check_lookup_list (a, type, SHORT_STRING); + mutt_check_lookup_list (a, type, STRING); while (!found && *curr) { x = 0; @@ -417,9 +438,8 @@ int rfc1524_expand_filename (char *nametemplate, m_strcpy(newfile, nflen, oldfile); } else if (!oldfile) { - mutt_expand_fmt (newfile, nflen, nametemplate, "mutt"); - } - else { /* oldfile && nametemplate */ + m_file_fmt(newfile, nflen, nametemplate, "mutt"); + } else { /* oldfile && nametemplate */ /* first, compare everything left from the "%s"