summaryrefslogtreecommitdiff
path: root/ext/imap/php_imap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r--ext/imap/php_imap.c1694
1 files changed, 852 insertions, 842 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 8e70163bc6..a8eae27b0e 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, &params) == FAILURE) {
+ if (zend_parse_parameters(argc, "PSS|lla", &mailbox, &user,
+ &passwd, &flags, &retries, &params) == 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_CHECK(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,44 +1904,44 @@ 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;
}
array_init(return_value);
- delim = emalloc(2);
+ 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,44 +2220,44 @@ 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;
}
array_init(return_value);
- delim = emalloc(2);
+ 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_CHECK(body, len, 1);
+ RETVAL_STRINGL(body, len);
}
/* }}} */
@@ -2367,41 +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;
}
- if (len > INT_MAX) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "String too long, max is %d", INT_MAX);
- efree(body);
- RETURN_FALSE;
- }
- RETVAL_STRINGL_CHECK(body, len, 1);
+ RETVAL_STRINGL(body, len);
}
/* }}} */
@@ -2410,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, &section, &section_len, &flags)) {
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "rzl|Sl", &stream, &out, &msgno, &section, &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:
@@ -2437,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;
}
@@ -2447,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;
@@ -2463,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);
}
/* }}} */
@@ -2486,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_CHECK(decode, newlength, 1);
+ RETVAL_STRINGL(decode, newlength);
fs_give((void**) &decode);
}
/* }}} */
@@ -2509,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_CHECK(decode, newlength, 1);
+ RETVAL_STRINGL(decode, newlength);
fs_give((void**) &decode);
}
/* }}} */
@@ -2532,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_CHECK(decode, newlength, 1);
+ RETVAL_STRINGL(decode, newlength);
fs_give((void**) &decode);
}
/* }}} */
@@ -2560,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);
@@ -2591,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);
}
/* }}} */
@@ -2602,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_STRINGL_CHECK(string, strlen(string), 0);
+ RETVAL_STR(string);
} else {
RETURN_FALSE;
}
@@ -2642,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);
@@ -2664,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);
@@ -2689,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;
}
@@ -2702,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);
}
@@ -2744,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... */
@@ -2757,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;
@@ -2771,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;
@@ -2787,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) {
@@ -2813,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;
}
@@ -2870,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);
}
/* }}} */
@@ -2883,12 +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;
- size_t outlen;
+ int inlen, outlen;
enum {
ST_NORMAL, /* printable text */
ST_ENCODE0, /* encoded text rotation... */
@@ -2896,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;
@@ -2935,10 +2977,10 @@ PHP_FUNCTION(imap_utf7_encode)
}
/* allocate output buffer */
- out = safe_emalloc_string(1, outlen, 1);
+ out = zend_string_safe_alloc(1, outlen, 0, 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) {
@@ -2985,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);
}
/* }}} */
@@ -3004,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 {
- RETVAL_STRINGL_CHECK((char *)out, strlen(out), 1);
+ RETURN_STRING((char *)out);
}
}
/* }}} */
@@ -3052,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;
}
/* }}} */
@@ -3073,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;
}
/* }}} */
@@ -3095,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;
@@ -3105,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 {
@@ -3134,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);
@@ -3155,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
@@ -3181,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)));
}
/* }}} */
@@ -3190,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;
}
@@ -3215,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));
}
@@ -3233,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));
@@ -3274,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, &section, &section_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlS", &streamind, &msg, &section) == 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;
@@ -3309,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);
}
@@ -3336,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);
}
@@ -3344,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);
}
@@ -3362,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(&parametres);
do {
- MAKE_STD_ZVAL(param);
- object_init(param);
+ object_init(&param);
if (par->attribute) {
- add_property_string(param, "attribute", par->attribute, 1);
+ add_property_string(&param, "attribute", par->attribute);
}
if (par->value) {
- add_property_string(param, "value", par->value, 1);
+ add_property_string(&param, "value", par->value);
}
- add_next_index_object(parametres, param TSRMLS_CC);
+ add_next_index_object(&parametres, &param);
} while ((par = par->next));
} else {
- MAKE_STD_ZVAL(parametres);
- object_init(parametres);
+ object_init(&parametres);
add_property_long(return_value, "ifparameters", 0);
}
- add_assoc_object(return_value, "parameters", parametres TSRMLS_CC);
+ add_assoc_object(return_value, "parameters", &parametres);
}
/* }}} */
@@ -3391,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;
@@ -3424,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);
}
}
}
@@ -3477,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;
@@ -3487,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) {
@@ -3685,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;
}
@@ -3835,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;
}
@@ -3874,7 +3907,8 @@ PHP_FUNCTION(imap_mail_compose)
goto done;
}
- RETVAL_STRING(tempstring, 0);
+ RETVAL_STRING(tempstring);
+ efree(tempstring);
done:
if (tmp) {
efree(tmp);
@@ -3886,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;
@@ -4006,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;
@@ -4039,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
@@ -4051,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;
@@ -4091,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);
@@ -4153,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));
@@ -4180,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));
@@ -4206,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;
}
@@ -4218,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 */
@@ -4269,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) {
@@ -4299,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. */
}
@@ -4328,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};
@@ -4342,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;
}
/* }}} */
@@ -4408,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;
}
@@ -4450,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;
@@ -4558,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);
}
@@ -4588,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);
}
@@ -4596,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);
}
@@ -4614,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(&parametres);
do {
- MAKE_STD_ZVAL(param);
- object_init(param);
+ object_init(&param);
if (par->attribute) {
- add_property_string(param, "attribute", par->attribute, 1);
+ add_property_string(&param, "attribute", par->attribute);
}
if (par->value) {
- add_property_string(param, "value", par->value, 1);
+ add_property_string(&param, "value", par->value);
}
- add_next_index_object(parametres, param TSRMLS_CC);
+ add_next_index_object(&parametres, &param);
} while ((par = par->next));
} else {
- MAKE_STD_ZVAL(parametres);
- object_init(parametres);
+ object_init(&parametres);
add_property_long(arg, "ifparameters", 0);
}
- add_assoc_object(arg, "parameters", parametres TSRMLS_CC);
+ add_assoc_object(arg, "parameters", &parametres);
/* multipart message ? */
if (body->type == TYPEMULTIPART) {
- MAKE_STD_ZVAL(parametres);
- array_init(parametres);
+ array_init(&parametres);
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(&param);
+ _php_imap_add_body(&param, &part->body);
+ add_next_index_object(&parametres, &param);
}
- add_assoc_object(arg, "parts", parametres TSRMLS_CC);
+ add_assoc_object(arg, "parts", &parametres);
}
/* 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(&parametres);
+ object_init(&param);
+ _php_imap_add_body(&param, body);
+ add_next_index_object(&parametres, &param);
+ add_assoc_object(arg, "parts", &parametres);
}
}
/* }}} */
@@ -4715,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);
@@ -4734,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;
}
@@ -4751,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;
}
@@ -4777,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) {
@@ -4798,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;
@@ -4809,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 */
@@ -4828,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;
}
}
@@ -4842,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;
}
@@ -4856,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();
@@ -4889,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);
@@ -4903,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;
}
}
@@ -4913,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;
@@ -4929,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;
@@ -4941,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;
}
@@ -4960,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;
@@ -4976,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;
@@ -4986,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;
}
@@ -5002,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) {
@@ -5025,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 {
@@ -5041,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;
}
@@ -5057,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);