diff options
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r-- | ext/imap/php_imap.c | 1684 |
1 files changed, 850 insertions, 834 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index e91dbfad00..2ce1070838 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -1,6 +1,6 @@ /* +----------------------------------------------------------------------+ - | PHP Version 5 | + | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2016 The PHP Group | +----------------------------------------------------------------------+ @@ -40,7 +40,7 @@ #include "ext/standard/php_string.h" #include "ext/standard/info.h" #include "ext/standard/file.h" -#include "ext/standard/php_smart_str.h" +#include "zend_smart_str.h" #include "ext/pcre/php_pcre.h" #ifdef ERROR @@ -74,10 +74,10 @@ MAILSTREAM DEFAULTPROTO; # define PHP_IMAP_EXPORT #endif -static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC); -static void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC); -static char* _php_imap_parse_address(ADDRESS *addresslist, zval *paddress TSRMLS_DC); -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC); +static void _php_make_header_object(zval *myzvalue, ENVELOPE *en); +static void _php_imap_add_body(zval *arg, BODY *body); +static zend_string* _php_imap_parse_address(ADDRESS *addresslist, zval *paddress); +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist); /* the gets we use */ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md); @@ -574,7 +574,7 @@ zend_module_entry imap_module_entry = { PHP_RINIT(imap), PHP_RSHUTDOWN(imap), PHP_MINFO(imap), - NO_VERSION_YET, + PHP_IMAP_VERSION, PHP_MODULE_GLOBALS(imap), PHP_GINIT(imap), NULL, @@ -592,13 +592,13 @@ static int le_imap; #define PHP_IMAP_CHECK_MSGNO(msgindex) \ if ((msgindex < 1) || ((unsigned) msgindex > imap_le_struct->imap_stream->nmsgs)) { \ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message number"); \ + php_error_docref(NULL, E_WARNING, "Bad message number"); \ RETURN_FALSE; \ } \ /* {{{ mail_close_it */ -static void mail_close_it(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void mail_close_it(zend_resource *rsrc) { pils *imap_le_struct = (pils *)rsrc->ptr; @@ -622,7 +622,7 @@ static void mail_close_it(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ add_assoc_object */ -static int add_assoc_object(zval *arg, char *key, zval *tmp TSRMLS_DC) +static zval *add_assoc_object(zval *arg, char *key, zval *tmp) { HashTable *symtable; @@ -631,13 +631,13 @@ static int add_assoc_object(zval *arg, char *key, zval *tmp TSRMLS_DC) } else { symtable = Z_ARRVAL_P(arg); } - return zend_hash_update(symtable, key, strlen(key)+1, (void *) &tmp, sizeof(zval *), NULL); + return zend_hash_str_update(symtable, key, strlen(key), tmp); } /* }}} */ /* {{{ add_next_index_object */ -static inline int add_next_index_object(zval *arg, zval *tmp TSRMLS_DC) +static inline zval *add_next_index_object(zval *arg, zval *tmp) { HashTable *symtable; @@ -647,7 +647,7 @@ static inline int add_next_index_object(zval *arg, zval *tmp TSRMLS_DC) symtable = Z_ARRVAL_P(arg); } - return zend_hash_next_index_insert(symtable, (void *) &tmp, sizeof(zval *), NULL); + return zend_hash_next_index_insert(symtable, tmp); } /* }}} */ @@ -759,25 +759,23 @@ void mail_free_messagelist(MESSAGELIST **msglist, MESSAGELIST **tail) void mail_getquota(MAILSTREAM *stream, char *qroot, QUOTALIST *qlist) { - zval *t_map, *return_value; - TSRMLS_FETCH(); + zval t_map, *return_value; return_value = *IMAPG(quota_return); /* put parsing code here */ for(; qlist; qlist = qlist->next) { - MAKE_STD_ZVAL(t_map); - array_init(t_map); + array_init(&t_map); if (strncmp(qlist->name, "STORAGE", 7) == 0) { /* this is to add backwards compatibility */ - add_assoc_long_ex(return_value, "usage", sizeof("usage"), qlist->usage); - add_assoc_long_ex(return_value, "limit", sizeof("limit"), qlist->limit); + add_assoc_long_ex(return_value, "usage", sizeof("usage") - 1, qlist->usage); + add_assoc_long_ex(return_value, "limit", sizeof("limit") - 1, qlist->limit); } - add_assoc_long_ex(t_map, "usage", sizeof("usage"), qlist->usage); - add_assoc_long_ex(t_map, "limit", sizeof("limit"), qlist->limit); - add_assoc_zval_ex(return_value, qlist->name, strlen(qlist->name)+1, t_map); + add_assoc_long_ex(&t_map, "usage", sizeof("usage") - 1, qlist->usage); + add_assoc_long_ex(&t_map, "limit", sizeof("limit") - 1, qlist->limit); + add_assoc_zval_ex(return_value, qlist->name, strlen(qlist->name), &t_map); } } /* }}} */ @@ -789,11 +787,10 @@ void mail_getquota(MAILSTREAM *stream, char *qroot, QUOTALIST *qlist) */ void mail_getacl(MAILSTREAM *stream, char *mailbox, ACLLIST *alist) { - TSRMLS_FETCH(); /* walk through the ACLLIST */ for(; alist; alist = alist->next) { - add_assoc_stringl(IMAPG(imap_acl_list), alist->identifier, alist->rights, strlen(alist->rights), 1); + add_assoc_stringl(IMAPG(imap_acl_list), alist->identifier, alist->rights, strlen(alist->rights)); } } /* }}} */ @@ -1080,7 +1077,7 @@ PHP_RSHUTDOWN_FUNCTION(imap) if (EG(error_reporting) & E_NOTICE) { ecur = IMAPG(imap_errorstack); while (ecur != NIL) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s (errflg=%ld)", ecur->LTEXT, ecur->errflg); + php_error_docref(NULL, E_NOTICE, "%s (errflg=%ld)", ecur->LTEXT, ecur->errflg); ecur = ecur->next; } } @@ -1092,7 +1089,7 @@ PHP_RSHUTDOWN_FUNCTION(imap) if (EG(error_reporting) & E_NOTICE) { acur = IMAPG(imap_alertstack); while (acur != NIL) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s", acur->LTEXT); + php_error_docref(NULL, E_NOTICE, "%s", acur->LTEXT); acur = acur->next; } } @@ -1145,16 +1142,15 @@ PHP_MINFO_FUNCTION(imap) */ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) { - char *mailbox, *user, *passwd; - int mailbox_len, user_len, passwd_len; - long retries = 0, flags = NIL, cl_flags = NIL; + zend_string *mailbox, *user, *passwd; + zend_long retries = 0, flags = NIL, cl_flags = NIL; MAILSTREAM *imap_stream; pils *imap_le_struct; zval *params = NULL; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "pss|lla", &mailbox, &mailbox_len, &user, &user_len, - &passwd, &passwd_len, &flags, &retries, ¶ms) == FAILURE) { + if (zend_parse_parameters(argc, "PSS|lla", &mailbox, &user, + &passwd, &flags, &retries, ¶ms) == FAILURE) { return; } @@ -1169,32 +1165,32 @@ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) } if (params) { - zval **disabled_auth_method; + zval *disabled_auth_method; - if (zend_hash_find(HASH_OF(params), "DISABLE_AUTHENTICATOR", sizeof("DISABLE_AUTHENTICATOR"), (void **)&disabled_auth_method) == SUCCESS) { - switch (Z_TYPE_PP(disabled_auth_method)) { + if ((disabled_auth_method = zend_hash_str_find(Z_ARRVAL_P(params), "DISABLE_AUTHENTICATOR", sizeof("DISABLE_AUTHENTICATOR") - 1)) != NULL) { + switch (Z_TYPE_P(disabled_auth_method)) { case IS_STRING: - if (Z_STRLEN_PP(disabled_auth_method) > 1) { - mail_parameters (NIL, DISABLE_AUTHENTICATOR, (void *)Z_STRVAL_PP(disabled_auth_method)); + if (Z_STRLEN_P(disabled_auth_method) > 1) { + mail_parameters(NIL, DISABLE_AUTHENTICATOR, (void *)Z_STRVAL_P(disabled_auth_method)); } break; case IS_ARRAY: { - zval **z_auth_method; + zval *z_auth_method; int i; - int nelems = zend_hash_num_elements(Z_ARRVAL_PP(disabled_auth_method)); + int nelems = zend_hash_num_elements(Z_ARRVAL_P(disabled_auth_method)); if (nelems == 0 ) { break; } for (i = 0; i < nelems; i++) { - if (zend_hash_index_find(Z_ARRVAL_PP(disabled_auth_method), i, (void **) &z_auth_method) == SUCCESS) { - if (Z_TYPE_PP(z_auth_method) == IS_STRING) { - if (Z_STRLEN_PP(z_auth_method) > 1) { - mail_parameters (NIL, DISABLE_AUTHENTICATOR, (void *)Z_STRVAL_PP(z_auth_method)); + if ((z_auth_method = zend_hash_index_find(Z_ARRVAL_P(disabled_auth_method), i)) != NULL) { + if (Z_TYPE_P(z_auth_method) == IS_STRING) { + if (Z_STRLEN_P(z_auth_method) > 1) { + mail_parameters(NIL, DISABLE_AUTHENTICATOR, (void *)Z_STRVAL_P(z_auth_method)); } } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid argument, expect string or array of strings"); + php_error_docref(NULL, E_WARNING, "Invalid argument, expect string or array of strings"); } } } @@ -1202,7 +1198,7 @@ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) break; case IS_LONG: default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid argument, expect string or array of strings"); + php_error_docref(NULL, E_WARNING, "Invalid argument, expect string or array of strings"); break; } } @@ -1219,27 +1215,27 @@ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) } /* local filename, need to perform open_basedir check */ - if (mailbox[0] != '{' && php_check_open_basedir(mailbox TSRMLS_CC)) { + if (ZSTR_VAL(mailbox)[0] != '{' && php_check_open_basedir(ZSTR_VAL(mailbox))) { RETURN_FALSE; } - IMAPG(imap_user) = estrndup(user, user_len); - IMAPG(imap_password) = estrndup(passwd, passwd_len); + IMAPG(imap_user) = estrndup(ZSTR_VAL(user), ZSTR_LEN(user)); + IMAPG(imap_password) = estrndup(ZSTR_VAL(passwd), ZSTR_LEN(passwd)); #ifdef SET_MAXLOGINTRIALS if (argc >= 5) { if (retries < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING ,"Retries must be greater or equal to 0"); + php_error_docref(NULL, E_WARNING ,"Retries must be greater or equal to 0"); } else { mail_parameters(NIL, SET_MAXLOGINTRIALS, (void *) retries); } } #endif - imap_stream = mail_open(NIL, mailbox, flags); + imap_stream = mail_open(NIL, ZSTR_VAL(mailbox), flags); if (imap_stream == NIL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't open stream %s", mailbox); + php_error_docref(NULL, E_WARNING, "Couldn't open stream %s", ZSTR_VAL(mailbox)); efree(IMAPG(imap_user)); IMAPG(imap_user) = 0; efree(IMAPG(imap_password)); IMAPG(imap_password) = 0; RETURN_FALSE; @@ -1249,7 +1245,7 @@ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) imap_le_struct->imap_stream = imap_stream; imap_le_struct->flags = cl_flags; - ZEND_REGISTER_RESOURCE(return_value, imap_le_struct, le_imap); + RETURN_RES(zend_register_resource(imap_le_struct, le_imap)); } /* }}} */ @@ -1266,18 +1262,19 @@ PHP_FUNCTION(imap_open) PHP_FUNCTION(imap_reopen) { zval *streamind; - char *mailbox; - int mailbox_len; - long options = 0, retries = 0; + zend_string *mailbox; + zend_long options = 0, retries = 0; pils *imap_le_struct; long flags=NIL; long cl_flags=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|ll", &streamind, &mailbox, &mailbox_len, &options, &retries) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS|ll", &streamind, &mailbox, &options, &retries) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (options) { flags = options; @@ -1293,14 +1290,14 @@ PHP_FUNCTION(imap_reopen) } #endif /* local filename, need to perform open_basedir check */ - if (mailbox[0] != '{' && php_check_open_basedir(mailbox TSRMLS_CC)) { + if (ZSTR_VAL(mailbox)[0] != '{' && php_check_open_basedir(ZSTR_VAL(mailbox))) { RETURN_FALSE; } - imap_le_struct->imap_stream = mail_open(imap_le_struct->imap_stream, mailbox, flags); + imap_le_struct->imap_stream = mail_open(imap_le_struct->imap_stream, ZSTR_VAL(mailbox), flags); if (imap_le_struct->imap_stream == NIL) { - zend_list_delete(Z_RESVAL_P(streamind)); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't re-open stream"); + zend_list_delete(Z_RES_P(streamind)); + php_error_docref(NULL, E_WARNING, "Couldn't re-open stream"); RETURN_FALSE; } RETURN_TRUE; @@ -1312,42 +1309,45 @@ PHP_FUNCTION(imap_reopen) PHP_FUNCTION(imap_append) { zval *streamind; - char *folder, *message, *internal_date = NULL, *flags = NULL; - int folder_len, message_len, internal_date_len = 0, flags_len = 0; + zend_string *folder, *message, *internal_date = NULL, *flags = NULL; pils *imap_le_struct; STRING st; - char* regex = "/[0-3][0-9]-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-[0-9]{4} [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [+-][0-9]{4}/"; - const int regex_len = strlen(regex); + zend_string* regex; pcre_cache_entry *pce; /* Compiled regex */ zval *subpats = NULL; /* Parts (not used) */ - long regex_flags = 0; /* Flags (not used) */ - long start_offset = 0; /* Start offset (not used) */ int global = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|ss", &streamind, &folder, &folder_len, &message, &message_len, &flags, &flags_len, &internal_date, &internal_date_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS|SS", &streamind, &folder, &message, &flags, &internal_date) == FAILURE) { return; } + regex = zend_string_init("/[0-3][0-9]-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-[0-9]{4} [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [+-][0-9]{4}/", sizeof("/[0-3][0-9]-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-[0-9]{4} [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [+-][0-9]{4}/") - 1, 0); + if (internal_date) { /* Make sure the given internal_date string matches the RFC specifiedformat */ - if ((pce = pcre_get_compiled_regex_cache(regex, regex_len TSRMLS_CC))== NULL) { + if ((pce = pcre_get_compiled_regex_cache(regex))== NULL) { + zend_string_free(regex); RETURN_FALSE; } - php_pcre_match_impl(pce, internal_date, internal_date_len, return_value, subpats, global, - 0, regex_flags, start_offset TSRMLS_CC); + zend_string_free(regex); + php_pcre_match_impl(pce, ZSTR_VAL(internal_date), ZSTR_LEN(internal_date), return_value, subpats, global, + 0, Z_L(0), Z_L(0)); if (!Z_LVAL_P(return_value)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "internal date not correctly formatted"); + php_error_docref(NULL, E_WARNING, "internal date not correctly formatted"); internal_date = NULL; } } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + zend_string_free(regex); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - INIT (&st, mail_string, (void *) message, message_len); + INIT (&st, mail_string, (void *) ZSTR_VAL(message), ZSTR_LEN(message)); - if (mail_append_full(imap_le_struct->imap_stream, folder, (flags ? flags : NIL), (internal_date ? internal_date : NIL), &st)) { + if (mail_append_full(imap_le_struct->imap_stream, ZSTR_VAL(folder), (flags ? ZSTR_VAL(flags) : NIL), (internal_date ? ZSTR_VAL(internal_date) : NIL), &st)) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1362,11 +1362,13 @@ PHP_FUNCTION(imap_num_msg) zval *streamind; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } RETURN_LONG(imap_le_struct->imap_stream->nmsgs); } @@ -1379,11 +1381,13 @@ PHP_FUNCTION(imap_ping) zval *streamind; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } RETURN_BOOL(mail_ping(imap_le_struct->imap_stream)); } @@ -1396,11 +1400,13 @@ PHP_FUNCTION(imap_num_recent) zval *streamind; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } RETURN_LONG(imap_le_struct->imap_stream->recent); } @@ -1412,23 +1418,24 @@ PHP_FUNCTION(imap_num_recent) PHP_FUNCTION(imap_get_quota) { zval *streamind; - char *qroot; - int qroot_len; + zend_string *qroot; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &qroot, &qroot_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &qroot) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } array_init(return_value); IMAPG(quota_return) = &return_value; /* set the callback for the GET_QUOTA function */ mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota); - if (!imap_getquota(imap_le_struct->imap_stream, qroot)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "c-client imap_getquota failed"); + if (!imap_getquota(imap_le_struct->imap_stream, ZSTR_VAL(qroot))) { + php_error_docref(NULL, E_WARNING, "c-client imap_getquota failed"); zval_dtor(return_value); RETURN_FALSE; } @@ -1440,23 +1447,24 @@ PHP_FUNCTION(imap_get_quota) PHP_FUNCTION(imap_get_quotaroot) { zval *streamind; - char *mbox; - int mbox_len; + zend_string *mbox; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &mbox, &mbox_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &mbox) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } array_init(return_value); IMAPG(quota_return) = &return_value; /* set the callback for the GET_QUOTAROOT function */ mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota); - if (!imap_getquotaroot(imap_le_struct->imap_stream, mbox)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "c-client imap_getquotaroot failed"); + if (!imap_getquotaroot(imap_le_struct->imap_stream, ZSTR_VAL(mbox))) { + php_error_docref(NULL, E_WARNING, "c-client imap_getquotaroot failed"); zval_dtor(return_value); RETURN_FALSE; } @@ -1468,23 +1476,24 @@ PHP_FUNCTION(imap_get_quotaroot) PHP_FUNCTION(imap_set_quota) { zval *streamind; - char *qroot; - int qroot_len; - long mailbox_size; + zend_string *qroot; + zend_long mailbox_size; pils *imap_le_struct; STRINGLIST limits; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsl", &streamind, &qroot, &qroot_len, &mailbox_size) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSl", &streamind, &qroot, &mailbox_size) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - limits.text.data = "STORAGE"; + limits.text.data = (unsigned char*)"STORAGE"; limits.text.size = mailbox_size; limits.next = NIL; - RETURN_BOOL(imap_setquota(imap_le_struct->imap_stream, qroot, &limits)); + RETURN_BOOL(imap_setquota(imap_le_struct->imap_stream, ZSTR_VAL(qroot), &limits)); } /* }}} */ @@ -1493,17 +1502,18 @@ PHP_FUNCTION(imap_set_quota) PHP_FUNCTION(imap_setacl) { zval *streamind; - char *mailbox, *id, *rights; - int mailbox_len, id_len, rights_len; + zend_string *mailbox, *id, *rights; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsss", &streamind, &mailbox, &mailbox_len, &id, &id_len, &rights, &rights_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSSS", &streamind, &mailbox, &id, &rights) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - RETURN_BOOL(imap_setacl(imap_le_struct->imap_stream, mailbox, id, rights)); + RETURN_BOOL(imap_setacl(imap_le_struct->imap_stream, ZSTR_VAL(mailbox), ZSTR_VAL(id), ZSTR_VAL(rights))); } /* }}} */ @@ -1512,15 +1522,16 @@ PHP_FUNCTION(imap_setacl) PHP_FUNCTION(imap_getacl) { zval *streamind; - char *mailbox; - int mailbox_len; + zend_string *mailbox; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &mailbox, &mailbox_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &mailbox) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* initializing the special array for the return values */ array_init(return_value); @@ -1529,7 +1540,7 @@ PHP_FUNCTION(imap_getacl) /* set the callback for the GET_ACL function */ mail_parameters(NIL, SET_ACL, (void *) mail_getacl); - if (!imap_getacl(imap_le_struct->imap_stream, mailbox)) { + if (!imap_getacl(imap_le_struct->imap_stream, ZSTR_VAL(mailbox))) { php_error(E_WARNING, "c-client imap_getacl failed"); zval_dtor(return_value); RETURN_FALSE; @@ -1547,11 +1558,13 @@ PHP_FUNCTION(imap_expunge) zval *streamind; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } mail_expunge (imap_le_struct->imap_stream); @@ -1565,18 +1578,20 @@ PHP_FUNCTION(imap_gc) { zval *streamind; pils *imap_le_struct; - long flags; + zend_long flags; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &streamind, &flags) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &streamind, &flags) == FAILURE) { return; } if (flags && ((flags & ~(GC_TEXTS | GC_ELT | GC_ENV)) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the flags parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the flags parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } mail_gc(imap_le_struct->imap_stream, flags); @@ -1590,21 +1605,23 @@ PHP_FUNCTION(imap_close) { zval *streamind; pils *imap_le_struct=NULL; - long options = 0, flags = NIL; + zend_long options = 0, flags = NIL; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "r|l", &streamind, &options) == FAILURE) { + if (zend_parse_parameters(argc, "r|l", &streamind, &options) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (argc == 2) { flags = options; /* Check that flags is exactly equal to PHP_EXPUNGE or zero */ if (flags && ((flags & ~PHP_EXPUNGE) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the flags parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the flags parameter"); RETURN_FALSE; } @@ -1616,7 +1633,7 @@ PHP_FUNCTION(imap_close) imap_le_struct->flags = flags; } - zend_list_delete(Z_RESVAL_P(streamind)); + zend_list_close(Z_RES_P(streamind)); RETURN_TRUE; } @@ -1633,11 +1650,13 @@ PHP_FUNCTION(imap_headers) unsigned int msgno; char tmp[MAILTMPLEN]; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* Initialize return array */ array_init(return_value); @@ -1667,7 +1686,7 @@ PHP_FUNCTION(imap_headers) } mail_fetchsubject(t = tmp + strlen(tmp), imap_le_struct->imap_stream, msgno, (long)25); snprintf(t += strlen(t), sizeof(tmp) - strlen(tmp), " (%ld chars)", cache->rfc822_size); - add_next_index_string(return_value, tmp, 1); + add_next_index_string(return_value, tmp); } } /* }}} */ @@ -1677,22 +1696,24 @@ PHP_FUNCTION(imap_headers) PHP_FUNCTION(imap_body) { zval *streamind; - long msgno, flags = 0; + zend_long msgno, flags = 0; pils *imap_le_struct; int msgindex, argc = ZEND_NUM_ARGS(); char *body; unsigned long body_len = 0; - if (zend_parse_parameters(argc TSRMLS_CC, "rl|l", &streamind, &msgno, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rl|l", &streamind, &msgno, &flags) == FAILURE) { return; } if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if ((argc == 3) && (flags & FT_UID)) { /* This should be cached; if it causes an extra RTT to the @@ -1703,7 +1724,7 @@ PHP_FUNCTION(imap_body) msgindex = msgno; } if ((msgindex < 1) || ((unsigned) msgindex > imap_le_struct->imap_stream->nmsgs)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message number"); + php_error_docref(NULL, E_WARNING, "Bad message number"); RETURN_FALSE; } @@ -1711,7 +1732,7 @@ PHP_FUNCTION(imap_body) if (body_len == 0) { RETVAL_EMPTY_STRING(); } else { - RETVAL_STRINGL(body, body_len, 1); + RETVAL_STRINGL(body, body_len); } } /* }}} */ @@ -1721,18 +1742,20 @@ PHP_FUNCTION(imap_body) PHP_FUNCTION(imap_mail_copy) { zval *streamind; - long options = 0; - char *seq, *folder; - int seq_len, folder_len, argc = ZEND_NUM_ARGS(); + zend_long options = 0; + zend_string *seq, *folder; + int argc = ZEND_NUM_ARGS(); pils *imap_le_struct; - if (zend_parse_parameters(argc TSRMLS_CC, "rss|l", &streamind, &seq, &seq_len, &folder, &folder_len, &options) == FAILURE) { + if (zend_parse_parameters(argc, "rSS|l", &streamind, &seq, &folder, &options) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_copy_full(imap_le_struct->imap_stream, seq, folder, (argc == 4 ? options : NIL)) == T) { + if (mail_copy_full(imap_le_struct->imap_stream, ZSTR_VAL(seq), ZSTR_VAL(folder), (argc == 4 ? options : NIL)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1745,19 +1768,20 @@ PHP_FUNCTION(imap_mail_copy) PHP_FUNCTION(imap_mail_move) { zval *streamind; - char *seq, *folder; - int seq_len, folder_len; - long options = 0; + zend_string *seq, *folder; + zend_long options = 0; pils *imap_le_struct; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rss|l", &streamind, &seq, &seq_len, &folder, &folder_len, &options) == FAILURE) { + if (zend_parse_parameters(argc, "rSS|l", &streamind, &seq, &folder, &options) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_copy_full(imap_le_struct->imap_stream, seq, folder, (argc == 4 ? (options | CP_MOVE) : CP_MOVE)) == T) { + if (mail_copy_full(imap_le_struct->imap_stream, ZSTR_VAL(seq), ZSTR_VAL(folder), (argc == 4 ? (options | CP_MOVE) : CP_MOVE)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1770,17 +1794,18 @@ PHP_FUNCTION(imap_mail_move) PHP_FUNCTION(imap_createmailbox) { zval *streamind; - char *folder; - int folder_len; + zend_string *folder; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &folder, &folder_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &folder) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_create(imap_le_struct->imap_stream, folder) == T) { + if (mail_create(imap_le_struct->imap_stream, ZSTR_VAL(folder)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1793,17 +1818,18 @@ PHP_FUNCTION(imap_createmailbox) PHP_FUNCTION(imap_renamemailbox) { zval *streamind; - char *old_mailbox, *new_mailbox; - int old_mailbox_len, new_mailbox_len; + zend_string *old_mailbox, *new_mailbox; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &streamind, &old_mailbox, &old_mailbox_len, &new_mailbox, &new_mailbox_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS", &streamind, &old_mailbox, &new_mailbox) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_rename(imap_le_struct->imap_stream, old_mailbox, new_mailbox) == T) { + if (mail_rename(imap_le_struct->imap_stream, ZSTR_VAL(old_mailbox), ZSTR_VAL(new_mailbox)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1816,17 +1842,18 @@ PHP_FUNCTION(imap_renamemailbox) PHP_FUNCTION(imap_deletemailbox) { zval *streamind; - char *folder; - int folder_len; + zend_string *folder; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &folder, &folder_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &folder) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_delete(imap_le_struct->imap_stream, folder) == T) { + if (mail_delete(imap_le_struct->imap_stream, ZSTR_VAL(folder)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -1839,22 +1866,23 @@ PHP_FUNCTION(imap_deletemailbox) PHP_FUNCTION(imap_list) { zval *streamind; - char *ref, *pat; - int ref_len, pat_len; + zend_string *ref, *pat; pils *imap_le_struct; STRINGLIST *cur=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &streamind, &ref, &ref_len, &pat, &pat_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS", &streamind, &ref, &pat) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* set flag for normal, old mailbox list */ IMAPG(folderlist_style) = FLIST_ARRAY; IMAPG(imap_folders) = IMAPG(imap_folders_tail) = NIL; - mail_list(imap_le_struct->imap_stream, ref, pat); + mail_list(imap_le_struct->imap_stream, ZSTR_VAL(ref), ZSTR_VAL(pat)); if (IMAPG(imap_folders) == NIL) { RETURN_FALSE; } @@ -1862,7 +1890,7 @@ PHP_FUNCTION(imap_list) array_init(return_value); cur=IMAPG(imap_folders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT, 1); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_folders)); @@ -1876,24 +1904,25 @@ PHP_FUNCTION(imap_list) /* Author: CJH */ PHP_FUNCTION(imap_list_full) { - zval *streamind, *mboxob; - char *ref, *pat; - int ref_len, pat_len; + zval *streamind, mboxob; + zend_string *ref, *pat; pils *imap_le_struct; FOBJECTLIST *cur=NIL; char *delim=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &streamind, &ref, &ref_len, &pat, &pat_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS", &streamind, &ref, &pat) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* set flag for new, improved array of objects mailbox list */ IMAPG(folderlist_style) = FLIST_OBJECT; IMAPG(imap_folder_objects) = IMAPG(imap_folder_objects_tail) = NIL; - mail_list(imap_le_struct->imap_stream, ref, pat); + mail_list(imap_le_struct->imap_stream, ZSTR_VAL(ref), ZSTR_VAL(pat)); if (IMAPG(imap_folder_objects) == NIL) { RETURN_FALSE; } @@ -1902,18 +1931,17 @@ PHP_FUNCTION(imap_list_full) delim = safe_emalloc(2, sizeof(char), 0); cur=IMAPG(imap_folder_objects); while (cur != NIL) { - MAKE_STD_ZVAL(mboxob); - object_init(mboxob); - add_property_string(mboxob, "name", cur->LTEXT, 1); - add_property_long(mboxob, "attributes", cur->attributes); + object_init(&mboxob); + add_property_string(&mboxob, "name", (char*)cur->LTEXT); + add_property_long(&mboxob, "attributes", cur->attributes); #ifdef IMAP41 delim[0] = (char)cur->delimiter; delim[1] = 0; - add_property_string(mboxob, "delimiter", delim, 1); + add_property_string(&mboxob, "delimiter", delim); #else - add_property_string(mboxob, "delimiter", cur->delimiter, 1); + add_property_string(&mboxob, "delimiter", cur->delimiter); #endif - add_next_index_object(return_value, mboxob TSRMLS_CC); + add_next_index_object(return_value, &mboxob); cur=cur->next; } mail_free_foblist(&IMAPG(imap_folder_objects), &IMAPG(imap_folder_objects_tail)); @@ -1927,19 +1955,20 @@ PHP_FUNCTION(imap_list_full) PHP_FUNCTION(imap_listscan) { zval *streamind; - char *ref, *pat, *content; - int ref_len, pat_len, content_len; + zend_string *ref, *pat, *content; pils *imap_le_struct; STRINGLIST *cur=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsss", &streamind, &ref, &ref_len, &pat, &pat_len, &content, &content_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSSS", &streamind, &ref, &pat, &content) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } IMAPG(imap_folders) = NIL; - mail_scan(imap_le_struct->imap_stream, ref, pat, content); + mail_scan(imap_le_struct->imap_stream, ZSTR_VAL(ref), ZSTR_VAL(pat), ZSTR_VAL(content)); if (IMAPG(imap_folders) == NIL) { RETURN_FALSE; } @@ -1947,7 +1976,7 @@ PHP_FUNCTION(imap_listscan) array_init(return_value); cur=IMAPG(imap_folders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT, 1); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_folders)); @@ -1964,11 +1993,13 @@ PHP_FUNCTION(imap_check) pils *imap_le_struct; char date[100]; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (mail_ping (imap_le_struct->imap_stream) == NIL) { RETURN_FALSE; @@ -1977,9 +2008,9 @@ PHP_FUNCTION(imap_check) if (imap_le_struct->imap_stream && imap_le_struct->imap_stream->mailbox) { rfc822_date(date); object_init(return_value); - add_property_string(return_value, "Date", date, 1); - add_property_string(return_value, "Driver", imap_le_struct->imap_stream->dtb->name, 1); - add_property_string(return_value, "Mailbox", imap_le_struct->imap_stream->mailbox, 1); + add_property_string(return_value, "Date", date); + add_property_string(return_value, "Driver", imap_le_struct->imap_stream->dtb->name); + add_property_string(return_value, "Mailbox", imap_le_struct->imap_stream->mailbox); add_property_long(return_value, "Nmsgs", imap_le_struct->imap_stream->nmsgs); add_property_long(return_value, "Recent", imap_le_struct->imap_stream->recent); } else { @@ -1992,20 +2023,22 @@ PHP_FUNCTION(imap_check) Mark a message for deletion */ PHP_FUNCTION(imap_delete) { - zval *streamind, **sequence; + zval *streamind, *sequence; pils *imap_le_struct; - long flags = 0; + zend_long flags = 0; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rZ|l", &streamind, &sequence, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rz|l", &streamind, &sequence, &flags) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } convert_to_string_ex(sequence); - mail_setflag_full(imap_le_struct->imap_stream, Z_STRVAL_PP(sequence), "\\DELETED", (argc == 3 ? flags : NIL)); + mail_setflag_full(imap_le_struct->imap_stream, Z_STRVAL_P(sequence), "\\DELETED", (argc == 3 ? flags : NIL)); RETVAL_TRUE; } /* }}} */ @@ -2014,20 +2047,22 @@ PHP_FUNCTION(imap_delete) Remove the delete flag from a message */ PHP_FUNCTION(imap_undelete) { - zval *streamind, **sequence; - long flags = 0; + zval *streamind, *sequence; + zend_long flags = 0; pils *imap_le_struct; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rZ|l", &streamind, &sequence, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rz|l", &streamind, &sequence, &flags) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } convert_to_string_ex(sequence); - mail_clearflag_full(imap_le_struct->imap_stream, Z_STRVAL_PP(sequence), "\\DELETED", (argc == 3 ? flags : NIL)); + mail_clearflag_full(imap_le_struct->imap_stream, Z_STRVAL_P(sequence), "\\DELETED", (argc == 3 ? flags : NIL)); RETVAL_TRUE; } /* }}} */ @@ -2037,23 +2072,25 @@ PHP_FUNCTION(imap_undelete) PHP_FUNCTION(imap_headerinfo) { zval *streamind; - char *defaulthost = NULL; - int defaulthost_len = 0, argc = ZEND_NUM_ARGS(); - long msgno, fromlength, subjectlength; + zend_string *defaulthost = NULL; + int argc = ZEND_NUM_ARGS(); + zend_long msgno, fromlength, subjectlength; pils *imap_le_struct; MESSAGECACHE *cache; ENVELOPE *en; char dummy[2000], fulladdress[MAILTMPLEN + 1]; - if (zend_parse_parameters(argc TSRMLS_CC, "rl|lls", &streamind, &msgno, &fromlength, &subjectlength, &defaulthost, &defaulthost_len) == FAILURE) { + if (zend_parse_parameters(argc, "rl|llS", &streamind, &msgno, &fromlength, &subjectlength, &defaulthost) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (argc >= 3) { if (fromlength < 0 || fromlength > MAILTMPLEN) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "From length has to be between 0 and %d", MAILTMPLEN); + php_error_docref(NULL, E_WARNING, "From length has to be between 0 and %d", MAILTMPLEN); RETURN_FALSE; } } else { @@ -2061,7 +2098,7 @@ PHP_FUNCTION(imap_headerinfo) } if (argc >= 4) { if (subjectlength < 0 || subjectlength > MAILTMPLEN) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Subject length has to be between 0 and %d", MAILTMPLEN); + php_error_docref(NULL, E_WARNING, "Subject length has to be between 0 and %d", MAILTMPLEN); RETURN_FALSE; } } else { @@ -2080,37 +2117,37 @@ PHP_FUNCTION(imap_headerinfo) /* call a function to parse all the text, so that we can use the same function to parse text from other sources */ - _php_make_header_object(return_value, en TSRMLS_CC); + _php_make_header_object(return_value, en); /* now run through properties that are only going to be returned from a server, not text headers */ - add_property_string(return_value, "Recent", cache->recent ? (cache->seen ? "R": "N") : " ", 1); - add_property_string(return_value, "Unseen", (cache->recent | cache->seen) ? " " : "U", 1); - add_property_string(return_value, "Flagged", cache->flagged ? "F" : " ", 1); - add_property_string(return_value, "Answered", cache->answered ? "A" : " ", 1); - add_property_string(return_value, "Deleted", cache->deleted ? "D" : " ", 1); - add_property_string(return_value, "Draft", cache->draft ? "X" : " ", 1); + add_property_string(return_value, "Recent", cache->recent ? (cache->seen ? "R": "N") : " "); + add_property_string(return_value, "Unseen", (cache->recent | cache->seen) ? " " : "U"); + add_property_string(return_value, "Flagged", cache->flagged ? "F" : " "); + add_property_string(return_value, "Answered", cache->answered ? "A" : " "); + add_property_string(return_value, "Deleted", cache->deleted ? "D" : " "); + add_property_string(return_value, "Draft", cache->draft ? "X" : " "); snprintf(dummy, sizeof(dummy), "%4ld", cache->msgno); - add_property_string(return_value, "Msgno", dummy, 1); + add_property_string(return_value, "Msgno", dummy); mail_date(dummy, cache); - add_property_string(return_value, "MailDate", dummy, 1); + add_property_string(return_value, "MailDate", dummy); snprintf(dummy, sizeof(dummy), "%ld", cache->rfc822_size); - add_property_string(return_value, "Size", dummy, 1); + add_property_string(return_value, "Size", dummy); add_property_long(return_value, "udate", mail_longdate(cache)); if (en->from && fromlength) { fulladdress[0] = 0x00; mail_fetchfrom(fulladdress, imap_le_struct->imap_stream, msgno, fromlength); - add_property_string(return_value, "fetchfrom", fulladdress, 1); + add_property_string(return_value, "fetchfrom", fulladdress); } if (en->subject && subjectlength) { fulladdress[0] = 0x00; mail_fetchsubject(fulladdress, imap_le_struct->imap_stream, msgno, subjectlength); - add_property_string(return_value, "fetchsubject", fulladdress, 1); + add_property_string(return_value, "fetchsubject", fulladdress); } } /* }}} */ @@ -2119,23 +2156,23 @@ PHP_FUNCTION(imap_headerinfo) Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo() */ PHP_FUNCTION(imap_rfc822_parse_headers) { - char *headers, *defaulthost = NULL; + zend_string *headers, *defaulthost = NULL; ENVELOPE *en; - int headers_len, defaulthost_len = 0, argc = ZEND_NUM_ARGS(); + int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "s|s", &headers, &headers_len, &defaulthost, &defaulthost_len) == FAILURE) { + if (zend_parse_parameters(argc, "S|S", &headers, &defaulthost) == FAILURE) { return; } if (argc == 2) { - rfc822_parse_msg(&en, NULL, headers, headers_len, NULL, defaulthost, NIL); + rfc822_parse_msg(&en, NULL, ZSTR_VAL(headers), ZSTR_LEN(headers), NULL, ZSTR_VAL(defaulthost), NIL); } else { - rfc822_parse_msg(&en, NULL, headers, headers_len, NULL, "UNKNOWN", NIL); + rfc822_parse_msg(&en, NULL, ZSTR_VAL(headers), ZSTR_LEN(headers), NULL, "UNKNOWN", NIL); } /* call a function to parse all the text, so that we can use the same function no matter where the headers are from */ - _php_make_header_object(return_value, en TSRMLS_CC); + _php_make_header_object(return_value, en); mail_free_envelope(&en); } /* }}} */ @@ -2146,22 +2183,23 @@ PHP_FUNCTION(imap_rfc822_parse_headers) PHP_FUNCTION(imap_lsub) { zval *streamind; - char *ref, *pat; - int ref_len, pat_len; + zend_string *ref, *pat; pils *imap_le_struct; STRINGLIST *cur=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &streamind, &ref, &ref_len, &pat, &pat_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS", &streamind, &ref, &pat) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* set flag for normal, old mailbox list */ IMAPG(folderlist_style) = FLIST_ARRAY; IMAPG(imap_sfolders) = NIL; - mail_lsub(imap_le_struct->imap_stream, ref, pat); + mail_lsub(imap_le_struct->imap_stream, ZSTR_VAL(ref), ZSTR_VAL(pat)); if (IMAPG(imap_sfolders) == NIL) { RETURN_FALSE; } @@ -2169,7 +2207,7 @@ PHP_FUNCTION(imap_lsub) array_init(return_value); cur=IMAPG(imap_sfolders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT, 1); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_sfolders)); @@ -2182,24 +2220,25 @@ PHP_FUNCTION(imap_lsub) /* Author: CJH */ PHP_FUNCTION(imap_lsub_full) { - zval *streamind, *mboxob; - char *ref, *pat; - int ref_len, pat_len; + zval *streamind, mboxob; + zend_string *ref, *pat; pils *imap_le_struct; FOBJECTLIST *cur=NIL; char *delim=NIL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &streamind, &ref, &ref_len, &pat, &pat_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS", &streamind, &ref, &pat) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* set flag for new, improved array of objects list */ IMAPG(folderlist_style) = FLIST_OBJECT; IMAPG(imap_sfolder_objects) = IMAPG(imap_sfolder_objects_tail) = NIL; - mail_lsub(imap_le_struct->imap_stream, ref, pat); + mail_lsub(imap_le_struct->imap_stream, ZSTR_VAL(ref), ZSTR_VAL(pat)); if (IMAPG(imap_sfolder_objects) == NIL) { RETURN_FALSE; } @@ -2208,18 +2247,17 @@ PHP_FUNCTION(imap_lsub_full) delim = safe_emalloc(2, sizeof(char), 0); cur=IMAPG(imap_sfolder_objects); while (cur != NIL) { - MAKE_STD_ZVAL(mboxob); - object_init(mboxob); - add_property_string(mboxob, "name", cur->LTEXT, 1); - add_property_long(mboxob, "attributes", cur->attributes); + object_init(&mboxob); + add_property_string(&mboxob, "name", (char*)cur->LTEXT); + add_property_long(&mboxob, "attributes", cur->attributes); #ifdef IMAP41 delim[0] = (char)cur->delimiter; delim[1] = 0; - add_property_string(mboxob, "delimiter", delim, 1); + add_property_string(&mboxob, "delimiter", delim); #else - add_property_string(mboxob, "delimiter", cur->delimiter, 1); + add_property_string(&mboxob, "delimiter", cur->delimiter); #endif - add_next_index_object(return_value, mboxob TSRMLS_CC); + add_next_index_object(return_value, &mboxob); cur=cur->next; } mail_free_foblist (&IMAPG(imap_sfolder_objects), &IMAPG(imap_sfolder_objects_tail)); @@ -2233,17 +2271,18 @@ PHP_FUNCTION(imap_lsub_full) PHP_FUNCTION(imap_subscribe) { zval *streamind; - char *folder; - int folder_len; + zend_string *folder; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &folder, &folder_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &folder) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_subscribe(imap_le_struct->imap_stream, folder) == T) { + if (mail_subscribe(imap_le_struct->imap_stream, ZSTR_VAL(folder)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -2256,17 +2295,18 @@ PHP_FUNCTION(imap_subscribe) PHP_FUNCTION(imap_unsubscribe) { zval *streamind; - char *folder; - int folder_len; + zend_string *folder; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &streamind, &folder, &folder_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS", &streamind, &folder) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - if (mail_unsubscribe(imap_le_struct->imap_stream, folder) == T) { + if (mail_unsubscribe(imap_le_struct->imap_stream, ZSTR_VAL(folder)) == T) { RETURN_TRUE; } else { RETURN_FALSE; @@ -2279,21 +2319,23 @@ PHP_FUNCTION(imap_unsubscribe) PHP_FUNCTION(imap_fetchstructure) { zval *streamind; - long msgno, flags = 0; + zend_long msgno, flags = 0; pils *imap_le_struct; BODY *body; int msgindex, argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rl|l", &streamind, &msgno, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rl|l", &streamind, &msgno, &flags) == FAILURE) { return; } if (flags && ((flags & ~FT_UID) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (msgno < 1) { RETURN_FALSE; @@ -2314,11 +2356,11 @@ PHP_FUNCTION(imap_fetchstructure) mail_fetchstructure_full(imap_le_struct->imap_stream, msgno, &body , (argc == 3 ? flags : NIL)); if (!body) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No body information available"); + php_error_docref(NULL, E_WARNING, "No body information available"); RETURN_FALSE; } - _php_imap_add_body(return_value, body TSRMLS_CC); + _php_imap_add_body(return_value, body); } /* }}} */ @@ -2327,36 +2369,38 @@ PHP_FUNCTION(imap_fetchstructure) PHP_FUNCTION(imap_fetchbody) { zval *streamind; - long msgno, flags = 0; + zend_long msgno, flags = 0; pils *imap_le_struct; - char *body, *sec; - int sec_len; + char *body; + zend_string *sec; unsigned long len; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rls|l", &streamind, &msgno, &sec, &sec_len, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rlS|l", &streamind, &msgno, &sec, &flags) == FAILURE) { return; } if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (argc < 4 || !(flags & FT_UID)) { /* only perform the check if the msgno is a message number and not a UID */ PHP_IMAP_CHECK_MSGNO(msgno); } - body = mail_fetchbody_full(imap_le_struct->imap_stream, msgno, sec, &len, (argc == 4 ? flags : NIL)); + body = mail_fetchbody_full(imap_le_struct->imap_stream, msgno, ZSTR_VAL(sec), &len, (argc == 4 ? flags : NIL)); if (!body) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No body information available"); + php_error_docref(NULL, E_WARNING, "No body information available"); RETURN_FALSE; } - RETVAL_STRINGL(body, len, 1); + RETVAL_STRINGL(body, len); } /* }}} */ @@ -2367,36 +2411,38 @@ PHP_FUNCTION(imap_fetchbody) PHP_FUNCTION(imap_fetchmime) { zval *streamind; - long msgno, flags = 0; + zend_long msgno, flags = 0; pils *imap_le_struct; - char *body, *sec; - int sec_len; + char *body; + zend_string *sec; unsigned long len; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rls|l", &streamind, &msgno, &sec, &sec_len, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rlS|l", &streamind, &msgno, &sec, &flags) == FAILURE) { return; } if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (argc < 4 || !(flags & FT_UID)) { /* only perform the check if the msgno is a message number and not a UID */ PHP_IMAP_CHECK_MSGNO(msgno); } - body = mail_fetch_mime(imap_le_struct->imap_stream, msgno, sec, &len, (argc == 4 ? flags : NIL)); + body = mail_fetch_mime(imap_le_struct->imap_stream, msgno, ZSTR_VAL(sec), &len, (argc == 4 ? flags : NIL)); if (!body) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No body MIME information available"); + php_error_docref(NULL, E_WARNING, "No body MIME information available"); RETURN_FALSE; } - RETVAL_STRINGL(body, len, 1); + RETVAL_STRINGL(body, len); } /* }}} */ @@ -2405,24 +2451,26 @@ PHP_FUNCTION(imap_fetchmime) Save a specific body section to a file */ PHP_FUNCTION(imap_savebody) { - zval *stream, **out; + zval *stream, *out; pils *imap_ptr = NULL; php_stream *writer = NULL; - char *section = ""; - int section_len = 0, close_stream = 1; - long msgno, flags = 0; + zend_string *section = NULL; + int close_stream = 1; + zend_long msgno, flags = 0; - if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZl|sl", &stream, &out, &msgno, §ion, §ion_len, &flags)) { + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "rzl|Sl", &stream, &out, &msgno, §ion, &flags)) { RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_ptr, pils *, &stream, -1, "imap", le_imap); + if ((imap_ptr = (pils *)zend_fetch_resource(Z_RES_P(stream), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (!imap_ptr) { RETURN_FALSE; } - switch (Z_TYPE_PP(out)) + switch (Z_TYPE_P(out)) { case IS_LONG: case IS_RESOURCE: @@ -2432,7 +2480,7 @@ PHP_FUNCTION(imap_savebody) default: convert_to_string_ex(out); - writer = php_stream_open_wrapper(Z_STRVAL_PP(out), "wb", REPORT_ERRORS, NULL); + writer = php_stream_open_wrapper(Z_STRVAL_P(out), "wb", REPORT_ERRORS, NULL); break; } @@ -2442,7 +2490,7 @@ PHP_FUNCTION(imap_savebody) IMAPG(gets_stream) = writer; mail_parameters(NIL, SET_GETS, (void *) php_mail_gets); - mail_fetchbody_full(imap_ptr->imap_stream, msgno, section, NULL, flags); + mail_fetchbody_full(imap_ptr->imap_stream, msgno, section?ZSTR_VAL(section):"", NULL, flags); mail_parameters(NIL, SET_GETS, (void *) NULL); IMAPG(gets_stream) = NULL; @@ -2458,21 +2506,21 @@ PHP_FUNCTION(imap_savebody) Decode BASE64 encoded text */ PHP_FUNCTION(imap_base64) { - char *text, *decode; - int text_len; + zend_string *text; + char *decode; unsigned long newlength; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &text_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &text) == FAILURE) { return; } - decode = (char *) rfc822_base64((unsigned char *) text, text_len, &newlength); + decode = (char *) rfc822_base64((unsigned char *) ZSTR_VAL(text), ZSTR_LEN(text), &newlength); if (decode == NULL) { RETURN_FALSE; } - RETVAL_STRINGL(decode, newlength, 1); + RETVAL_STRINGL(decode, newlength); fs_give((void**) &decode); } /* }}} */ @@ -2481,21 +2529,21 @@ PHP_FUNCTION(imap_base64) Convert a quoted-printable string to an 8-bit string */ PHP_FUNCTION(imap_qprint) { - char *text, *decode; - int text_len; + zend_string *text; + char *decode; unsigned long newlength; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &text_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &text) == FAILURE) { return; } - decode = (char *) rfc822_qprint((unsigned char *) text, text_len, &newlength); + decode = (char *) rfc822_qprint((unsigned char *) ZSTR_VAL(text), ZSTR_LEN(text), &newlength); if (decode == NULL) { RETURN_FALSE; } - RETVAL_STRINGL(decode, newlength, 1); + RETVAL_STRINGL(decode, newlength); fs_give((void**) &decode); } /* }}} */ @@ -2504,21 +2552,21 @@ PHP_FUNCTION(imap_qprint) Convert an 8-bit string to a quoted-printable string */ PHP_FUNCTION(imap_8bit) { - char *text, *decode; - int text_len; + zend_string *text; + char *decode; unsigned long newlength; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &text_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &text) == FAILURE) { return; } - decode = (char *) rfc822_8bit((unsigned char *) text, text_len, &newlength); + decode = (char *) rfc822_8bit((unsigned char *) ZSTR_VAL(text), ZSTR_LEN(text), &newlength); if (decode == NULL) { RETURN_FALSE; } - RETVAL_STRINGL(decode, newlength, 1); + RETVAL_STRINGL(decode, newlength); fs_give((void**) &decode); } /* }}} */ @@ -2527,21 +2575,21 @@ PHP_FUNCTION(imap_8bit) Convert an 8bit string to a base64 string */ PHP_FUNCTION(imap_binary) { - char *text, *decode; - int text_len; + zend_string *text; + char *decode; unsigned long newlength; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &text_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &text) == FAILURE) { return; } - decode = rfc822_binary(text, text_len, &newlength); + decode = (char*)rfc822_binary(ZSTR_VAL(text), ZSTR_LEN(text), &newlength); if (decode == NULL) { RETURN_FALSE; } - RETVAL_STRINGL(decode, newlength, 1); + RETVAL_STRINGL(decode, newlength); fs_give((void**) &decode); } /* }}} */ @@ -2555,11 +2603,13 @@ PHP_FUNCTION(imap_mailboxmsginfo) char date[100]; unsigned int msgno, unreadmsg, deletedmsg, msize; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &streamind) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &streamind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } /* Initialize return object */ object_init(return_value); @@ -2586,9 +2636,9 @@ PHP_FUNCTION(imap_mailboxmsginfo) add_property_long(return_value, "Nmsgs", imap_le_struct->imap_stream->nmsgs); add_property_long(return_value, "Size", msize); rfc822_date(date); - add_property_string(return_value, "Date", date, 1); - add_property_string(return_value, "Driver", imap_le_struct->imap_stream->dtb->name, 1); - add_property_string(return_value, "Mailbox", imap_le_struct->imap_stream->mailbox, 1); + add_property_string(return_value, "Date", date); + add_property_string(return_value, "Driver", imap_le_struct->imap_stream->dtb->name); + add_property_string(return_value, "Mailbox", imap_le_struct->imap_stream->mailbox); add_property_long(return_value, "Recent", imap_le_struct->imap_stream->recent); } /* }}} */ @@ -2597,36 +2647,35 @@ PHP_FUNCTION(imap_mailboxmsginfo) Returns a properly formatted email address given the mailbox, host, and personal info */ PHP_FUNCTION(imap_rfc822_write_address) { - char *mailbox, *host, *personal; - int mailbox_len, host_len, personal_len; + zend_string *mailbox, *host, *personal; ADDRESS *addr; - char *string; + zend_string *string; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &mailbox, &mailbox_len, &host, &host_len, &personal, &personal_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &mailbox, &host, &personal) == FAILURE) { return; } addr=mail_newaddr(); if (mailbox) { - addr->mailbox = cpystr(mailbox); + addr->mailbox = cpystr(ZSTR_VAL(mailbox)); } if (host) { - addr->host = cpystr(host); + addr->host = cpystr(ZSTR_VAL(host)); } if (personal) { - addr->personal = cpystr(personal); + addr->personal = cpystr(ZSTR_VAL(personal)); } addr->next=NIL; addr->error=NIL; addr->adl=NIL; - string = _php_rfc822_write_address(addr TSRMLS_CC); + string = _php_rfc822_write_address(addr); if (string) { - RETVAL_STRING(string, 0); + RETVAL_STR(string); } else { RETURN_FALSE; } @@ -2637,21 +2686,21 @@ PHP_FUNCTION(imap_rfc822_write_address) Parses an address string */ PHP_FUNCTION(imap_rfc822_parse_adrlist) { - zval *tovals; - char *str, *defaulthost, *str_copy; - int str_len, defaulthost_len; + zval tovals; + zend_string *str, *defaulthost; + char *str_copy; ADDRESS *addresstmp; ENVELOPE *env; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &str, &str_len, &defaulthost, &defaulthost_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &str, &defaulthost) == FAILURE) { return; } env = mail_newenvelope(); /* rfc822_parse_adrlist() modifies passed string. Copy it. */ - str_copy = estrndup(str, str_len); - rfc822_parse_adrlist(&env->to, str_copy, defaulthost); + str_copy = estrndup(ZSTR_VAL(str), ZSTR_LEN(str)); + rfc822_parse_adrlist(&env->to, str_copy, ZSTR_VAL(defaulthost)); efree(str_copy); array_init(return_value); @@ -2659,21 +2708,20 @@ PHP_FUNCTION(imap_rfc822_parse_adrlist) addresstmp = env->to; if (addresstmp) do { - MAKE_STD_ZVAL(tovals); - object_init(tovals); + object_init(&tovals); if (addresstmp->mailbox) { - add_property_string(tovals, "mailbox", addresstmp->mailbox, 1); + add_property_string(&tovals, "mailbox", addresstmp->mailbox); } if (addresstmp->host) { - add_property_string(tovals, "host", addresstmp->host, 1); + add_property_string(&tovals, "host", addresstmp->host); } if (addresstmp->personal) { - add_property_string(tovals, "personal", addresstmp->personal, 1); + add_property_string(&tovals, "personal", addresstmp->personal); } if (addresstmp->adl) { - add_property_string(tovals, "adl", addresstmp->adl, 1); + add_property_string(&tovals, "adl", addresstmp->adl); } - add_next_index_object(return_value, tovals TSRMLS_CC); + add_next_index_object(return_value, &tovals); } while ((addresstmp = addresstmp->next)); mail_free_envelope(&env); @@ -2684,11 +2732,10 @@ PHP_FUNCTION(imap_rfc822_parse_adrlist) Convert a mime-encoded text to UTF-8 */ PHP_FUNCTION(imap_utf8) { - char *str; - int str_len; + zend_string *str; SIZEDTEXT src, dest; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) { return; } @@ -2697,14 +2744,14 @@ PHP_FUNCTION(imap_utf8) dest.data = NULL; dest.size = 0; - cpytxt(&src, str, str_len); + cpytxt(&src, ZSTR_VAL(str), ZSTR_LEN(str)); #ifndef HAVE_NEW_MIME2TEXT utf8_mime2text(&src, &dest); #else utf8_mime2text(&src, &dest, U8T_DECOMPOSE); #endif - RETVAL_STRINGL(dest.data, dest.size, 1); + RETVAL_STRINGL((char*)dest.data, dest.size); if (dest.data) { free(dest.data); } @@ -2739,11 +2786,11 @@ PHP_FUNCTION(imap_utf8) PHP_FUNCTION(imap_utf7_decode) { /* author: Andrew Skalski <askalski@chek.com> */ - char *arg; + zend_string *arg; const unsigned char *in, *inp, *endp; unsigned char *out, *outp; unsigned char c; - int arg_len, inlen, outlen; + int inlen, outlen; enum { ST_NORMAL, /* printable text */ ST_DECODE0, /* encoded text rotation... */ @@ -2752,12 +2799,12 @@ PHP_FUNCTION(imap_utf7_decode) ST_DECODE3 } state; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &arg) == FAILURE) { return; } - in = (const unsigned char *) arg; - inlen = arg_len; + in = (const unsigned char *) ZSTR_VAL(arg); + inlen = ZSTR_LEN(arg); /* validate and compute length of output string */ outlen = 0; @@ -2766,12 +2813,12 @@ PHP_FUNCTION(imap_utf7_decode) if (state == ST_NORMAL) { /* process printable character */ if (SPECIAL(*inp)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid modified UTF-7 character: `%c'", *inp); + php_error_docref(NULL, E_WARNING, "Invalid modified UTF-7 character: `%c'", *inp); RETURN_FALSE; } else if (*inp != '&') { outlen++; } else if (inp + 1 == endp) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unexpected end of string"); + php_error_docref(NULL, E_WARNING, "Unexpected end of string"); RETURN_FALSE; } else if (inp[1] != '-') { state = ST_DECODE0; @@ -2782,12 +2829,12 @@ PHP_FUNCTION(imap_utf7_decode) } else if (*inp == '-') { /* return to NORMAL mode */ if (state == ST_DECODE1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Stray modified base64 character: `%c'", *--inp); + php_error_docref(NULL, E_WARNING, "Stray modified base64 character: `%c'", *--inp); RETURN_FALSE; } state = ST_NORMAL; } else if (!B64CHAR(*inp)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid modified base64 character: `%c'", *inp); + php_error_docref(NULL, E_WARNING, "Invalid modified base64 character: `%c'", *inp); RETURN_FALSE; } else { switch (state) { @@ -2808,7 +2855,7 @@ PHP_FUNCTION(imap_utf7_decode) /* enforce end state */ if (state != ST_NORMAL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unexpected end of string"); + php_error_docref(NULL, E_WARNING, "Unexpected end of string"); RETURN_FALSE; } @@ -2865,11 +2912,11 @@ PHP_FUNCTION(imap_utf7_decode) #if PHP_DEBUG /* warn if we computed outlen incorrectly */ if (outp - out != outlen) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "outp - out [%ld] != outlen [%d]", outp - out, outlen); + php_error_docref(NULL, E_WARNING, "outp - out [%ld] != outlen [%d]", outp - out, outlen); } #endif - RETURN_STRINGL(out, outlen, 0); + RETURN_STRINGL((char*)out, outlen); } /* }}} */ @@ -2878,11 +2925,12 @@ PHP_FUNCTION(imap_utf7_decode) PHP_FUNCTION(imap_utf7_encode) { /* author: Andrew Skalski <askalski@chek.com> */ - char *arg; + zend_string *arg; const unsigned char *in, *inp, *endp; - unsigned char *out, *outp; + zend_string *out; + unsigned char *outp; unsigned char c; - int arg_len, inlen, outlen; + int inlen, outlen; enum { ST_NORMAL, /* printable text */ ST_ENCODE0, /* encoded text rotation... */ @@ -2890,12 +2938,12 @@ PHP_FUNCTION(imap_utf7_encode) ST_ENCODE2 } state; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &arg) == FAILURE) { return; } - in = (const unsigned char *) arg; - inlen = arg_len; + in = (const unsigned char *) ZSTR_VAL(arg); + inlen = ZSTR_LEN(arg); /* compute the length of the result string */ outlen = 0; @@ -2929,10 +2977,10 @@ PHP_FUNCTION(imap_utf7_encode) } /* allocate output buffer */ - out = emalloc(outlen + 1); + out = zend_string_alloc(outlen, 0); /* encode input string */ - outp = out; + outp = (unsigned char*)ZSTR_VAL(out); state = ST_NORMAL; endp = (inp = in) + inlen; while (inp < endp || state != ST_NORMAL) { @@ -2979,14 +3027,7 @@ PHP_FUNCTION(imap_utf7_encode) *outp = 0; -#if PHP_DEBUG - /* warn if we computed outlen incorrectly */ - if (outp - out != outlen) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "outp - out [%ld] != outlen [%d]", outp - out, outlen); - } -#endif - - RETURN_STRINGL(out, outlen, 0); + RETURN_STR(out); } /* }}} */ @@ -2998,28 +3039,27 @@ PHP_FUNCTION(imap_utf7_encode) #ifdef HAVE_IMAP_MUTF7 static void php_imap_mutf7(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */ { - char *in; - int in_len; + zend_string *in; unsigned char *out; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &in, &in_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &in) == FAILURE) { return; } - if (in_len < 1) { + if (ZSTR_LEN(in) < 1) { RETURN_EMPTY_STRING(); } if (mode == 0) { - out = utf8_to_mutf7((unsigned char *) in); + out = utf8_to_mutf7((unsigned char *) ZSTR_VAL(in)); } else { - out = utf8_from_mutf7((unsigned char *) in); + out = utf8_from_mutf7((unsigned char *) ZSTR_VAL(in)); } if (out == NIL) { RETURN_FALSE; } else { - RETURN_STRING((char *)out, 1); + RETURN_STRING((char *)out); } } /* }}} */ @@ -3046,18 +3086,19 @@ PHP_FUNCTION(imap_mutf7_to_utf8) PHP_FUNCTION(imap_setflag_full) { zval *streamind; - char *sequence, *flag; - int sequence_len, flag_len; - long flags = 0; + zend_string *sequence, *flag; + zend_long flags = 0; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|l", &streamind, &sequence, &sequence_len, &flag, &flag_len, &flags) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSS|l", &streamind, &sequence, &flag, &flags) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - mail_setflag_full(imap_le_struct->imap_stream, sequence, flag, (flags ? flags : NIL)); + mail_setflag_full(imap_le_struct->imap_stream, ZSTR_VAL(sequence), ZSTR_VAL(flag), (flags ? flags : NIL)); RETURN_TRUE; } /* }}} */ @@ -3067,19 +3108,20 @@ PHP_FUNCTION(imap_setflag_full) PHP_FUNCTION(imap_clearflag_full) { zval *streamind; - char *sequence, *flag; - int sequence_len, flag_len; - long flags = 0; + zend_string *sequence, *flag; + zend_long flags = 0; pils *imap_le_struct; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rss|l", &streamind, &sequence, &sequence_len, &flag, &flag_len, &flags) ==FAILURE) { + if (zend_parse_parameters(argc, "rSS|l", &streamind, &sequence, &flag, &flags) ==FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - mail_clearflag_full(imap_le_struct->imap_stream, sequence, flag, (argc == 4 ? flags : NIL)); + mail_clearflag_full(imap_le_struct->imap_stream, ZSTR_VAL(sequence), ZSTR_VAL(flag), (argc == 4 ? flags : NIL)); RETURN_TRUE; } /* }}} */ @@ -3089,9 +3131,8 @@ PHP_FUNCTION(imap_clearflag_full) PHP_FUNCTION(imap_sort) { zval *streamind; - char *criteria = NULL, *charset = NULL; - int criteria_len, charset_len; - long pgm, rev, flags = 0; + zend_string *criteria = NULL, *charset = NULL; + zend_long pgm, rev, flags = 0; pils *imap_le_struct; unsigned long *slst, *sl; char *search_criteria; @@ -3099,24 +3140,26 @@ PHP_FUNCTION(imap_sort) SEARCHPGM *spg=NIL; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rll|lss", &streamind, &pgm, &rev, &flags, &criteria, &criteria_len, &charset, &charset_len) == FAILURE) { + if (zend_parse_parameters(argc, "rll|lSS", &streamind, &pgm, &rev, &flags, &criteria, &charset) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (pgm > SORTSIZE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unrecognized sort criteria"); + php_error_docref(NULL, E_WARNING, "Unrecognized sort criteria"); RETURN_FALSE; } if (argc >= 4) { if (flags < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Search options parameter has to be greater than or equal to 0"); + php_error_docref(NULL, E_WARNING, "Search options parameter has to be greater than or equal to 0"); RETURN_FALSE; } } if (argc >= 5) { - search_criteria = estrndup(criteria, criteria_len); + search_criteria = estrndup(ZSTR_VAL(criteria), ZSTR_LEN(criteria)); spg = mail_criteria(search_criteria); efree(search_criteria); } else { @@ -3128,7 +3171,7 @@ PHP_FUNCTION(imap_sort) mypgm->function = (short) pgm; mypgm->next = NIL; - slst = mail_sort(imap_le_struct->imap_stream, (argc == 6 ? charset : NIL), spg, mypgm, (argc >= 4 ? flags : NIL)); + slst = mail_sort(imap_le_struct->imap_stream, (argc == 6 ? ZSTR_VAL(charset) : NIL), spg, mypgm, (argc >= 4 ? flags : NIL)); if (spg && !(flags & SE_FREE)) { mail_free_searchpgm(&spg); @@ -3149,20 +3192,22 @@ PHP_FUNCTION(imap_sort) PHP_FUNCTION(imap_fetchheader) { zval *streamind; - long msgno, flags=0L; + zend_long msgno, flags = 0L; pils *imap_le_struct; int msgindex, argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rl|l", &streamind, &msgno, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rl|l", &streamind, &msgno, &flags) == FAILURE) { return; } if (flags && ((flags & ~(FT_UID|FT_INTERNAL|FT_PREFETCHTEXT)) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if ((argc == 3) && (flags & FT_UID)) { /* This should be cached; if it causes an extra RTT to the @@ -3175,7 +3220,7 @@ PHP_FUNCTION(imap_fetchheader) PHP_IMAP_CHECK_MSGNO(msgindex); - RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, msgno, NIL, NIL, (argc == 3 ? flags : NIL)), 1); + RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, msgno, NIL, NIL, (argc == 3 ? flags : NIL))); } /* }}} */ @@ -3184,19 +3229,21 @@ PHP_FUNCTION(imap_fetchheader) PHP_FUNCTION(imap_uid) { zval *streamind; - long msgno; + zend_long msgno; pils *imap_le_struct; int msgindex; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &streamind, &msgno) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &streamind, &msgno) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } msgindex = msgno; if ((msgindex < 1) || ((unsigned) msgindex > imap_le_struct->imap_stream->nmsgs)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message number"); + php_error_docref(NULL, E_WARNING, "Bad message number"); RETURN_FALSE; } @@ -3209,14 +3256,16 @@ PHP_FUNCTION(imap_uid) PHP_FUNCTION(imap_msgno) { zval *streamind; - long msgno; + zend_long msgno; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &streamind, &msgno) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &streamind, &msgno) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } RETURN_LONG(mail_msgno(imap_le_struct->imap_stream, msgno)); } @@ -3227,20 +3276,21 @@ PHP_FUNCTION(imap_msgno) PHP_FUNCTION(imap_status) { zval *streamind; - char *mbx; - int mbx_len; - long flags; + zend_string *mbx; + zend_long flags; pils *imap_le_struct; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsl", &streamind, &mbx, &mbx_len, &flags) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSl", &streamind, &mbx, &flags) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } object_init(return_value); - if (mail_status(imap_le_struct->imap_stream, mbx, flags)) { + if (mail_status(imap_le_struct->imap_stream, ZSTR_VAL(mbx), flags)) { add_property_long(return_value, "flags", IMAPG(status_flags)); if (IMAPG(status_flags) & SA_MESSAGES) { add_property_long(return_value, "messages", IMAPG(status_messages)); @@ -3268,28 +3318,29 @@ PHP_FUNCTION(imap_status) PHP_FUNCTION(imap_bodystruct) { zval *streamind; - long msg; - char *section; - int section_len; + zend_long msg; + zend_string *section; pils *imap_le_struct; - zval *parametres, *param, *dparametres, *dparam; + zval parametres, param, dparametres, dparam; PARAMETER *par, *dpar; BODY *body; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &streamind, &msg, §ion, §ion_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlS", &streamind, &msg, §ion) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } if (!msg || msg < 1 || (unsigned) msg > imap_le_struct->imap_stream->nmsgs) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad message number"); + php_error_docref(NULL, E_WARNING, "Bad message number"); RETURN_FALSE; } object_init(return_value); - body=mail_body(imap_le_struct->imap_stream, msg, section); + body=mail_body(imap_le_struct->imap_stream, msg, (unsigned char*)ZSTR_VAL(section)); if (body == NULL) { zval_dtor(return_value); RETURN_FALSE; @@ -3303,20 +3354,20 @@ PHP_FUNCTION(imap_bodystruct) if (body->subtype) { add_property_long(return_value, "ifsubtype", 1); - add_property_string(return_value, "subtype", body->subtype, 1); + add_property_string(return_value, "subtype", body->subtype); } else { add_property_long(return_value, "ifsubtype", 0); } if (body->description) { add_property_long(return_value, "ifdescription", 1); - add_property_string(return_value, "description", body->description, 1); + add_property_string(return_value, "description", body->description); } else { add_property_long(return_value, "ifdescription", 0); } if (body->id) { add_property_long(return_value, "ifid", 1); - add_property_string(return_value, "id", body->id, 1); + add_property_string(return_value, "id", body->id); } else { add_property_long(return_value, "ifid", 0); } @@ -3330,7 +3381,7 @@ PHP_FUNCTION(imap_bodystruct) #ifdef IMAP41 if (body->disposition.type) { add_property_long(return_value, "ifdisposition", 1); - add_property_string(return_value, "disposition", body->disposition.type, 1); + add_property_string(return_value, "disposition", body->disposition.type); } else { add_property_long(return_value, "ifdisposition", 0); } @@ -3338,16 +3389,14 @@ PHP_FUNCTION(imap_bodystruct) if (body->disposition.parameter) { dpar = body->disposition.parameter; add_property_long(return_value, "ifdparameters", 1); - MAKE_STD_ZVAL(dparametres); - array_init(dparametres); + array_init(&dparametres); do { - MAKE_STD_ZVAL(dparam); - object_init(dparam); - add_property_string(dparam, "attribute", dpar->attribute, 1); - add_property_string(dparam, "value", dpar->value, 1); - add_next_index_object(dparametres, dparam TSRMLS_CC); + object_init(&dparam); + add_property_string(&dparam, "attribute", dpar->attribute); + add_property_string(&dparam, "value", dpar->value); + add_next_index_object(&dparametres, &dparam); } while ((dpar = dpar->next)); - add_assoc_object(return_value, "dparameters", dparametres TSRMLS_CC); + add_assoc_object(return_value, "dparameters", &dparametres); } else { add_property_long(return_value, "ifdparameters", 0); } @@ -3356,26 +3405,23 @@ PHP_FUNCTION(imap_bodystruct) if ((par = body->parameter)) { add_property_long(return_value, "ifparameters", 1); - MAKE_STD_ZVAL(parametres); - array_init(parametres); + array_init(¶metres); do { - MAKE_STD_ZVAL(param); - object_init(param); + object_init(¶m); if (par->attribute) { - add_property_string(param, "attribute", par->attribute, 1); + add_property_string(¶m, "attribute", par->attribute); } if (par->value) { - add_property_string(param, "value", par->value, 1); + add_property_string(¶m, "value", par->value); } - add_next_index_object(parametres, param TSRMLS_CC); + add_next_index_object(¶metres, ¶m); } while ((par = par->next)); } else { - MAKE_STD_ZVAL(parametres); - object_init(parametres); + object_init(¶metres); add_property_long(return_value, "ifparameters", 0); } - add_assoc_object(return_value, "parameters", parametres TSRMLS_CC); + add_assoc_object(return_value, "parameters", ¶metres); } /* }}} */ @@ -3385,30 +3431,31 @@ PHP_FUNCTION(imap_bodystruct) PHP_FUNCTION(imap_fetch_overview) { zval *streamind; - char *sequence; - int sequence_len; + zend_string *sequence; pils *imap_le_struct; - zval *myoverview; - char *address; - long status, flags = 0L; + zval myoverview; + zend_string *address; + zend_long status, flags = 0L; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rs|l", &streamind, &sequence, &sequence_len, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "rS|l", &streamind, &sequence, &flags) == FAILURE) { return; } if (flags && ((flags & ~FT_UID) != 0)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + php_error_docref(NULL, E_WARNING, "invalid value for the options parameter"); RETURN_FALSE; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } array_init(return_value); status = (flags & FT_UID) - ? mail_uid_sequence(imap_le_struct->imap_stream, sequence) - : mail_sequence(imap_le_struct->imap_stream, sequence); + ? mail_uid_sequence(imap_le_struct->imap_stream, (unsigned char*)ZSTR_VAL(sequence)) + : mail_sequence(imap_le_struct->imap_stream, (unsigned char*)ZSTR_VAL(sequence)); if (status) { MESSAGECACHE *elt; @@ -3418,48 +3465,47 @@ PHP_FUNCTION(imap_fetch_overview) for (i = 1; i <= imap_le_struct->imap_stream->nmsgs; i++) { if (((elt = mail_elt (imap_le_struct->imap_stream, i))->sequence) && (env = mail_fetch_structure (imap_le_struct->imap_stream, i, NIL, NIL))) { - MAKE_STD_ZVAL(myoverview); - object_init(myoverview); + object_init(&myoverview); if (env->subject) { - add_property_string(myoverview, "subject", env->subject, 1); + add_property_string(&myoverview, "subject", env->subject); } if (env->from) { env->from->next=NULL; - address =_php_rfc822_write_address(env->from TSRMLS_CC); + address =_php_rfc822_write_address(env->from); if (address) { - add_property_string(myoverview, "from", address, 0); + add_property_str(&myoverview, "from", address); } } if (env->to) { env->to->next = NULL; - address = _php_rfc822_write_address(env->to TSRMLS_CC); + address = _php_rfc822_write_address(env->to); if (address) { - add_property_string(myoverview, "to", address, 0); + add_property_str(&myoverview, "to", address); } } if (env->date) { - add_property_string(myoverview, "date", env->date, 1); + add_property_string(&myoverview, "date", (char*)env->date); } if (env->message_id) { - add_property_string(myoverview, "message_id", env->message_id, 1); + add_property_string(&myoverview, "message_id", env->message_id); } if (env->references) { - add_property_string(myoverview, "references", env->references, 1); + add_property_string(&myoverview, "references", env->references); } if (env->in_reply_to) { - add_property_string(myoverview, "in_reply_to", env->in_reply_to, 1); + add_property_string(&myoverview, "in_reply_to", env->in_reply_to); } - add_property_long(myoverview, "size", elt->rfc822_size); - add_property_long(myoverview, "uid", mail_uid(imap_le_struct->imap_stream, i)); - add_property_long(myoverview, "msgno", i); - add_property_long(myoverview, "recent", elt->recent); - add_property_long(myoverview, "flagged", elt->flagged); - add_property_long(myoverview, "answered", elt->answered); - add_property_long(myoverview, "deleted", elt->deleted); - add_property_long(myoverview, "seen", elt->seen); - add_property_long(myoverview, "draft", elt->draft); - add_property_long(myoverview, "udate", mail_longdate(elt)); - add_next_index_object(return_value, myoverview TSRMLS_CC); + add_property_long(&myoverview, "size", elt->rfc822_size); + add_property_long(&myoverview, "uid", mail_uid(imap_le_struct->imap_stream, i)); + add_property_long(&myoverview, "msgno", i); + add_property_long(&myoverview, "recent", elt->recent); + add_property_long(&myoverview, "flagged", elt->flagged); + add_property_long(&myoverview, "answered", elt->answered); + add_property_long(&myoverview, "deleted", elt->deleted); + add_property_long(&myoverview, "seen", elt->seen); + add_property_long(&myoverview, "draft", elt->draft); + add_property_long(&myoverview, "udate", mail_longdate(elt)); + add_next_index_object(return_value, &myoverview); } } } @@ -3471,9 +3517,8 @@ PHP_FUNCTION(imap_fetch_overview) PHP_FUNCTION(imap_mail_compose) { zval *envelope, *body; - char *key; - zval **data, **pvalue, **disp_data, **env_data; - ulong ind; + zend_string *key; + zval *data, *pvalue, *disp_data, *env_data; char *cookie = NIL; ENVELOPE *env; BODY *bod=NULL, *topbod=NULL; @@ -3481,187 +3526,181 @@ PHP_FUNCTION(imap_mail_compose) PARAMETER *param, *disp_param = NULL, *custom_headers_param = NULL, *tmp_param = NULL; char *tmp=NULL, *mystring=NULL, *t=NULL, *tempstring=NULL, *str_copy = NULL; int toppart = 0; + int first; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "aa", &envelope, &body) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "aa", &envelope, &body) == FAILURE) { return; } #define PHP_RFC822_PARSE_ADRLIST(target, value) \ - str_copy = estrndup(Z_STRVAL_PP(value), Z_STRLEN_PP(value)); \ + str_copy = estrndup(Z_STRVAL_P(value), Z_STRLEN_P(value)); \ rfc822_parse_adrlist(target, str_copy, "NO HOST"); \ efree(str_copy); env = mail_newenvelope(); - if (zend_hash_find(Z_ARRVAL_P(envelope), "remail", sizeof("remail"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "remail", sizeof("remail") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->remail = cpystr(Z_STRVAL_PP(pvalue)); + env->remail = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "return_path", sizeof("return_path"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "return_path", sizeof("return_path") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->return_path, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "date", sizeof("date"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "date", sizeof("date") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->date = cpystr(Z_STRVAL_PP(pvalue)); + env->date = (unsigned char*)cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "from", sizeof("from"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "from", sizeof("from") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->from, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "reply_to", sizeof("reply_to"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "reply_to", sizeof("reply_to") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->reply_to, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "in_reply_to", sizeof("in_reply_to"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "in_reply_to", sizeof("in_reply_to") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->in_reply_to = cpystr(Z_STRVAL_PP(pvalue)); + env->in_reply_to = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "subject", sizeof("subject"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "subject", sizeof("subject") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->subject = cpystr(Z_STRVAL_PP(pvalue)); + env->subject = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "to", sizeof("to"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "to", sizeof("to") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->to, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "cc", sizeof("cc"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "cc", sizeof("cc") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->cc, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "bcc", sizeof("bcc"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "bcc", sizeof("bcc") - 1)) != NULL) { convert_to_string_ex(pvalue); PHP_RFC822_PARSE_ADRLIST(&env->bcc, pvalue); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "message_id", sizeof("message_id"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "message_id", sizeof("message_id") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->message_id=cpystr(Z_STRVAL_PP(pvalue)); + env->message_id=cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_P(envelope), "custom_headers", sizeof("custom_headers"), (void **) &pvalue)== SUCCESS) { - if (Z_TYPE_PP(pvalue) == IS_ARRAY) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "custom_headers", sizeof("custom_headers") - 1)) != NULL) { + if (Z_TYPE_P(pvalue) == IS_ARRAY) { custom_headers_param = tmp_param = NULL; - while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &env_data) == SUCCESS) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pvalue), env_data) { custom_headers_param = mail_newbody_parameter(); convert_to_string_ex(env_data); - custom_headers_param->value = (char *) fs_get(Z_STRLEN_PP(env_data) + 1); + custom_headers_param->value = (char *) fs_get(Z_STRLEN_P(env_data) + 1); custom_headers_param->attribute = NULL; - memcpy(custom_headers_param->value, Z_STRVAL_PP(env_data), Z_STRLEN_PP(env_data) + 1); - zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); + memcpy(custom_headers_param->value, Z_STRVAL_P(env_data), Z_STRLEN_P(env_data) + 1); custom_headers_param->next = tmp_param; tmp_param = custom_headers_param; - } + } ZEND_HASH_FOREACH_END(); } } - zend_hash_internal_pointer_reset(Z_ARRVAL_P(body)); - if (zend_hash_get_current_data(Z_ARRVAL_P(body), (void **) &data) != SUCCESS || Z_TYPE_PP(data) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "body parameter must be a non-empty array"); - RETURN_FALSE; - } + first = 1; + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(body), data) { + if (first) { + first = 0; - if (Z_TYPE_PP(data) == IS_ARRAY) { - bod = mail_newbody(); - topbod = bod; + if (Z_TYPE_P(data) != IS_ARRAY) { + php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array"); + RETURN_FALSE; + } - if (zend_hash_find(Z_ARRVAL_PP(data), "type", sizeof("type"), (void **) &pvalue)== SUCCESS) { - convert_to_long_ex(pvalue); - bod->type = (short) Z_LVAL_PP(pvalue); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "encoding", sizeof("encoding"), (void **) &pvalue)== SUCCESS) { - convert_to_long_ex(pvalue); - bod->encoding = (short) Z_LVAL_PP(pvalue); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "charset", sizeof("charset"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - tmp_param = mail_newbody_parameter(); - tmp_param->value = cpystr(Z_STRVAL_PP(pvalue)); - tmp_param->attribute = cpystr("CHARSET"); - tmp_param->next = bod->parameter; - bod->parameter = tmp_param; - } - if (zend_hash_find(Z_ARRVAL_PP(data), "type.parameters", sizeof("type.parameters"), (void **) &pvalue)== SUCCESS) { - if(Z_TYPE_PP(pvalue) == IS_ARRAY) { - disp_param = tmp_param = NULL; - while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { - disp_param = mail_newbody_parameter(); - zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); - disp_param->attribute = cpystr(key); - convert_to_string_ex(disp_data); - disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); - memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); - zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); - disp_param->next = tmp_param; - tmp_param = disp_param; + bod = mail_newbody(); + topbod = bod; + + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "type", sizeof("type") - 1)) != NULL) { + convert_to_long_ex(pvalue); + bod->type = (short) Z_LVAL_P(pvalue); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "encoding", sizeof("encoding") - 1)) != NULL) { + convert_to_long_ex(pvalue); + bod->encoding = (short) Z_LVAL_P(pvalue); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "charset", sizeof("charset") - 1)) != NULL) { + convert_to_string_ex(pvalue); + tmp_param = mail_newbody_parameter(); + tmp_param->value = cpystr(Z_STRVAL_P(pvalue)); + tmp_param->attribute = cpystr("CHARSET"); + tmp_param->next = bod->parameter; + bod->parameter = tmp_param; + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "type.parameters", sizeof("type.parameters") - 1)) != NULL) { + if(Z_TYPE_P(pvalue) == IS_ARRAY) { + disp_param = tmp_param = NULL; + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) { + disp_param = mail_newbody_parameter(); + disp_param->attribute = cpystr(ZSTR_VAL(key)); + convert_to_string_ex(disp_data); + disp_param->value = (char *) fs_get(Z_STRLEN_P(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_P(disp_data), Z_STRLEN_P(disp_data) + 1); + disp_param->next = tmp_param; + tmp_param = disp_param; + } ZEND_HASH_FOREACH_END(); + bod->parameter = disp_param; } - bod->parameter = disp_param; } - } - if (zend_hash_find(Z_ARRVAL_PP(data), "subtype", sizeof("subtype"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->subtype = cpystr(Z_STRVAL_PP(pvalue)); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "id", sizeof("id"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->id = cpystr(Z_STRVAL_PP(pvalue)); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "description", sizeof("description"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->description = cpystr(Z_STRVAL_PP(pvalue)); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "disposition.type", sizeof("disposition.type"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->disposition.type = (char *) fs_get(Z_STRLEN_PP(pvalue) + 1); - memcpy(bod->disposition.type, Z_STRVAL_PP(pvalue), Z_STRLEN_PP(pvalue)+1); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "disposition", sizeof("disposition"), (void **) &pvalue)== SUCCESS) { - if (Z_TYPE_PP(pvalue) == IS_ARRAY) { - disp_param = tmp_param = NULL; - while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { - disp_param = mail_newbody_parameter(); - zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); - disp_param->attribute = cpystr(key); - convert_to_string_ex(disp_data); - disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); - memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); - zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); - disp_param->next = tmp_param; - tmp_param = disp_param; + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "subtype", sizeof("subtype") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->subtype = cpystr(Z_STRVAL_P(pvalue)); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "id", sizeof("id") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->id = cpystr(Z_STRVAL_P(pvalue)); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "description", sizeof("description") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->description = cpystr(Z_STRVAL_P(pvalue)); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "disposition.type", sizeof("disposition.type") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->disposition.type = (char *) fs_get(Z_STRLEN_P(pvalue) + 1); + memcpy(bod->disposition.type, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "disposition", sizeof("disposition") - 1)) != NULL) { + if (Z_TYPE_P(pvalue) == IS_ARRAY) { + disp_param = tmp_param = NULL; + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) { + disp_param = mail_newbody_parameter(); + disp_param->attribute = cpystr(ZSTR_VAL(key)); + convert_to_string_ex(disp_data); + disp_param->value = (char *) fs_get(Z_STRLEN_P(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_P(disp_data), Z_STRLEN_P(disp_data) + 1); + disp_param->next = tmp_param; + tmp_param = disp_param; + } ZEND_HASH_FOREACH_END(); + bod->disposition.parameter = disp_param; } - bod->disposition.parameter = disp_param; } - } - if (zend_hash_find(Z_ARRVAL_PP(data), "contents.data", sizeof("contents.data"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->contents.text.data = (char *) fs_get(Z_STRLEN_PP(pvalue) + 1); - memcpy(bod->contents.text.data, Z_STRVAL_PP(pvalue), Z_STRLEN_PP(pvalue)+1); - bod->contents.text.size = Z_STRLEN_PP(pvalue); - } else { - bod->contents.text.data = (char *) fs_get(1); - memcpy(bod->contents.text.data, "", 1); - bod->contents.text.size = 0; - } - if (zend_hash_find(Z_ARRVAL_PP(data), "lines", sizeof("lines"), (void **) &pvalue)== SUCCESS) { - convert_to_long_ex(pvalue); - bod->size.lines = Z_LVAL_PP(pvalue); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "bytes", sizeof("bytes"), (void **) &pvalue)== SUCCESS) { - convert_to_long_ex(pvalue); - bod->size.bytes = Z_LVAL_PP(pvalue); - } - if (zend_hash_find(Z_ARRVAL_PP(data), "md5", sizeof("md5"), (void **) &pvalue)== SUCCESS) { - convert_to_string_ex(pvalue); - bod->md5 = cpystr(Z_STRVAL_PP(pvalue)); - } - } - - zend_hash_move_forward(Z_ARRVAL_P(body)); - - while (zend_hash_get_current_data(Z_ARRVAL_P(body), (void **) &data) == SUCCESS) { - if (Z_TYPE_PP(data) == IS_ARRAY) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1); + memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1); + bod->contents.text.size = Z_STRLEN_P(pvalue); + } else { + bod->contents.text.data = fs_get(1); + memcpy(bod->contents.text.data, "", 1); + bod->contents.text.size = 0; + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "lines", sizeof("lines") - 1)) != NULL) { + convert_to_long_ex(pvalue); + bod->size.lines = Z_LVAL_P(pvalue); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "bytes", sizeof("bytes") - 1)) != NULL) { + convert_to_long_ex(pvalue); + bod->size.bytes = Z_LVAL_P(pvalue); + } + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "md5", sizeof("md5") - 1)) != NULL) { + convert_to_string_ex(pvalue); + bod->md5 = cpystr(Z_STRVAL_P(pvalue)); + } + } else if (Z_TYPE_P(data) == IS_ARRAY) { short type = -1; - if (zend_hash_find(Z_ARRVAL_PP(data), "type", sizeof("type"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "type", sizeof("type") - 1)) != NULL) { convert_to_long_ex(pvalue); - type = (short) Z_LVAL_PP(pvalue); + type = (short) Z_LVAL_P(pvalue); } if (!toppart) { @@ -3679,98 +3718,98 @@ PHP_FUNCTION(imap_mail_compose) bod->type = type; } - if (zend_hash_find(Z_ARRVAL_PP(data), "encoding", sizeof("encoding"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "encoding", sizeof("encoding") - 1)) != NULL) { convert_to_long_ex(pvalue); - bod->encoding = (short) Z_LVAL_PP(pvalue); + bod->encoding = (short) Z_LVAL_P(pvalue); } - if (zend_hash_find(Z_ARRVAL_PP(data), "charset", sizeof("charset"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "charset", sizeof("charset") - 1)) != NULL) { convert_to_string_ex(pvalue); tmp_param = mail_newbody_parameter(); - tmp_param->value = (char *) fs_get(Z_STRLEN_PP(pvalue) + 1); - memcpy(tmp_param->value, Z_STRVAL_PP(pvalue), Z_STRLEN_PP(pvalue) + 1); + tmp_param->value = (char *) fs_get(Z_STRLEN_P(pvalue) + 1); + memcpy(tmp_param->value, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue) + 1); tmp_param->attribute = cpystr("CHARSET"); tmp_param->next = bod->parameter; bod->parameter = tmp_param; } - if (zend_hash_find(Z_ARRVAL_PP(data), "type.parameters", sizeof("type.parameters"), (void **) &pvalue)== SUCCESS) { - if(Z_TYPE_PP(pvalue) == IS_ARRAY) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "type.parameters", sizeof("type.parameters") - 1)) != NULL) { + if (Z_TYPE_P(pvalue) == IS_ARRAY) { disp_param = tmp_param = NULL; - while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) { disp_param = mail_newbody_parameter(); - zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); - disp_param->attribute = cpystr(key); + disp_param->attribute = cpystr(ZSTR_VAL(key)); convert_to_string_ex(disp_data); - disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); - memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); - zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); + disp_param->value = (char *)fs_get(Z_STRLEN_P(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_P(disp_data), Z_STRLEN_P(disp_data) + 1); disp_param->next = tmp_param; tmp_param = disp_param; - } + } ZEND_HASH_FOREACH_END(); bod->parameter = disp_param; } } - if (zend_hash_find(Z_ARRVAL_PP(data), "subtype", sizeof("subtype"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "subtype", sizeof("subtype") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->subtype = cpystr(Z_STRVAL_PP(pvalue)); + bod->subtype = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_PP(data), "id", sizeof("id"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "id", sizeof("id") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->id = cpystr(Z_STRVAL_PP(pvalue)); + bod->id = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_PP(data), "description", sizeof("description"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "description", sizeof("description") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->description = cpystr(Z_STRVAL_PP(pvalue)); + bod->description = cpystr(Z_STRVAL_P(pvalue)); } - if (zend_hash_find(Z_ARRVAL_PP(data), "disposition.type", sizeof("disposition.type"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "disposition.type", sizeof("disposition.type") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->disposition.type = (char *) fs_get(Z_STRLEN_PP(pvalue) + 1); - memcpy(bod->disposition.type, Z_STRVAL_PP(pvalue), Z_STRLEN_PP(pvalue)+1); + bod->disposition.type = (char *) fs_get(Z_STRLEN_P(pvalue) + 1); + memcpy(bod->disposition.type, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1); } - if (zend_hash_find(Z_ARRVAL_PP(data), "disposition", sizeof("disposition"), (void **) &pvalue)== SUCCESS) { - if (Z_TYPE_PP(pvalue) == IS_ARRAY) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "disposition", sizeof("disposition") - 1)) != NULL) { + if (Z_TYPE_P(pvalue) == IS_ARRAY) { disp_param = tmp_param = NULL; - while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) { disp_param = mail_newbody_parameter(); - zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); - disp_param->attribute = cpystr(key); + disp_param->attribute = cpystr(ZSTR_VAL(key)); convert_to_string_ex(disp_data); - disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); - memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); - zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); + disp_param->value = (char *) fs_get(Z_STRLEN_P(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_P(disp_data), Z_STRLEN_P(disp_data) + 1); disp_param->next = tmp_param; tmp_param = disp_param; - } + } ZEND_HASH_FOREACH_END(); bod->disposition.parameter = disp_param; } } - if (zend_hash_find(Z_ARRVAL_PP(data), "contents.data", sizeof("contents.data"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->contents.text.data = (char *) fs_get(Z_STRLEN_PP(pvalue) + 1); - memcpy(bod->contents.text.data, Z_STRVAL_PP(pvalue), Z_STRLEN_PP(pvalue) + 1); - bod->contents.text.size = Z_STRLEN_PP(pvalue); + bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1); + memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue) + 1); + bod->contents.text.size = Z_STRLEN_P(pvalue); } else { - bod->contents.text.data = (char *) fs_get(1); + bod->contents.text.data = fs_get(1); memcpy(bod->contents.text.data, "", 1); bod->contents.text.size = 0; } - if (zend_hash_find(Z_ARRVAL_PP(data), "lines", sizeof("lines"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "lines", sizeof("lines") - 1)) != NULL) { convert_to_long_ex(pvalue); - bod->size.lines = Z_LVAL_PP(pvalue); + bod->size.lines = Z_LVAL_P(pvalue); } - if (zend_hash_find(Z_ARRVAL_PP(data), "bytes", sizeof("bytes"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "bytes", sizeof("bytes") - 1)) != NULL) { convert_to_long_ex(pvalue); - bod->size.bytes = Z_LVAL_PP(pvalue); + bod->size.bytes = Z_LVAL_P(pvalue); } - if (zend_hash_find(Z_ARRVAL_PP(data), "md5", sizeof("md5"), (void **) &pvalue)== SUCCESS) { + if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "md5", sizeof("md5") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->md5 = cpystr(Z_STRVAL_PP(pvalue)); + bod->md5 = cpystr(Z_STRVAL_P(pvalue)); } } - zend_hash_move_forward(Z_ARRVAL_P(body)); + } ZEND_HASH_FOREACH_END(); + + if (first) { + php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array"); + RETURN_FALSE; } if (bod && bod->type == TYPEMULTIPART && (!bod->nested.part || !bod->nested.part->next)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot generate multipart e-mail without components."); + php_error_docref(NULL, E_WARNING, "cannot generate multipart e-mail without components."); RETVAL_FALSE; goto done; } @@ -3829,7 +3868,7 @@ PHP_FUNCTION(imap_mail_compose) if (!cookie) { cookie = "-"; } else if (strlen(cookie) > (SENDBUFLEN - 2 - 2 - 2)) { /* validate cookie length -- + CRLF * 2 */ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "The boundary should be no longer than 4kb"); + php_error_docref(NULL, E_WARNING, "The boundary should be no longer than 4kb"); RETVAL_FALSE; goto done; } @@ -3868,7 +3907,8 @@ PHP_FUNCTION(imap_mail_compose) goto done; } - RETVAL_STRING(tempstring, 0); + RETVAL_STRING(tempstring); + efree(tempstring); done: if (tmp) { efree(tmp); @@ -3880,7 +3920,7 @@ done: /* {{{ _php_imap_mail */ -int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *cc, char *bcc, char* rpath TSRMLS_DC) +int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *cc, char *bcc, char* rpath) { #ifdef PHP_WIN32 int tsm_err; @@ -4000,12 +4040,12 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char * strlcat(bufferHeader, headers, bufferLen + 1); } - if (TSendMail(INI_STR("SMTP"), &tsm_err, &tsm_errmsg, bufferHeader, subject, bufferTo, message, bufferCc, bufferBcc, rpath TSRMLS_CC) != SUCCESS) { + if (TSendMail(INI_STR("SMTP"), &tsm_err, &tsm_errmsg, bufferHeader, subject, bufferTo, message, bufferCc, bufferBcc, rpath) != SUCCESS) { if (tsm_errmsg) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", tsm_errmsg); + php_error_docref(NULL, E_WARNING, "%s", tsm_errmsg); efree(tsm_errmsg); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", GetSMErrorText(tsm_err)); + php_error_docref(NULL, E_WARNING, "%s", GetSMErrorText(tsm_err)); } PHP_IMAP_CLEAN; return 0; @@ -4033,7 +4073,7 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char * return 1; } } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute mail delivery program"); + php_error_docref(NULL, E_WARNING, "Could not execute mail delivery program"); return 0; } #endif @@ -4045,34 +4085,35 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char * Send an email message */ PHP_FUNCTION(imap_mail) { - char *to=NULL, *message=NULL, *headers=NULL, *subject=NULL, *cc=NULL, *bcc=NULL, *rpath=NULL; - int to_len, message_len, headers_len, subject_len, cc_len, bcc_len, rpath_len, argc = ZEND_NUM_ARGS(); + zend_string *to=NULL, *message=NULL, *headers=NULL, *subject=NULL, *cc=NULL, *bcc=NULL, *rpath=NULL; + int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "sss|ssss", &to, &to_len, &subject, &subject_len, &message, &message_len, - &headers, &headers_len, &cc, &cc_len, &bcc, &bcc_len, &rpath, &rpath_len) == FAILURE) { + if (zend_parse_parameters(argc, "SSS|SSSS", &to, &subject, &message, + &headers, &cc, &bcc, &rpath) == FAILURE) { return; } /* To: */ - if (!to_len) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No to field in mail command"); + if (!ZSTR_LEN(to)) { + php_error_docref(NULL, E_WARNING, "No to field in mail command"); RETURN_FALSE; } /* Subject: */ - if (!subject_len) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No subject field in mail command"); + if (!ZSTR_LEN(subject)) { + php_error_docref(NULL, E_WARNING, "No subject field in mail command"); RETURN_FALSE; } /* message body */ - if (!message_len) { + if (!ZSTR_LEN(message)) { /* this is not really an error, so it is allowed. */ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No message string in mail command"); + php_error_docref(NULL, E_WARNING, "No message string in mail command"); message = NULL; } - if (_php_imap_mail(to, subject, message, headers, cc, bcc, rpath TSRMLS_CC)) { + if (_php_imap_mail(ZSTR_VAL(to), ZSTR_VAL(subject), ZSTR_VAL(message), headers?ZSTR_VAL(headers):NULL, cc?ZSTR_VAL(cc):NULL, + bcc?ZSTR_VAL(bcc):NULL, rpath?ZSTR_VAL(rpath):NULL)) { RETURN_TRUE; } else { RETURN_FALSE; @@ -4085,27 +4126,28 @@ PHP_FUNCTION(imap_mail) PHP_FUNCTION(imap_search) { zval *streamind; - char *criteria, *charset = NULL; - int criteria_len, charset_len = 0; - long flags = SE_FREE; + zend_string *criteria, *charset = NULL; + zend_long flags = SE_FREE; pils *imap_le_struct; char *search_criteria; MESSAGELIST *cur; int argc = ZEND_NUM_ARGS(); SEARCHPGM *pgm = NIL; - if (zend_parse_parameters(argc TSRMLS_CC, "rs|ls", &streamind, &criteria, &criteria_len, &flags, &charset, &charset_len) == FAILURE) { + if (zend_parse_parameters(argc, "rS|lS", &streamind, &criteria, &flags, &charset) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } - search_criteria = estrndup(criteria, criteria_len); + search_criteria = estrndup(ZSTR_VAL(criteria), ZSTR_LEN(criteria)); IMAPG(imap_messages) = IMAPG(imap_messages_tail) = NIL; pgm = mail_criteria(search_criteria); - mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? charset : NIL), pgm, flags); + mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? ZSTR_VAL(charset) : NIL), pgm, flags); if (pgm && !(flags & SE_FREE)) { mail_free_searchpgm(&pgm); @@ -4147,7 +4189,7 @@ PHP_FUNCTION(imap_alerts) cur = IMAPG(imap_alertstack); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT, 1); + add_next_index_string(return_value, (char*)cur->LTEXT); cur = cur->next; } mail_free_stringlist(&IMAPG(imap_alertstack)); @@ -4174,7 +4216,7 @@ PHP_FUNCTION(imap_errors) cur = IMAPG(imap_errorstack); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT, 1); + add_next_index_string(return_value, (char*)cur->LTEXT); cur = cur->next; } mail_free_errorlist(&IMAPG(imap_errorstack)); @@ -4200,7 +4242,7 @@ PHP_FUNCTION(imap_last_error) cur = IMAPG(imap_errorstack); while (cur != NIL) { if (cur->next == NIL) { - RETURN_STRING(cur->LTEXT, 1); + RETURN_STRING((char*)cur->LTEXT); } cur = cur->next; } @@ -4212,40 +4254,39 @@ PHP_FUNCTION(imap_last_error) PHP_FUNCTION(imap_mime_header_decode) { /* Author: Ted Parnefors <ted@mtv.se> */ - zval *myobject; - char *str, *string, *charset, encoding, *text, *decode; - int str_len; - long charset_token, encoding_token, end_token, end, offset=0, i; + zval myobject; + zend_string *str; + char *string, *charset, encoding, *text, *decode; + zend_long charset_token, encoding_token, end_token, end, offset=0, i; unsigned long newlength; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) { return; } array_init(return_value); - string = str; - end = str_len; + string = ZSTR_VAL(str); + end = ZSTR_LEN(str); charset = (char *) safe_emalloc((end + 1), 2, 0); text = &charset[end + 1]; while (offset < end) { /* Reached end of the string? */ - if ((charset_token = (long)php_memnstr(&string[offset], "=?", 2, string + end))) { /* Is there anything encoded in the string? */ - charset_token -= (long)string; + if ((charset_token = (zend_long)php_memnstr(&string[offset], "=?", 2, string + end))) { /* Is there anything encoded in the string? */ + charset_token -= (zend_long)string; if (offset != charset_token) { /* Is there anything before the encoded data? */ /* Retrieve unencoded data that is found before encoded data */ memcpy(text, &string[offset], charset_token-offset); text[charset_token - offset] = 0x00; - MAKE_STD_ZVAL(myobject); - object_init(myobject); - add_property_string(myobject, "charset", "default", 1); - add_property_string(myobject, "text", text, 1); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), (void *)&myobject, sizeof(zval *), NULL); + object_init(&myobject); + add_property_string(&myobject, "charset", "default"); + add_property_string(&myobject, "text", text); + zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &myobject); } - if ((encoding_token = (long)php_memnstr(&string[charset_token+2], "?", 1, string+end))) { /* Find token for encoding */ - encoding_token -= (long)string; - if ((end_token = (long)php_memnstr(&string[encoding_token+3], "?=", 2, string+end))) { /* Find token for end of encoded data */ - end_token -= (long)string; + if ((encoding_token = (zend_long)php_memnstr(&string[charset_token+2], "?", 1, string+end))) { /* Find token for encoding */ + encoding_token -= (zend_long)string; + if ((end_token = (zend_long)php_memnstr(&string[encoding_token+3], "?=", 2, string+end))) { /* Find token for end of encoded data */ + end_token -= (zend_long)string; memcpy(charset, &string[charset_token + 2], encoding_token - (charset_token + 2)); /* Extract charset encoding */ charset[encoding_token-(charset_token + 2)] = 0x00; encoding=string[encoding_token + 1]; /* Extract encoding from string */ @@ -4263,11 +4304,10 @@ PHP_FUNCTION(imap_mime_header_decode) zval_dtor(return_value); RETURN_FALSE; } - MAKE_STD_ZVAL(myobject); - object_init(myobject); - add_property_string(myobject, "charset", charset, 1); - add_property_string(myobject, "text", decode, 1); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), (void *)&myobject, sizeof(zval *), NULL); + object_init(&myobject); + add_property_string(&myobject, "charset", charset); + add_property_string(&myobject, "text", decode); + zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &myobject); /* only free decode if it was allocated by rfc822_qprint or rfc822_base64 */ if (decode != text) { @@ -4293,11 +4333,10 @@ PHP_FUNCTION(imap_mime_header_decode) which rendered the remainder of the string impossible for us to decode. */ memcpy(text, &string[charset_token], end - charset_token); /* Extract unencoded text from string */ text[end - charset_token] = 0x00; - MAKE_STD_ZVAL(myobject); - object_init(myobject); - add_property_string(myobject, "charset", "default", 1); - add_property_string(myobject, "text", text, 1); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), (void *)&myobject, sizeof(zval *), NULL); + object_init(&myobject); + add_property_string(&myobject, "charset", "default"); + add_property_string(&myobject, "text", text); + zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &myobject); offset = end; /* We have reached the end of the string. */ } @@ -4322,7 +4361,7 @@ static long _php_rfc822_soutr (void *stream, char *string) /* {{{ _php_rfc822_write_address */ -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist) { char address[MAILTMPLEN]; smart_str ret = {0}; @@ -4336,7 +4375,7 @@ static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) rfc822_output_address_list(&buf, addresslist, 0, NULL); rfc822_output_flush(&buf); smart_str_0(&ret); - return ret.c; + return ret.s; } /* }}} */ @@ -4402,41 +4441,40 @@ static int _php_imap_address_size (ADDRESS *addresslist) /* {{{ _php_rfc822_write_address */ -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist) { char address[SENDBUFLEN]; if (_php_imap_address_size(addresslist) >= SENDBUFLEN) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Address buffer overflow"); + php_error_docref(NULL, E_ERROR, "Address buffer overflow"); return NULL; } address[0] = 0; rfc822_write_address(address, addresslist); - return estrdup(address); + return zend_string_init(address, strlen(address), 0); } /* }}} */ #endif /* {{{ _php_imap_parse_address */ -static char* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRMLS_DC) +static zend_string* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress) { - char *fulladdress; + zend_string *fulladdress; ADDRESS *addresstmp; - zval *tmpvals; + zval tmpvals; addresstmp = addresslist; - fulladdress = _php_rfc822_write_address(addresstmp TSRMLS_CC); + fulladdress = _php_rfc822_write_address(addresstmp); addresstmp = addresslist; do { - MAKE_STD_ZVAL(tmpvals); - object_init(tmpvals); - if (addresstmp->personal) add_property_string(tmpvals, "personal", addresstmp->personal, 1); - if (addresstmp->adl) add_property_string(tmpvals, "adl", addresstmp->adl, 1); - if (addresstmp->mailbox) add_property_string(tmpvals, "mailbox", addresstmp->mailbox, 1); - if (addresstmp->host) add_property_string(tmpvals, "host", addresstmp->host, 1); - add_next_index_object(paddress, tmpvals TSRMLS_CC); + object_init(&tmpvals); + if (addresstmp->personal) add_property_string(&tmpvals, "personal", addresstmp->personal); + if (addresstmp->adl) add_property_string(&tmpvals, "adl", addresstmp->adl); + if (addresstmp->mailbox) add_property_string(&tmpvals, "mailbox", addresstmp->mailbox); + if (addresstmp->host) add_property_string(&tmpvals, "host", addresstmp->host); + add_next_index_object(paddress, &tmpvals); } while ((addresstmp = addresstmp->next)); return fulladdress; } @@ -4444,101 +4482,94 @@ static char* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRML /* {{{ _php_make_header_object */ -static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) +static void _php_make_header_object(zval *myzvalue, ENVELOPE *en) { - zval *paddress; - char *fulladdress=NULL; + zval paddress; + zend_string *fulladdress=NULL; object_init(myzvalue); - if (en->remail) add_property_string(myzvalue, "remail", en->remail, 1); - if (en->date) add_property_string(myzvalue, "date", en->date, 1); - if (en->date) add_property_string(myzvalue, "Date", en->date, 1); - if (en->subject) add_property_string(myzvalue, "subject", en->subject, 1); - if (en->subject) add_property_string(myzvalue, "Subject", en->subject, 1); - if (en->in_reply_to) add_property_string(myzvalue, "in_reply_to", en->in_reply_to, 1); - if (en->message_id) add_property_string(myzvalue, "message_id", en->message_id, 1); - if (en->newsgroups) add_property_string(myzvalue, "newsgroups", en->newsgroups, 1); - if (en->followup_to) add_property_string(myzvalue, "followup_to", en->followup_to, 1); - if (en->references) add_property_string(myzvalue, "references", en->references, 1); + if (en->remail) add_property_string(myzvalue, "remail", en->remail); + if (en->date) add_property_string(myzvalue, "date", (char*)en->date); + if (en->date) add_property_string(myzvalue, "Date", (char*)en->date); + if (en->subject) add_property_string(myzvalue, "subject", en->subject); + if (en->subject) add_property_string(myzvalue, "Subject", en->subject); + if (en->in_reply_to) add_property_string(myzvalue, "in_reply_to", en->in_reply_to); + if (en->message_id) add_property_string(myzvalue, "message_id", en->message_id); + if (en->newsgroups) add_property_string(myzvalue, "newsgroups", en->newsgroups); + if (en->followup_to) add_property_string(myzvalue, "followup_to", en->followup_to); + if (en->references) add_property_string(myzvalue, "references", en->references); if (en->to) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->to, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->to, &paddress); if (fulladdress) { - add_property_string(myzvalue, "toaddress", fulladdress, 0); + add_property_str(myzvalue, "toaddress", fulladdress); } - add_assoc_object(myzvalue, "to", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "to", &paddress); } if (en->from) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->from, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->from, &paddress); if (fulladdress) { - add_property_string(myzvalue, "fromaddress", fulladdress, 0); + add_property_str(myzvalue, "fromaddress", fulladdress); } - add_assoc_object(myzvalue, "from", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "from", &paddress); } if (en->cc) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->cc, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->cc, &paddress); if (fulladdress) { - add_property_string(myzvalue, "ccaddress", fulladdress, 0); + add_property_str(myzvalue, "ccaddress", fulladdress); } - add_assoc_object(myzvalue, "cc", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "cc", &paddress); } if (en->bcc) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->bcc, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->bcc, &paddress); if (fulladdress) { - add_property_string(myzvalue, "bccaddress", fulladdress, 0); + add_property_str(myzvalue, "bccaddress", fulladdress); } - add_assoc_object(myzvalue, "bcc", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "bcc", &paddress); } if (en->reply_to) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->reply_to, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->reply_to, &paddress); if (fulladdress) { - add_property_string(myzvalue, "reply_toaddress", fulladdress, 0); + add_property_str(myzvalue, "reply_toaddress", fulladdress); } - add_assoc_object(myzvalue, "reply_to", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "reply_to", &paddress); } if (en->sender) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->sender, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->sender, &paddress); if (fulladdress) { - add_property_string(myzvalue, "senderaddress", fulladdress, 0); + add_property_str(myzvalue, "senderaddress", fulladdress); } - add_assoc_object(myzvalue, "sender", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "sender", &paddress); } if (en->return_path) { - MAKE_STD_ZVAL(paddress); - array_init(paddress); - fulladdress = _php_imap_parse_address(en->return_path, paddress TSRMLS_CC); + array_init(&paddress); + fulladdress = _php_imap_parse_address(en->return_path, &paddress); if (fulladdress) { - add_property_string(myzvalue, "return_pathaddress", fulladdress, 0); + add_property_str(myzvalue, "return_pathaddress", fulladdress); } - add_assoc_object(myzvalue, "return_path", paddress TSRMLS_CC); + add_assoc_object(myzvalue, "return_path", &paddress); } } /* }}} */ /* {{{ _php_imap_add_body */ -void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC) +void _php_imap_add_body(zval *arg, BODY *body) { - zval *parametres, *param, *dparametres, *dparam; + zval parametres, param, dparametres, dparam; PARAMETER *par, *dpar; PART *part; @@ -4552,21 +4583,21 @@ void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC) if (body->subtype) { add_property_long(arg, "ifsubtype", 1); - add_property_string(arg, "subtype", body->subtype, 1); + add_property_string(arg, "subtype", body->subtype); } else { add_property_long(arg, "ifsubtype", 0); } if (body->description) { add_property_long(arg, "ifdescription", 1); - add_property_string(arg, "description", body->description, 1); + add_property_string(arg, "description", body->description); } else { add_property_long(arg, "ifdescription", 0); } if (body->id) { add_property_long(arg, "ifid", 1); - add_property_string(arg, "id", body->id, 1); + add_property_string(arg, "id", body->id); } else { add_property_long(arg, "ifid", 0); } @@ -4582,7 +4613,7 @@ void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC) #ifdef IMAP41 if (body->disposition.type) { add_property_long(arg, "ifdisposition", 1); - add_property_string(arg, "disposition", body->disposition.type, 1); + add_property_string(arg, "disposition", body->disposition.type); } else { add_property_long(arg, "ifdisposition", 0); } @@ -4590,16 +4621,14 @@ void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC) if (body->disposition.parameter) { dpar = body->disposition.parameter; add_property_long(arg, "ifdparameters", 1); - MAKE_STD_ZVAL(dparametres); - array_init(dparametres); + array_init(&dparametres); do { - MAKE_STD_ZVAL(dparam); - object_init(dparam); - add_property_string(dparam, "attribute", dpar->attribute, 1); - add_property_string(dparam, "value", dpar->value, 1); - add_next_index_object(dparametres, dparam TSRMLS_CC); + object_init(&dparam); + add_property_string(&dparam, "attribute", dpar->attribute); + add_property_string(&dparam, "value", dpar->value); + add_next_index_object(&dparametres, &dparam); } while ((dpar = dpar->next)); - add_assoc_object(arg, "dparameters", dparametres TSRMLS_CC); + add_assoc_object(arg, "dparameters", &dparametres); } else { add_property_long(arg, "ifdparameters", 0); } @@ -4608,50 +4637,43 @@ void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC) if ((par = body->parameter)) { add_property_long(arg, "ifparameters", 1); - MAKE_STD_ZVAL(parametres); - array_init(parametres); + array_init(¶metres); do { - MAKE_STD_ZVAL(param); - object_init(param); + object_init(¶m); if (par->attribute) { - add_property_string(param, "attribute", par->attribute, 1); + add_property_string(¶m, "attribute", par->attribute); } if (par->value) { - add_property_string(param, "value", par->value, 1); + add_property_string(¶m, "value", par->value); } - add_next_index_object(parametres, param TSRMLS_CC); + add_next_index_object(¶metres, ¶m); } while ((par = par->next)); } else { - MAKE_STD_ZVAL(parametres); - object_init(parametres); + object_init(¶metres); add_property_long(arg, "ifparameters", 0); } - add_assoc_object(arg, "parameters", parametres TSRMLS_CC); + add_assoc_object(arg, "parameters", ¶metres); /* multipart message ? */ if (body->type == TYPEMULTIPART) { - MAKE_STD_ZVAL(parametres); - array_init(parametres); + array_init(¶metres); for (part = body->CONTENT_PART; part; part = part->next) { - MAKE_STD_ZVAL(param); - object_init(param); - _php_imap_add_body(param, &part->body TSRMLS_CC); - add_next_index_object(parametres, param TSRMLS_CC); + object_init(¶m); + _php_imap_add_body(¶m, &part->body); + add_next_index_object(¶metres, ¶m); } - add_assoc_object(arg, "parts", parametres TSRMLS_CC); + add_assoc_object(arg, "parts", ¶metres); } /* encapsulated message ? */ if ((body->type == TYPEMESSAGE) && (!strcasecmp(body->subtype, "rfc822"))) { body = body->CONTENT_MSG_BODY; - MAKE_STD_ZVAL(parametres); - array_init(parametres); - MAKE_STD_ZVAL(param); - object_init(param); - _php_imap_add_body(param, body TSRMLS_CC); - add_next_index_object(parametres, param TSRMLS_CC); - add_assoc_object(arg, "parts", parametres TSRMLS_CC); + array_init(¶metres); + object_init(¶m); + _php_imap_add_body(¶m, body); + add_next_index_object(¶metres, ¶m); + add_assoc_object(arg, "parts", ¶metres); } } /* }}} */ @@ -4709,17 +4731,19 @@ PHP_FUNCTION(imap_thread) { zval *streamind; pils *imap_le_struct; - long flags = SE_FREE; + zend_long flags = SE_FREE; char criteria[] = "ALL"; THREADNODE *top; int argc = ZEND_NUM_ARGS(); SEARCHPGM *pgm = NIL; - if (zend_parse_parameters(argc TSRMLS_CC, "r|l", &streamind, &flags) == FAILURE) { + if (zend_parse_parameters(argc, "r|l", &streamind, &flags) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); + if ((imap_le_struct = (pils *)zend_fetch_resource(Z_RES_P(streamind), "imap", le_imap)) == NULL) { + RETURN_FALSE; + } pgm = mail_criteria(criteria); top = mail_thread(imap_le_struct->imap_stream, "REFERENCES", NIL, pgm, flags); @@ -4728,7 +4752,7 @@ PHP_FUNCTION(imap_thread) } if(top == NIL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function returned an empty tree"); + php_error_docref(NULL, E_WARNING, "Function returned an empty tree"); RETURN_FALSE; } @@ -4745,10 +4769,10 @@ PHP_FUNCTION(imap_thread) Set or fetch imap timeout */ PHP_FUNCTION(imap_timeout) { - long ttype, timeout=-1; + zend_long ttype, timeout=-1; int timeout_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &ttype, &timeout) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "l|l", &ttype, &timeout) == FAILURE) { RETURN_FALSE; } @@ -4771,7 +4795,7 @@ PHP_FUNCTION(imap_timeout) break; } - timeout = (long) mail_parameters(NIL, timeout_type, NIL); + timeout = (zend_long) mail_parameters(NIL, timeout_type, NIL); RETURN_LONG(timeout); } else if (timeout >= 0) { switch (ttype) { @@ -4792,7 +4816,7 @@ PHP_FUNCTION(imap_timeout) break; } - timeout = (long) mail_parameters(NIL, timeout_type, (void *) timeout); + timeout = (zend_long) mail_parameters(NIL, timeout_type, (void *) timeout); RETURN_TRUE; } else { RETURN_FALSE; @@ -4803,7 +4827,6 @@ PHP_FUNCTION(imap_timeout) #define GETS_FETCH_SIZE 8196LU static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md) /* {{{ */ { - TSRMLS_FETCH(); /* write to the gets stream if it is set, otherwise forward to c-clients gets */ @@ -4822,10 +4845,10 @@ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DA } if (!f(stream, read, buf)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to read from socket"); + php_error_docref(NULL, E_WARNING, "Failed to read from socket"); break; } else if (read != php_stream_write(IMAPG(gets_stream), buf, read)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to write to stream"); + php_error_docref(NULL, E_WARNING, "Failed to write to stream"); break; } } @@ -4836,7 +4859,7 @@ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DA if (f(stream, size, buf)) { buf[size] = '\0'; } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to read from socket"); + php_error_docref(NULL, E_WARNING, "Failed to read from socket"); free(buf); buf = NULL; } @@ -4850,7 +4873,6 @@ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DA PHP_IMAP_EXPORT void mm_searched(MAILSTREAM *stream, unsigned long number) { MESSAGELIST *cur = NIL; - TSRMLS_FETCH(); if (IMAPG(imap_messages) == NIL) { IMAPG(imap_messages) = mail_newmessagelist(); @@ -4883,12 +4905,11 @@ PHP_IMAP_EXPORT void mm_flags(MAILSTREAM *stream, unsigned long number) PHP_IMAP_EXPORT void mm_notify(MAILSTREAM *stream, char *str, long errflg) { STRINGLIST *cur = NIL; - TSRMLS_FETCH(); if (strncmp(str, "[ALERT] ", 8) == 0) { if (IMAPG(imap_alertstack) == NIL) { IMAPG(imap_alertstack) = mail_newstringlist(); - IMAPG(imap_alertstack)->LSIZE = strlen(IMAPG(imap_alertstack)->LTEXT = cpystr(str)); + IMAPG(imap_alertstack)->LSIZE = strlen((char*)(IMAPG(imap_alertstack)->LTEXT = (unsigned char*)cpystr(str))); IMAPG(imap_alertstack)->next = NIL; } else { cur = IMAPG(imap_alertstack); @@ -4897,7 +4918,7 @@ PHP_IMAP_EXPORT void mm_notify(MAILSTREAM *stream, char *str, long errflg) } cur->next = mail_newstringlist (); cur = cur->next; - cur->LSIZE = strlen(cur->LTEXT = cpystr(str)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(str))); cur->next = NIL; } } @@ -4907,14 +4928,13 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, { STRINGLIST *cur=NIL; FOBJECTLIST *ocur=NIL; - TSRMLS_FETCH(); if (IMAPG(folderlist_style) == FLIST_OBJECT) { /* build up a the new array of objects */ /* Author: CJH */ if (IMAPG(imap_folder_objects) == NIL) { IMAPG(imap_folder_objects) = mail_newfolderobjectlist(); - IMAPG(imap_folder_objects)->LSIZE=strlen(IMAPG(imap_folder_objects)->LTEXT=cpystr(mailbox)); + IMAPG(imap_folder_objects)->LSIZE=strlen((char*)(IMAPG(imap_folder_objects)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_folder_objects)->delimiter = delimiter; IMAPG(imap_folder_objects)->attributes = attributes; IMAPG(imap_folder_objects)->next = NIL; @@ -4923,7 +4943,7 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, ocur=IMAPG(imap_folder_objects_tail); ocur->next=mail_newfolderobjectlist(); ocur=ocur->next; - ocur->LSIZE = strlen(ocur->LTEXT = cpystr(mailbox)); + ocur->LSIZE = strlen((char*)(ocur->LTEXT = (unsigned char*)cpystr(mailbox))); ocur->delimiter = delimiter; ocur->attributes = attributes; ocur->next = NIL; @@ -4935,14 +4955,14 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, if (!(attributes & LATT_NOSELECT)) { if (IMAPG(imap_folders) == NIL) { IMAPG(imap_folders)=mail_newstringlist(); - IMAPG(imap_folders)->LSIZE=strlen(IMAPG(imap_folders)->LTEXT=cpystr(mailbox)); + IMAPG(imap_folders)->LSIZE=strlen((char*)(IMAPG(imap_folders)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_folders)->next=NIL; IMAPG(imap_folders_tail) = IMAPG(imap_folders); } else { cur=IMAPG(imap_folders_tail); cur->next=mail_newstringlist (); cur=cur->next; - cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(mailbox))); cur->next = NIL; IMAPG(imap_folders_tail) = cur; } @@ -4954,14 +4974,13 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, { STRINGLIST *cur=NIL; FOBJECTLIST *ocur=NIL; - TSRMLS_FETCH(); if (IMAPG(folderlist_style) == FLIST_OBJECT) { /* build the array of objects */ /* Author: CJH */ if (IMAPG(imap_sfolder_objects) == NIL) { IMAPG(imap_sfolder_objects) = mail_newfolderobjectlist(); - IMAPG(imap_sfolder_objects)->LSIZE=strlen(IMAPG(imap_sfolder_objects)->LTEXT=cpystr(mailbox)); + IMAPG(imap_sfolder_objects)->LSIZE = strlen((char*)(IMAPG(imap_sfolder_objects)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_sfolder_objects)->delimiter = delimiter; IMAPG(imap_sfolder_objects)->attributes = attributes; IMAPG(imap_sfolder_objects)->next = NIL; @@ -4970,7 +4989,7 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, ocur=IMAPG(imap_sfolder_objects_tail); ocur->next=mail_newfolderobjectlist(); ocur=ocur->next; - ocur->LSIZE=strlen(ocur->LTEXT = cpystr(mailbox)); + ocur->LSIZE=strlen((char*)(ocur->LTEXT = (unsigned char*)cpystr(mailbox))); ocur->delimiter = delimiter; ocur->attributes = attributes; ocur->next = NIL; @@ -4980,14 +4999,14 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, /* build the old simple array for imap_listsubscribed() */ if (IMAPG(imap_sfolders) == NIL) { IMAPG(imap_sfolders)=mail_newstringlist(); - IMAPG(imap_sfolders)->LSIZE=strlen(IMAPG(imap_sfolders)->LTEXT=cpystr(mailbox)); + IMAPG(imap_sfolders)->LSIZE=strlen((char*)(IMAPG(imap_sfolders)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_sfolders)->next=NIL; IMAPG(imap_sfolders_tail) = IMAPG(imap_sfolders); } else { cur=IMAPG(imap_sfolders_tail); cur->next=mail_newstringlist (); cur=cur->next; - cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(mailbox))); cur->next = NIL; IMAPG(imap_sfolders_tail) = cur; } @@ -4996,7 +5015,6 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, PHP_IMAP_EXPORT void mm_status(MAILSTREAM *stream, char *mailbox, MAILSTATUS *status) { - TSRMLS_FETCH(); IMAPG(status_flags)=status->flags; if (IMAPG(status_flags) & SA_MESSAGES) { @@ -5019,13 +5037,12 @@ PHP_IMAP_EXPORT void mm_status(MAILSTREAM *stream, char *mailbox, MAILSTATUS *st PHP_IMAP_EXPORT void mm_log(char *str, long errflg) { ERRORLIST *cur = NIL; - TSRMLS_FETCH(); /* Author: CJH */ if (errflg != NIL) { /* CJH: maybe put these into a more comprehensive log for debugging purposes? */ if (IMAPG(imap_errorstack) == NIL) { IMAPG(imap_errorstack) = mail_newerrorlist(); - IMAPG(imap_errorstack)->LSIZE = strlen(IMAPG(imap_errorstack)->LTEXT = cpystr(str)); + IMAPG(imap_errorstack)->LSIZE = strlen((char*)(IMAPG(imap_errorstack)->LTEXT = (unsigned char*)cpystr(str))); IMAPG(imap_errorstack)->errflg = errflg; IMAPG(imap_errorstack)->next = NIL; } else { @@ -5035,7 +5052,7 @@ PHP_IMAP_EXPORT void mm_log(char *str, long errflg) } cur->next = mail_newerrorlist(); cur = cur->next; - cur->LSIZE = strlen(cur->LTEXT = cpystr(str)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(str))); cur->errflg = errflg; cur->next = NIL; } @@ -5051,7 +5068,6 @@ PHP_IMAP_EXPORT void mm_dlog(char *str) PHP_IMAP_EXPORT void mm_login(NETMBX *mb, char *user, char *pwd, long trial) { - TSRMLS_FETCH(); if (*mb->user) { strlcpy (user, mb->user, MAILTMPLEN); |