diff options
Diffstat (limited to 'mail/elm+ME/files/patch-hdrdecode.c')
-rw-r--r-- | mail/elm+ME/files/patch-hdrdecode.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/mail/elm+ME/files/patch-hdrdecode.c b/mail/elm+ME/files/patch-hdrdecode.c deleted file mode 100644 index 730250394dab..000000000000 --- a/mail/elm+ME/files/patch-hdrdecode.c +++ /dev/null @@ -1,84 +0,0 @@ ---- lib/hdrdecode.c Sat Jul 9 18:03:15 2005 -+++ lib/hdrdecode.c Sun Sep 10 04:57:10 2006 -@@ -173,9 +173,16 @@ - char *encoded = NULL; - struct string *ret = NULL; - charset_t set; -+ char *front, *end; -+ struct string *fstr, *estr; - -- if ('=' != *p++) -+ /* Pasear: front, end are used to solve buffer: abc""=?...?=" problem */ -+ front = p; -+ while (*p && '=' != *p) ++p; -+ if (front != p && '=' == *p && '"' == *(p-1)) *(p-1) = '\0'; -+ if ('=' != *p) - goto fail; -+ *p = '\0'; ++p; - if ('?' != *p++) - goto fail; - sn = p; -@@ -209,8 +216,8 @@ - p++; - if ('=' != *p++) - goto fail; -- if (*p) -- goto fail; -+ if ('"' == *p) ++p; -+ end = p; - - set = MIME_name_to_charset(sn,CHARSET_create); - -@@ -225,6 +232,18 @@ - break; - } - -+ /* Pasear */ -+ if (ret){ -+ estr = ret; -+ fstr = new_string2(system_charset,us_str(front)); -+ fstr = ret = cat_strings(fstr, ret, 0); -+ free_string(&estr); -+ estr = new_string2(system_charset,us_str(end)); -+ ret = cat_strings(ret, estr, 0); -+ free_string(&estr); -+ free_string(&fstr); -+ } -+ - fail: - if (!ret) { - DPRINT(Debug,20,(&Debug, -@@ -341,20 +360,31 @@ - struct string * ret = new_string(defcharset); - char **tokenized = rfc822_tokenize(buffer); - unsigned char * last_char = NULL; -- int i; -+ int i, encoded; -+ char* p; - - for (i = 0; tokenized[i]; i++) { - - struct string * ok = NULL; - int nostore = 0; - -+ /* Pasear: detect if it is a encoded string */ -+ encoded = 0; -+ if ('"' == tokenized[i][0]){ -+ p = tokenized[i]; -+ while (*p && *p != '=') ++p; -+ if (*p && *p == '=' && *(p+1) && *(p+1) == '?' ) -+ encoded = 1; -+ } -+ -+ - if ('(' == tokenized[i][0]) { - /* we need add last space */ - if (last_char) - add_ascii_to_string(ret,last_char); - ok = hdr_comment(tokenized[i],defcharset,demime); - nostore = 1; -- } else if ('"' == tokenized[i][0]) { -+ } else if (!encoded && '"' == tokenized[i][0]) { - /* we need add last space */ - if (last_char) - add_ascii_to_string(ret,last_char); |