]> granicus.if.org Git - neomutt/commitdiff
Updated implicit autoview handling from stable.
authorThomas Roessler <roessler@does-not-exist.org>
Thu, 7 Jan 1999 10:45:47 +0000 (10:45 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Thu, 7 Jan 1999 10:45:47 +0000 (10:45 +0000)
attach.c
handler.c
protos.h

index 14171704dbd39dbdd78143aa8f4ef90c8525a87a..a7dffddbd4ace2613d1981a67eb7481f1676965a 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -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;
index 3fda2c23e9fe331a9c63652bf3b17832927ce31b..7392ea402e7c712982b6b957ad75fa9580ada4fd 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -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 ();
 
index 4a673bda6280f21a43088b545ab545674b0e7124..0eed0dde3f5b952ac9ef483476a6dd5968515685 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -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 *);