Huw Davies : inetcomm: Unfold headers.

Alexandre Julliard julliard at winehq.org
Tue Nov 27 09:54:26 CST 2007


Module: wine
Branch: master
Commit: 03ca389550d97f2c3408bf02eeb818e38b656dd4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=03ca389550d97f2c3408bf02eeb818e38b656dd4

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Nov 26 12:02:35 2007 +0000

inetcomm: Unfold headers.

---

 dlls/inetcomm/mimeole.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index 5d33537..8e4df70 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -228,6 +228,31 @@ static header_t *read_prop(MimeBody *body, char **ptr)
     return ret;
 }
 
+static void unfold_header(char *header, int len)
+{
+    char *start = header, *cp = header;
+
+    do {
+        while(*cp == ' ' || *cp == '\t')
+        {
+            cp++;
+            len--;
+        }
+        if(cp != start)
+            memmove(start, cp, len + 1);
+
+        cp = strstr(start, "\r\n");
+        len -= (cp - start);
+        start = cp;
+        *start = ' ';
+        start++;
+        len--;
+        cp += 2;
+    } while(*cp == ' ' || *cp == '\t');
+
+    *(start - 1) = '\0';
+}
+
 static void read_value(header_t *header, char **cur)
 {
     char *end = *cur, *value;
@@ -243,6 +268,9 @@ static void read_value(header_t *header, char **cur)
     memcpy(value, *cur, len);
     value[len] = '\0';
 
+    unfold_header(value, len);
+    TRACE("value %s\n", debugstr_a(value));
+
     header->value.vt = VT_LPSTR;
     header->value.pszVal = value;
 




More information about the wine-cvs mailing list