]> granicus.if.org Git - mutt/commitdiff
Some rather cosmetic changes.
authorThomas Roessler <roessler@does-not-exist.org>
Thu, 18 Nov 1999 10:31:09 +0000 (10:31 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Thu, 18 Nov 1999 10:31:09 +0000 (10:31 +0000)
parse.c
rfc2231.c

diff --git a/parse.c b/parse.c
index fed50e30ae7828b723873079aa5925049777870e..70543a9795f1536d88411703e92447dcdce8bbdb 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -145,8 +145,7 @@ static PARAMETER *parse_parameters (const char *s)
     if ((p = strpbrk (s, "=;")) == NULL)
     {
       dprint(1, (debugfile, "parse_parameters: malformed parameter: %s\n", s));
-      rfc2231_decode_parameters (&head);
-      return (head); /* just bail out now */
+      goto bail;
     }
 
     /* if we hit a ; now the parameter has no value, just skip it */
@@ -226,6 +225,8 @@ static PARAMETER *parse_parameters (const char *s)
     while (*s == ';'); /* skip empty parameters */
   }    
 
+  bail:
+
   rfc2231_decode_parameters (&head);
   return (head);
 }
index 1011201cce6fb1f3883bcc595930f120e3ce1299..d9cf122fad55b7fb11dc58e89e83db0b16384bd6 100644 (file)
--- a/rfc2231.c
+++ b/rfc2231.c
@@ -89,7 +89,10 @@ void rfc2231_decode_parameters (PARAMETER **headp)
 
   int encoded;
   int index;
-
+  short dirty = 0;     /* set to 1 when we may have created
+                        * empty parameters.
+                        */
+  
   if (!headp) return;
 
   purge_empty_parameters (headp);
@@ -121,10 +124,12 @@ void rfc2231_decode_parameters (PARAMETER **headp)
       
       s = rfc2231_get_charset (p->value, charset, sizeof (charset));
       rfc2231_decode_one (p->value, s, charset);
-
+      
       *last = p;
       last = &p->next;
       p->next = NULL;
+      
+      dirty = 1;
     }
     else
     {
@@ -147,16 +152,19 @@ void rfc2231_decode_parameters (PARAMETER **headp)
       safe_free ((void **) &p);
 
       rfc2231_list_insert (&conthead, conttmp);
-
     }
   }
 
   if (conthead)
+  {
     rfc2231_join_continuations (last, conthead);
+    dirty = 1;
+  }
   
   *headp = head;
   
-  purge_empty_parameters (headp);
+  if (dirty)
+    purge_empty_parameters (headp);
 }
   
 static struct rfc2231_parameter *rfc2231_new_parameter (void)