hi, Can you open a bug report and post a link to the patch please? So we won't loose it in the ML archive. A test case would also be useful.
Cheers, On Wed, Oct 21, 2009 at 12:10 AM, Nick Fortenberry <n...@mailtrust.com> wrote: > Hey everyone, > > Jake Levitt and I created this patch which adds the option to set a message's > INTERNALDATE when appending it to a mail server using imap. Any chance we > can get this included into the php 5.3 and 6 development branches? The diff > below was done against the php-src/branches/PHP_5_3 branch. If you guys need > me to apply the changes to a different branch or snapshot, please let me know. > > Here's the svn diff (done in my repo)... if you need something else please > let me know: > > > Index: ext/imap/php_imap.c > =================================================================== > --- ext/imap/php_imap.c (revision 3405) > +++ ext/imap/php_imap.c (revision 3406) > @@ -41,6 +41,7 @@ > #include "ext/standard/info.h" > #include "ext/standard/file.h" > #include "ext/standard/php_smart_str.h" > +#include "ext/pcre/php_pcre.h" > > #ifdef ERROR > #undef ERROR > @@ -118,6 +119,7 @@ > ZEND_ARG_INFO(0, folder) > ZEND_ARG_INFO(0, message) > ZEND_ARG_INFO(0, options) > + ZEND_ARG_INFO(0, date) > ZEND_END_ARG_INFO() > > ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_num_msg, 0, 0, 1) > @@ -1270,20 +1272,43 @@ > PHP_FUNCTION(imap_append) > { > zval *streamind; > - char *folder, *message, *flags = NULL; > - int folder_len, message_len, flags_len = 0; > + char *folder, *message, *date = NULL, *flags = NULL; > + int folder_len, message_len, date_len = 0, flags_len = 0; > pils *imap_le_struct; > STRING st; > > - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|s", > &streamind, &folder, &folder_len, &message, &message_len, &flags, &flags_len) > == FAILURE) { > + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|ss", > &streamind, &folder, &folder_len, &message, &message_len, &flags, &flags_len, > &date, &date_len) == FAILURE) { > return; > } > > + 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}/"; > + int regex_len = strlen(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 (date) { > + //Make sure the given date string matches the RFC specified > format > + if ((pce = pcre_get_compiled_regex_cache(regex, regex_len > TSRMLS_CC)) == NULL) { > + RETURN_FALSE; > + } > + > + php_pcre_match_impl(pce, date, date_len, return_value, > subpats, global, > + 0, regex_flags, start_offset TSRMLS_CC); > + > + if (!Z_LVAL_P(return_value)) { > + php_error_docref(NULL TSRMLS_CC, E_WARNING, > "internal date not correctly formatted"); > + date = NULL; > + } > + } > + > ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", > le_imap); > > INIT (&st, mail_string, (void *) message, message_len); > > - if (mail_append_full(imap_le_struct->imap_stream, folder, (flags ? > flags : NIL), NIL, &st)) { > + if (mail_append_full(imap_le_struct->imap_stream, folder, (flags ? > flags : NIL), (date ? date : NIL), &st)) { > RETURN_TRUE; > } else { > RETURN_FALSE; > > > > Thanks, > > - Nick Fortenberry > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Pierre http://blog.thepimp.net | http://www.libgd.org -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php