]> granicus.if.org Git - mutt/commitdiff
Ignore empty MIME parameters.
authorThomas Roessler <roessler@does-not-exist.org>
Wed, 10 Nov 1999 21:35:33 +0000 (21:35 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Wed, 10 Nov 1999 21:35:33 +0000 (21:35 +0000)
rfc2231.c

index e4a7dfdb84898646e3b7dacd2450fb32bc8d30ee..1011201cce6fb1f3883bcc595930f120e3ce1299 100644 (file)
--- a/rfc2231.c
+++ b/rfc2231.c
@@ -56,6 +56,25 @@ static void rfc2231_free_parameter (struct rfc2231_parameter **);
 static void rfc2231_join_continuations (PARAMETER **, struct rfc2231_parameter *);
 static void rfc2231_list_insert (struct rfc2231_parameter **, struct rfc2231_parameter *);
 
+static void purge_empty_parameters (PARAMETER **headp)
+{
+  PARAMETER *p, *q, **last;
+  
+  for (last = headp, p = *headp; p; p = q)
+  {
+    q = p->next;
+    if (!p->attribute || !p->value)
+    {
+      *last = q;
+      p->next = NULL;
+      mutt_free_parameter (&p);
+    }
+    else
+      last = &p->next;
+  }
+}
+
+
 void rfc2231_decode_parameters (PARAMETER **headp)
 {
   PARAMETER *head = NULL;
@@ -70,8 +89,10 @@ void rfc2231_decode_parameters (PARAMETER **headp)
 
   int encoded;
   int index;
-  
+
   if (!headp) return;
+
+  purge_empty_parameters (headp);
   
   for (last = &head, p = *headp; p; p = q)
   {
@@ -134,6 +155,8 @@ void rfc2231_decode_parameters (PARAMETER **headp)
     rfc2231_join_continuations (last, conthead);
   
   *headp = head;
+  
+  purge_empty_parameters (headp);
 }
   
 static struct rfc2231_parameter *rfc2231_new_parameter (void)