]> granicus.if.org Git - php/commitdiff
@- Fixed bug in imap_fetchheader() where using FT_PREFETCHTEXT didn't return
authorfoobar <sniper@php.net>
Tue, 1 Aug 2000 09:11:46 +0000 (09:11 +0000)
committerfoobar <sniper@php.net>
Tue, 1 Aug 2000 09:11:46 +0000 (09:11 +0000)
@  the body. Bug #4447. (Jani)

ext/imap/php_imap.c

index ee9f29678d9196e3e925738773c0491ef6aad083..122178a04397db46613aa096aa1b9ad27c4ee6f0 100644 (file)
@@ -2621,8 +2621,10 @@ PHP_FUNCTION(imap_fetchheader)
        zval **streamind, **msgno, **flags;
        int ind, ind_type, msgindex;
        pils *imap_le_struct;
+       char *body, *header, *tempstring;
+       unsigned long blen, hlen;
        int myargc = ZEND_NUM_ARGS();
-
+       
        if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &flags) == FAILURE) {
                ZEND_WRONG_PARAM_COUNT();
        }
@@ -2652,8 +2654,18 @@ PHP_FUNCTION(imap_fetchheader)
                php_error(E_WARNING, "Bad message number");
                RETURN_FALSE;
        }
-       
-       RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, NIL, myargc==3 ? Z_LVAL_PP(flags) : NIL), 1);
+
+       if ((myargc == 3) && (Z_LVAL_PP(flags) & FT_PREFETCHTEXT)) {
+               header = mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, &hlen, Z_LVAL_PP(flags));
+               body = mail_fetchtext_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), &blen, Z_LVAL_PP(flags));
+               tempstring = emalloc(hlen+blen+1);
+               strcpy(tempstring,header);
+               strcat(tempstring,body);
+               RETVAL_STRINGL(tempstring,(hlen+blen+1),1);
+               efree(tempstring);
+       } else {
+               RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, NIL, NIL), 1);
+       }
 }
 /* }}} */