Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:45847 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 40337 invoked from network); 20 Oct 2009 22:10:13 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 20 Oct 2009 22:10:13 -0000 Authentication-Results: pb1.pair.com smtp.mail=nick@mailtrust.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=nick@mailtrust.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain mailtrust.com designates 207.97.245.153 as permitted sender) X-PHP-List-Original-Sender: nick@mailtrust.com X-Host-Fingerprint: 207.97.245.153 smtp153.iad.emailsrvr.com Linux 2.4/2.6 Received: from [207.97.245.153] ([207.97.245.153:40017] helo=smtp153.iad.emailsrvr.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 2D/D9-39240-5453EDA4 for ; Tue, 20 Oct 2009 18:10:13 -0400 Received: from relay15.relay.iad.mlsrvr.com (localhost [127.0.0.1]) by relay15.relay.iad.mlsrvr.com (SMTP Server) with ESMTP id DC91E1B4134 for ; Tue, 20 Oct 2009 18:10:10 -0400 (EDT) Received: from dynamic1.wm-web.iad.mlsrvr.com (dynamic1.wm-web.iad.mlsrvr.com [192.168.2.150]) by relay15.relay.iad.mlsrvr.com (SMTP Server) with ESMTP id D7DDE1B412D for ; Tue, 20 Oct 2009 18:10:10 -0400 (EDT) Received: from mailtrust.com (localhost [127.0.0.1]) by dynamic1.wm-web.iad.mlsrvr.com (Postfix) with ESMTP id AA432C980A6 for ; Tue, 20 Oct 2009 18:10:10 -0400 (EDT) Received: by apps.rackspace.com (Authenticated sender: nick@mailtrust.com, from: nick@mailtrust.com) with HTTP; Tue, 20 Oct 2009 18:10:10 -0400 (EDT) Date: Tue, 20 Oct 2009 18:10:10 -0400 (EDT) To: internals@lists.php.net MIME-Version: 1.0 Content-Type: text/plain;charset=UTF-8 Content-Transfer-Encoding: quoted-printable Importance: Normal X-Priority: 3 (Normal) X-Type: plain Message-ID: <1256076610.69357406@192.168.1.71> X-Mailer: webmail7.0b Subject: =?UTF-8?Q?Patch:=20Add=20INTERNALDATE=20to=20imap=5Fappend()=20?= From: nick@mailtrust.com ("Nick Fortenberry") Hey everyone,=0A=0AJake Levitt and I created this patch which adds the opti= on 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 developm= ent 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.=0A=0AHere's the svn diff (done in my repo)..= . if you need something else please let me know:=0A=0A=0AIndex: ext/imap/ph= p_imap.c=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A--- ext/i= map/php_imap.c (revision 3405)=0A+++ ext/imap/php_imap.c (rev= ision 3406)=0A@@ -41,6 +41,7 @@=0A#include "ext/standard/info.h"=0A#include= "ext/standard/file.h"=0A#include "ext/standard/php_smart_str.h"=0A+#includ= e "ext/pcre/php_pcre.h"=0A=0A#ifdef ERROR=0A#undef ERROR=0A@@ -118,6 +119,7= @@=0A ZEND_ARG_INFO(0, folder)=0A ZEND_ARG_INFO(0, message)=0A= ZEND_ARG_INFO(0, options)=0A+ ZEND_ARG_INFO(0, date)=0AZEND_E= ND_ARG_INFO()=0A=0AZEND_BEGIN_ARG_INFO_EX(arginfo_imap_num_msg, 0, 0, 1)=0A= @@ -1270,20 +1272,43 @@=0APHP_FUNCTION(imap_append)=0A{=0A zval *stre= amind;=0A- char *folder, *message, *flags =3D NULL;=0A- int f= older_len, message_len, flags_len =3D 0;=0A+ char *folder, *message,= *date =3D NULL, *flags =3D NULL;=0A+ int folder_len, message_len, d= ate_len =3D 0, flags_len =3D 0;=0A pils *imap_le_struct;=0A STR= ING st;=0A=0A- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, = "rss|s", &streamind, &folder, &folder_len, &message, &message_len, &flags, = &flags_len) =3D=3D FAILURE) {=0A+ if (zend_parse_parameters(ZEND_NUM= _ARGS() TSRMLS_CC, "rss|ss", &streamind, &folder, &folder_len, &message, &m= essage_len, &flags, &flags_len, &date, &date_len) =3D=3D FAILURE) {=0A = return;=0A }=0A=0A+ char* regex =3D "/[ 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}/";=0A+ int regex= _len =3D strlen(regex);=0A+ pcre_cache_entry *pce; = //Compiled regex=0A+ zval *subpats =3D NULL; = //Parts (not used)=0A+ long regex_flags =3D 0;= //Flags (not used)=0A+ long start_of= fset =3D 0; //Start offset (not used)=0A+ = int global =3D 0;=0A+=0A+ if (date) {=0A+ //Make= sure the given date string matches the RFC specified format=0A+ = if ((pce =3D pcre_get_compiled_regex_cache(regex, regex_len TSRMLS_CC)= ) =3D=3D NULL) {=0A+ RETURN_FALSE;=0A+ = }=0A+=0A+ php_pcre_match_impl(pce, date, date_len, return_= value, subpats, global,=0A+ 0, regex_flags, start_of= fset TSRMLS_CC);=0A+=0A+ if (!Z_LVAL_P(return_value)) {=0A+ = php_error_docref(NULL TSRMLS_CC, E_WARNING, "interna= l date not correctly formatted");=0A+ date =3D NULL;= =0A+ }=0A+ }=0A+=0A ZEND_FETCH_RESOURCE(imap_le= _struct, pils *, &streamind, -1, "imap", le_imap);=0A=0A INIT (&st, m= ail_string, (void *) message, message_len);=0A=0A- if (mail_append_f= ull(imap_le_struct->imap_stream, folder, (flags ? flags : NIL), NIL, &st)) = {=0A+ if (mail_append_full(imap_le_struct->imap_stream, folder, (fla= gs ? flags : NIL), (date ? date : NIL), &st)) {=0A RETURN_TRU= E;=0A } else {=0A RETURN_FALSE;=0A=0A=0A=0AThanks,=0A= =0A- Nick Fortenberry=0A