]> granicus.if.org Git - php/commitdiff
allow headers hash to handle multiple To: lines
authorWez Furlong <wez@php.net>
Wed, 27 Mar 2002 14:05:56 +0000 (14:05 +0000)
committerWez Furlong <wez@php.net>
Wed, 27 Mar 2002 14:05:56 +0000 (14:05 +0000)
ext/mailparse/rfc2045.c

index 0cd002f2acdaa43b69c5691890e20173f58f17f6..ea4ea309727af264e87f501f4fdf652abc4c6303 100755 (executable)
@@ -758,7 +758,32 @@ static void do_header(struct rfc2045 *p)
                        val++;
                        while(isspace(*val))
                                val++;
-                       add_assoc_string(p->headerhash, t, val, 1);
+
+                       if (strcmp(t, "to") == 0 || strcmp(t, "cc") == 0) {
+                               /* join multiple To: or Cc: lines together, so that
+                                * those addresses are not silently ignored by scripts
+                                * that do not parse headers manually */
+                               zval **existing = NULL;
+
+                               if (SUCCESS == zend_hash_find(Z_ARRVAL_P(p->headerhash), t, strlen(t)+1, (void**)&existing)) {
+                                       int newlen;
+                                       char *newstr;
+
+                                       newlen = strlen(val) + Z_STRLEN_PP(existing) + 3;
+                                       newstr = emalloc(newlen);
+                                       
+                                       strcpy(newstr, Z_STRVAL_PP(existing));
+                                       strcat(newstr, ", ");
+                                       strcat(newstr, val);
+               
+                                       add_assoc_string(p->headerhash, t, newstr, 0);
+                               
+                               } else {
+                                       add_assoc_string(p->headerhash, t, val, 1);
+                               }
+                       } else {
+                               add_assoc_string(p->headerhash, t, val, 1);
+                       }
                }
                if (strcmp(t, "mime-version") == 0)
                {