Commit d084dc02 authored by Thomas Roessler's avatar Thomas Roessler

Updated implicit autoview handling from stable.

parent 246198ae
......@@ -320,25 +320,34 @@ static int is_mmnoask (const char *buf)
return (0);
}
int mutt_is_autoview (char *type)
int mutt_is_autoview (BODY *b, const char *type)
{
LIST *t = AutoViewList;
char _type[SHORT_STRING];
int i;
if (option (OPTIMPLICITAUTOVIEW))
return 1;
if (!type)
{
snprintf (_type, sizeof (_type), "%s/%s", TYPE (b), b->subtype);
type = _type;
}
if (is_mmnoask (type))
return 1;
while (t)
if (mutt_needs_mailcap (b))
{
if (option (OPTIMPLICITAUTOVIEW))
return 1;
if (is_mmnoask (type))
return 1;
}
for (; t; t = t->next)
{
i = mutt_strlen (t->data) - 1;
if ((i > 0 && t->data[i-1] == '/' && t->data[i] == '*' &&
mutt_strncasecmp (type, t->data, i) == 0) ||
mutt_strcasecmp (type, t->data) == 0)
return 1;
t = t->next;
}
return 0;
......
......@@ -878,7 +878,7 @@ static void alternative_handler (BODY *a, STATE *s)
while (b)
{
snprintf (buf, sizeof (buf), "%s/%s", TYPE (b), b->subtype);
if (mutt_is_autoview (buf))
if (mutt_is_autoview (b, buf))
{
rfc1524_entry *entry = rfc1524_new_entry ();
......@@ -997,7 +997,7 @@ int mutt_can_decode (BODY *a)
char type[STRING];
snprintf (type, sizeof (type), "%s/%s", TYPE (a), a->subtype);
if (mutt_is_autoview (type))
if (mutt_is_autoview (a, type))
return (rfc1524_mailcap_lookup (a, type, NULL, M_AUTOVIEW));
else if (a->type == TYPETEXT)
return (1);
......@@ -1322,7 +1322,7 @@ void mutt_body_handler (BODY *b, STATE *s)
/* first determine which handler to use to process this part */
snprintf (type, sizeof (type), "%s/%s", TYPE (b), b->subtype);
if (mutt_is_autoview (type))
if (mutt_is_autoview (b, type))
{
rfc1524_entry *entry = rfc1524_new_entry ();
......
......@@ -233,7 +233,7 @@ int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, size_t);
int mutt_get_tmp_attachment (BODY *);
int mutt_index_menu (void);
int mutt_invoke_sendmail (ADDRESS *, ADDRESS *, ADDRESS *, const char *, int);
int mutt_is_autoview (char *);
int mutt_is_autoview (BODY *, const char *);
int mutt_is_mail_list (ADDRESS *);
int mutt_is_message_type(int, const char *);
int mutt_is_list_recipient (int, ADDRESS *, ADDRESS *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment