From 5dea08c9f947ada8c649274d3e1de4decd01e2a5 Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Thu, 18 Nov 1999 10:31:09 +0000 Subject: [PATCH] Some rather cosmetic changes. --- parse.c | 5 +++-- rfc2231.c | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/parse.c b/parse.c index fed50e30..70543a97 100644 --- 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); } diff --git a/rfc2231.c b/rfc2231.c index 1011201c..d9cf122f 100644 --- 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) -- 2.40.0