@@ -49,14 +49,16 @@ def setup():
|
|||||||
shelltools.makedirs("fcgi")
|
shelltools.makedirs("fcgi")
|
||||||
shelltools.makedirs("apache")
|
shelltools.makedirs("apache")
|
||||||
shelltools.makedirs("fpm")
|
shelltools.makedirs("fpm")
|
||||||
|
shelltools.makedirs("common")
|
||||||
|
|
||||||
# link configure script
|
# link configure script
|
||||||
shelltools.sym("../configure", "fcgi/configure")
|
shelltools.sym("../configure", "fcgi/configure")
|
||||||
shelltools.sym("../configure", "apache/configure")
|
shelltools.sym("../configure", "apache/configure")
|
||||||
shelltools.sym("../configure", "fpm/configure")
|
shelltools.sym("../configure", "fpm/configure")
|
||||||
|
shelltools.sym("../configure", "common/configure")
|
||||||
|
|
||||||
shelltools.export("LC_ALL", "C")
|
shelltools.export("LC_ALL", "C")
|
||||||
shelltools.export("CFLAGS", "%s -fwrapv -lkrb5 -lgssapi_krb5 -lpam" % get.CFLAGS())
|
shelltools.export("CFLAGS", "%s -fwrapv -lkrb5 -lgssapi_krb5 -lpam -DU_USING_ICU_NAMESPACE=1" % get.CFLAGS())
|
||||||
shelltools.export("NO_INTERACTION", "1")
|
shelltools.export("NO_INTERACTION", "1")
|
||||||
shelltools.export("EXTENSION_DIR", "/usr/lib/php/modules")
|
shelltools.export("EXTENSION_DIR", "/usr/lib/php/modules")
|
||||||
|
|
||||||
@@ -80,7 +82,6 @@ def setup():
|
|||||||
--with-jpeg-dir=/usr/lib/ \
|
--with-jpeg-dir=/usr/lib/ \
|
||||||
--with-png-dir=/usr/lib/ \
|
--with-png-dir=/usr/lib/ \
|
||||||
--with-freetype-dir=/usr \
|
--with-freetype-dir=/usr \
|
||||||
--without-pear \
|
|
||||||
--with-zend-vm=GOTO \
|
--with-zend-vm=GOTO \
|
||||||
--with-zend-vm=SWITCH \
|
--with-zend-vm=SWITCH \
|
||||||
--with-db4=/usr/lib \
|
--with-db4=/usr/lib \
|
||||||
@@ -93,6 +94,7 @@ def setup():
|
|||||||
--with-openssl=shared \
|
--with-openssl=shared \
|
||||||
--with-imap-ssl \
|
--with-imap-ssl \
|
||||||
--with-mysql-sock=/run/mysqld/mysqld.sock \
|
--with-mysql-sock=/run/mysqld/mysqld.sock \
|
||||||
|
--without-pear \
|
||||||
--disable-rpath \
|
--disable-rpath \
|
||||||
"
|
"
|
||||||
|
|
||||||
@@ -124,6 +126,13 @@ def setup():
|
|||||||
%s \
|
%s \
|
||||||
%s" % (common_options, extensions()))
|
%s" % (common_options, extensions()))
|
||||||
|
|
||||||
|
# Enable common
|
||||||
|
shelltools.cd("../common")
|
||||||
|
autotools.configure("--enable-cli \
|
||||||
|
--enable-phpdbg \
|
||||||
|
%s \
|
||||||
|
%s" % (common_options, extensions()))
|
||||||
|
|
||||||
|
|
||||||
def build():
|
def build():
|
||||||
shelltools.cd("fcgi")
|
shelltools.cd("fcgi")
|
||||||
@@ -136,6 +145,9 @@ def build():
|
|||||||
shelltools.cd("../fpm")
|
shelltools.cd("../fpm")
|
||||||
autotools.make()
|
autotools.make()
|
||||||
|
|
||||||
|
shelltools.cd("../common")
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
|
||||||
def check():
|
def check():
|
||||||
shelltools.cd("apache")
|
shelltools.cd("apache")
|
||||||
@@ -152,6 +164,9 @@ def install():
|
|||||||
shelltools.cd("../fpm")
|
shelltools.cd("../fpm")
|
||||||
autotools.rawInstall("INSTALL_ROOT=\"%s\"" % get.installDIR(), "install-fpm")
|
autotools.rawInstall("INSTALL_ROOT=\"%s\"" % get.installDIR(), "install-fpm")
|
||||||
|
|
||||||
|
shelltools.cd("../common")
|
||||||
|
autotools.rawInstall("INSTALL_ROOT=\"%s\"" % get.installDIR(), "install")
|
||||||
|
|
||||||
shelltools.cd("..")
|
shelltools.cd("..")
|
||||||
|
|
||||||
pisitools.insinto("/etc/php/apache2/", "php.ini-development", "php.ini")
|
pisitools.insinto("/etc/php/apache2/", "php.ini-development", "php.ini")
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
LoadModule php5_module modules/libphp5.so
|
|
||||||
|
|
||||||
AddHandler php5-script .php
|
|
||||||
|
|
||||||
# Set it to handle the files
|
|
||||||
<IfModule mod_mime.c>
|
|
||||||
AddType application/x-httpd-php .php
|
|
||||||
AddType application/x-httpd-php .phtml
|
|
||||||
AddType application/x-httpd-php .php3
|
|
||||||
AddType application/x-httpd-php .php4
|
|
||||||
AddType application/x-httpd-php .php5
|
|
||||||
AddType application/x-httpd-php-source .phps
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
#
|
|
||||||
# Add index.php to the list of files that will be served as directory
|
|
||||||
# indexes.
|
|
||||||
#
|
|
||||||
DirectoryIndex index.php index.phtml
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
diff -u --recursive php-5.6.6-vanilla/configure.in php-5.6.6/configure.in
|
|
||||||
--- php-5.6.6-vanilla/configure.in 2015-02-26 22:10:51.865487530 -0500
|
|
||||||
+++ php-5.6.6/configure.in 2015-02-26 22:29:59.043102135 -0500
|
|
||||||
@@ -453,7 +453,10 @@
|
|
||||||
PHP_CHECK_FUNC(gethostbyaddr, nsl)
|
|
||||||
PHP_CHECK_FUNC(yp_get_default_domain, nsl)
|
|
||||||
|
|
||||||
-PHP_CHECK_FUNC(dlopen, dl)
|
|
||||||
+PHP_ADD_LIBRARY(dl)
|
|
||||||
+PHP_DEF_HAVE(dlopen)
|
|
||||||
+PHP_DEF_HAVE(libdl)
|
|
||||||
+ac_cv_func_dlopen=yes
|
|
||||||
if test "$ac_cv_func_dlopen" = "yes"; then
|
|
||||||
AC_DEFINE(HAVE_LIBDL, 1, [ ])
|
|
||||||
fi
|
|
||||||
diff -u --recursive php-5.6.6-vanilla/ext/fileinfo/config.m4 php-5.6.6/ext/fileinfo/config.m4
|
|
||||||
--- php-5.6.6-vanilla/ext/fileinfo/config.m4 2015-02-26 22:10:51.639487135 -0500
|
|
||||||
+++ php-5.6.6/ext/fileinfo/config.m4 2015-02-26 22:22:47.645609128 -0500
|
|
||||||
@@ -46,6 +46,10 @@
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_NOTICE(using libmagic strcasestr implementation)
|
|
||||||
libmagic_sources="$libmagic_sources libmagic/strcasestr.c"
|
|
||||||
+ ],[
|
|
||||||
+ dnl cross-compiling; assume not present
|
|
||||||
+ AC_MSG_NOTICE(using libmagic strcasestr implementation)
|
|
||||||
+ libmagic_sources="$libmagic_sources libmagic/strcasestr.c"
|
|
||||||
])
|
|
||||||
|
|
||||||
PHP_NEW_EXTENSION(fileinfo, fileinfo.c $libmagic_sources, $ext_shared,,-I@ext_srcdir@/libmagic)
|
|
||||||
diff -u --recursive php-5.6.6-vanilla/ext/opcache/config.m4 php-5.6.6/ext/opcache/config.m4
|
|
||||||
--- php-5.6.6-vanilla/ext/opcache/config.m4 2015-02-26 22:10:51.790487399 -0500
|
|
||||||
+++ php-5.6.6/ext/opcache/config.m4 2015-02-26 22:34:19.240414394 -0500
|
|
||||||
@@ -341,7 +341,14 @@
|
|
||||||
flock_type=linux
|
|
||||||
AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
|
|
||||||
AC_MSG_RESULT("yes")
|
|
||||||
-], AC_MSG_RESULT("no") )
|
|
||||||
+], [
|
|
||||||
+ AC_MSG_RESULT("no")
|
|
||||||
+], [
|
|
||||||
+ dnl cross-compiling; assume Linux
|
|
||||||
+ flock_type=linux
|
|
||||||
+ AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
|
|
||||||
+ AC_MSG_RESULT("yes")
|
|
||||||
+])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING("whether flock struct is BSD ordered")
|
|
||||||
AC_TRY_RUN([
|
|
||||||
@@ -357,7 +364,12 @@
|
|
||||||
flock_type=bsd
|
|
||||||
AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type])
|
|
||||||
AC_MSG_RESULT("yes")
|
|
||||||
-], AC_MSG_RESULT("no") )
|
|
||||||
+], [
|
|
||||||
+ AC_MSG_RESULT("no")
|
|
||||||
+], [
|
|
||||||
+ dnl cross-compiling; assume Linux
|
|
||||||
+ AC_MSG_RESULT("no")
|
|
||||||
+])
|
|
||||||
|
|
||||||
if test "$flock_type" == "unknown"; then
|
|
||||||
AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
--- php-5.2.14.orig/ext/zip/php_zip.c 2011-01-14 16:12:17.886000067 +0200
|
|
||||||
+++ php-5.2.14/ext/zip/php_zip.c 2011-01-14 16:14:50.233000067 +0200
|
|
||||||
@@ -1954,6 +1954,9 @@
|
|
||||||
|
|
||||||
PHP_ZIP_STAT_INDEX(intern, index, 0, sb);
|
|
||||||
comment = zip_get_file_comment(intern, index, &comment_len, (int)flags);
|
|
||||||
+ if(comment==NULL) {
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
RETURN_STRINGL((char *)comment, (long)comment_len, 1);
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
--- php-5.2.14.orig/ext/standard/rand.c 2011-02-07 14:44:55.975000003 +0200
|
|
||||||
+++ php-5.2.14/ext/standard/rand.c 2011-02-07 16:24:24.017000004 +0200
|
|
||||||
@@ -322,6 +322,11 @@
|
|
||||||
php_mt_srand(GENERATE_SEED() TSRMLS_CC);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (max < min) {
|
|
||||||
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "max(%d) is smaller than min(%d)", max, min);
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Melo: hmms.. randomMT() returns 32 random bits...
|
|
||||||
* Yet, the previous php_rand only returns 31 at most.
|
|
||||||
@@ -1,302 +0,0 @@
|
|||||||
diff -Naurp php-5.3.4RC1/ext/imap/php_imap.c php-5.3.4RC1.oden/ext/imap/php_imap.c
|
|
||||||
--- php-5.3.4RC1/ext/imap/php_imap.c 2010-11-18 16:22:22.000000000 +0100
|
|
||||||
+++ php-5.3.4RC1.oden/ext/imap/php_imap.c 2010-11-22 10:01:42.538863104 +0100
|
|
||||||
@@ -164,6 +164,22 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_geta
|
|
||||||
ZEND_ARG_INFO(0, mailbox)
|
|
||||||
ZEND_END_ARG_INFO()
|
|
||||||
#endif
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_setannotation, 0, 0, 5)
|
|
||||||
+ ZEND_ARG_INFO(0, stream_id)
|
|
||||||
+ ZEND_ARG_INFO(0, mailbox)
|
|
||||||
+ ZEND_ARG_INFO(0, entry)
|
|
||||||
+ ZEND_ARG_INFO(0, attr)
|
|
||||||
+ ZEND_ARG_INFO(0, value)
|
|
||||||
+ZEND_END_ARG_INFO()
|
|
||||||
+
|
|
||||||
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_getannotation, 0, 0, 4)
|
|
||||||
+ ZEND_ARG_INFO(0, stream_id)
|
|
||||||
+ ZEND_ARG_INFO(0, mailbox)
|
|
||||||
+ ZEND_ARG_INFO(0, entry)
|
|
||||||
+ ZEND_ARG_INFO(0, attr)
|
|
||||||
+ZEND_END_ARG_INFO()
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_expunge, 0, 0, 1)
|
|
||||||
ZEND_ARG_INFO(0, stream_id)
|
|
||||||
@@ -408,6 +424,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_stat
|
|
||||||
ZEND_ARG_INFO(0, options)
|
|
||||||
ZEND_END_ARG_INFO()
|
|
||||||
|
|
||||||
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_status_current, 0, 0, 2)
|
|
||||||
+ ZEND_ARG_INFO(0, stream_id)
|
|
||||||
+ ZEND_ARG_INFO(0, options)
|
|
||||||
+ZEND_END_ARG_INFO()
|
|
||||||
+
|
|
||||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_bodystruct, 0, 0, 3)
|
|
||||||
ZEND_ARG_INFO(0, stream_id)
|
|
||||||
ZEND_ARG_INFO(0, msg_no)
|
|
||||||
@@ -507,6 +528,7 @@ const zend_function_entry imap_functions
|
|
||||||
PHP_FE(imap_binary, arginfo_imap_binary)
|
|
||||||
PHP_FE(imap_utf8, arginfo_imap_utf8)
|
|
||||||
PHP_FE(imap_status, arginfo_imap_status)
|
|
||||||
+ PHP_FE(imap_status_current, arginfo_imap_status_current)
|
|
||||||
PHP_FE(imap_mailboxmsginfo, arginfo_imap_mailboxmsginfo)
|
|
||||||
PHP_FE(imap_setflag_full, arginfo_imap_setflag_full)
|
|
||||||
PHP_FE(imap_clearflag_full, arginfo_imap_clearflag_full)
|
|
||||||
@@ -537,6 +559,10 @@ const zend_function_entry imap_functions
|
|
||||||
PHP_FE(imap_setacl, arginfo_imap_setacl)
|
|
||||||
PHP_FE(imap_getacl, arginfo_imap_getacl)
|
|
||||||
#endif
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+ PHP_FE(imap_setannotation, arginfo_imap_setannotation)
|
|
||||||
+ PHP_FE(imap_getannotation, arginfo_imap_getannotation)
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
PHP_FE(imap_mail, arginfo_imap_mail)
|
|
||||||
|
|
||||||
@@ -798,6 +824,30 @@ void mail_getacl(MAILSTREAM *stream, cha
|
|
||||||
/* }}} */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+/* {{{ mail_getannotation
|
|
||||||
+ *
|
|
||||||
+ * Mail GET_ANNOTATION callback
|
|
||||||
+ * Called via the mail_parameter function in c-client:src/c-client/mail.c
|
|
||||||
+ */
|
|
||||||
+void mail_getannotation(MAILSTREAM *stream, ANNOTATION *alist)
|
|
||||||
+{
|
|
||||||
+ ANNOTATION_VALUES *cur;
|
|
||||||
+
|
|
||||||
+ TSRMLS_FETCH();
|
|
||||||
+
|
|
||||||
+ /* walk through the ANNOTATION_VALUES */
|
|
||||||
+
|
|
||||||
+ for(cur = alist->values; cur; cur = cur->next) {
|
|
||||||
+ if (cur->value)
|
|
||||||
+ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, cur->value, strlen(cur->value), 1);
|
|
||||||
+ else
|
|
||||||
+ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, "", 0, 1);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* {{{ PHP_GINIT_FUNCTION
|
|
||||||
*/
|
|
||||||
static PHP_GINIT_FUNCTION(imap)
|
|
||||||
@@ -823,6 +873,7 @@ static PHP_GINIT_FUNCTION(imap)
|
|
||||||
#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)
|
|
||||||
imap_globals->quota_return = NIL;
|
|
||||||
imap_globals->imap_acl_list = NIL;
|
|
||||||
+ imap_globals->imap_annotation_list = NIL;
|
|
||||||
#endif
|
|
||||||
imap_globals->gets_stream = NIL;
|
|
||||||
}
|
|
||||||
@@ -1547,7 +1598,119 @@ PHP_FUNCTION(imap_getacl)
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
#endif /* HAVE_IMAP2000 || HAVE_IMAP2001 */
|
|
||||||
+
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+
|
|
||||||
+/* {{{ proto bool imap_setannotation(resource stream_id, string mailbox, string entry, string attr, string value)
|
|
||||||
+ Sets an annotation for a given mailbox */
|
|
||||||
+PHP_FUNCTION(imap_setannotation)
|
|
||||||
+{
|
|
||||||
+ zval **streamind, **mailbox, **entry, **attr, **value;
|
|
||||||
+ pils *imap_le_struct;
|
|
||||||
+ long ret;
|
|
||||||
+
|
|
||||||
+ // TODO: Use zend_parse_parameters here
|
|
||||||
+ if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &streamind, &mailbox, &entry, &attr, &value) == FAILURE) {
|
|
||||||
+ ZEND_WRONG_PARAM_COUNT();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap);
|
|
||||||
+
|
|
||||||
+ convert_to_string_ex(mailbox);
|
|
||||||
+ convert_to_string_ex(entry);
|
|
||||||
+ convert_to_string_ex(attr);
|
|
||||||
+ convert_to_string_ex(value);
|
|
||||||
+
|
|
||||||
+ // create annotation object
|
|
||||||
+ ANNOTATION *annotation = mail_newannotation();
|
|
||||||
+ if (!annotation)
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ annotation->values = mail_newannotationvalue();
|
|
||||||
+ if (!annotation->values) {
|
|
||||||
+ mail_free_annotation(&annotation);
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // fill in annotation values
|
|
||||||
+ annotation->mbox = Z_STRVAL_PP(mailbox);
|
|
||||||
+ annotation->entry = Z_STRVAL_PP(entry);
|
|
||||||
+ annotation->values->attr = Z_STRVAL_PP(attr);
|
|
||||||
+ annotation->values->value = Z_STRVAL_PP(value);
|
|
||||||
+
|
|
||||||
+ ret = imap_setannotation(imap_le_struct->imap_stream, annotation);
|
|
||||||
+
|
|
||||||
+ // make sure mail_free_annotation doesn't free our variables
|
|
||||||
+ annotation->mbox = NULL;
|
|
||||||
+ annotation->entry = NULL;
|
|
||||||
+ annotation->values->attr = NULL;
|
|
||||||
+ annotation->values->value = NULL;
|
|
||||||
+ mail_free_annotation(&annotation);
|
|
||||||
+
|
|
||||||
+ RETURN_BOOL(ret);
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+
|
|
||||||
+/* {{{ proto array imap_getannotation(resource stream_id, string mailbox, string entry, string attr)
|
|
||||||
+ Gets the ACL for a given mailbox */
|
|
||||||
+PHP_FUNCTION(imap_getannotation)
|
|
||||||
+{
|
|
||||||
+ zval **streamind, **mailbox, **entry, **attr;
|
|
||||||
+ pils *imap_le_struct;
|
|
||||||
+ long ret;
|
|
||||||
+
|
|
||||||
+ if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &streamind, &mailbox, &entry, &attr) == FAILURE) {
|
|
||||||
+ ZEND_WRONG_PARAM_COUNT();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap);
|
|
||||||
+
|
|
||||||
+ convert_to_string_ex(mailbox);
|
|
||||||
+ convert_to_string_ex(entry);
|
|
||||||
+ convert_to_string_ex(attr);
|
|
||||||
+
|
|
||||||
+ /* initializing the special array for the return values */
|
|
||||||
+ if (array_init(return_value) == FAILURE) {
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // fillup calling parameters
|
|
||||||
+ STRINGLIST *entries = mail_newstringlist();
|
|
||||||
+ if (!entries)
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+
|
|
||||||
+ STRINGLIST *cur = entries;
|
|
||||||
+ cur->text.data = (unsigned char *)cpystr(Z_STRVAL_PP(entry));
|
|
||||||
+ cur->text.size = Z_STRLEN_PP(entry);
|
|
||||||
+ cur->next = NIL;
|
|
||||||
+
|
|
||||||
+ STRINGLIST *attributes = mail_newstringlist();
|
|
||||||
+ if (!attributes)
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ cur = attributes;
|
|
||||||
+ cur->text.data = (unsigned char *)cpystr (Z_STRVAL_PP(attr));
|
|
||||||
+ cur->text.size = Z_STRLEN_PP(attr);
|
|
||||||
+ cur->next = NIL;
|
|
||||||
+
|
|
||||||
+ IMAPG(imap_annotation_list) = return_value;
|
|
||||||
+
|
|
||||||
+ /* set the callback for the GET_ANNOTATION function */
|
|
||||||
+ mail_parameters(NIL, SET_ANNOTATION, (void *) mail_getannotation);
|
|
||||||
+ ret = imap_getannotation(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox), entries, attributes);
|
|
||||||
+
|
|
||||||
+ mail_free_stringlist(&entries);
|
|
||||||
+ mail_free_stringlist(&attributes);
|
|
||||||
+
|
|
||||||
+ if (!ret) {
|
|
||||||
+ zval_dtor(return_value);
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ IMAPG(imap_annotation_list) = NIL;
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+
|
|
||||||
+#endif /* HAVE_IMAP2005 */
|
|
||||||
+
|
|
||||||
/* {{{ proto bool imap_expunge(resource stream_id)
|
|
||||||
Permanently delete all messages marked for deletion */
|
|
||||||
PHP_FUNCTION(imap_expunge)
|
|
||||||
@@ -3190,6 +3353,42 @@ PHP_FUNCTION(imap_msgno)
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
+/* {{{ proto object imap_status_current(resource stream_id, int options)
|
|
||||||
+ Get (cached) status info from current mailbox */
|
|
||||||
+PHP_FUNCTION(imap_status_current)
|
|
||||||
+{
|
|
||||||
+ zval **streamind, **pflags;
|
|
||||||
+ pils *imap_le_struct;
|
|
||||||
+ long flags = 0L;
|
|
||||||
+
|
|
||||||
+ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, &pflags) == FAILURE) {
|
|
||||||
+ ZEND_WRONG_PARAM_COUNT();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap);
|
|
||||||
+
|
|
||||||
+ convert_to_long_ex(pflags);
|
|
||||||
+ flags = Z_LVAL_PP(pflags);
|
|
||||||
+
|
|
||||||
+ if (object_init(return_value) == FAILURE) {
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (flags & SA_MESSAGES) {
|
|
||||||
+ add_property_long(return_value, "messages", imap_le_struct->imap_stream->nmsgs);
|
|
||||||
+ }
|
|
||||||
+ if (flags & SA_RECENT) {
|
|
||||||
+ add_property_long(return_value, "recent", imap_le_struct->imap_stream->recent);
|
|
||||||
+ }
|
|
||||||
+ if (flags & SA_UIDNEXT) {
|
|
||||||
+ add_property_long(return_value, "uidnext", imap_le_struct->imap_stream->uid_last+1);
|
|
||||||
+ }
|
|
||||||
+ if (flags & SA_UIDVALIDITY) {
|
|
||||||
+ add_property_long(return_value, "uidvalidity", imap_le_struct->imap_stream->uid_validity);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+
|
|
||||||
/* {{{ proto object imap_status(resource stream_id, string mailbox, int options)
|
|
||||||
Get status info from a mailbox */
|
|
||||||
PHP_FUNCTION(imap_status)
|
|
||||||
diff -Naurp php-5.3.4RC1/ext/imap/php_imap.h php-5.3.4RC1.oden/ext/imap/php_imap.h
|
|
||||||
--- php-5.3.4RC1/ext/imap/php_imap.h 2010-01-03 10:23:27.000000000 +0100
|
|
||||||
+++ php-5.3.4RC1.oden/ext/imap/php_imap.h 2010-11-22 10:01:42.542862889 +0100
|
|
||||||
@@ -153,6 +153,7 @@ PHP_FUNCTION(imap_lsub);
|
|
||||||
PHP_FUNCTION(imap_lsub_full);
|
|
||||||
PHP_FUNCTION(imap_create);
|
|
||||||
PHP_FUNCTION(imap_rename);
|
|
||||||
+PHP_FUNCTION(imap_status_current);
|
|
||||||
PHP_FUNCTION(imap_status);
|
|
||||||
PHP_FUNCTION(imap_bodystruct);
|
|
||||||
PHP_FUNCTION(imap_fetch_overview);
|
|
||||||
@@ -173,6 +174,9 @@ PHP_FUNCTION(imap_mime_header_decode);
|
|
||||||
PHP_FUNCTION(imap_thread);
|
|
||||||
PHP_FUNCTION(imap_timeout);
|
|
||||||
|
|
||||||
+// TODO: Needs fixing in configure in
|
|
||||||
+#define HAVE_IMAP2005 1
|
|
||||||
+
|
|
||||||
#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)
|
|
||||||
PHP_FUNCTION(imap_get_quota);
|
|
||||||
PHP_FUNCTION(imap_get_quotaroot);
|
|
||||||
@@ -180,7 +184,10 @@ PHP_FUNCTION(imap_set_quota);
|
|
||||||
PHP_FUNCTION(imap_setacl);
|
|
||||||
PHP_FUNCTION(imap_getacl);
|
|
||||||
#endif
|
|
||||||
-
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+PHP_FUNCTION(imap_setannotation);
|
|
||||||
+PHP_FUNCTION(imap_getannotation);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
ZEND_BEGIN_MODULE_GLOBALS(imap)
|
|
||||||
char *imap_user;
|
|
||||||
@@ -211,6 +218,9 @@ ZEND_BEGIN_MODULE_GLOBALS(imap)
|
|
||||||
zval **quota_return;
|
|
||||||
zval *imap_acl_list;
|
|
||||||
#endif
|
|
||||||
+#if defined(HAVE_IMAP2005)
|
|
||||||
+ zval *imap_annotation_list;
|
|
||||||
+#endif
|
|
||||||
/* php_stream for php_mail_gets() */
|
|
||||||
php_stream *gets_stream;
|
|
||||||
ZEND_END_MODULE_GLOBALS(imap)
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
diff -Naurp php-5.3.4RC1/ext/imap/php_imap.c php-5.3.4RC1.oden/ext/imap/php_imap.c
|
|
||||||
--- php-5.3.4RC1/ext/imap/php_imap.c 2010-11-22 10:39:59.349863220 +0100
|
|
||||||
+++ php-5.3.4RC1.oden/ext/imap/php_imap.c 2010-11-22 10:40:14.709956619 +0100
|
|
||||||
@@ -163,6 +163,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_geta
|
|
||||||
ZEND_ARG_INFO(0, stream_id)
|
|
||||||
ZEND_ARG_INFO(0, mailbox)
|
|
||||||
ZEND_END_ARG_INFO()
|
|
||||||
+
|
|
||||||
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_myrights, 0, 0, 2)
|
|
||||||
+ ZEND_ARG_INFO(0, stream_id)
|
|
||||||
+ ZEND_ARG_INFO(0, mailbox)
|
|
||||||
+ZEND_END_ARG_INFO()
|
|
||||||
#endif
|
|
||||||
#if defined(HAVE_IMAP2005)
|
|
||||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_setannotation, 0, 0, 5)
|
|
||||||
@@ -558,6 +563,7 @@ const zend_function_entry imap_functions
|
|
||||||
PHP_FE(imap_set_quota, arginfo_imap_set_quota)
|
|
||||||
PHP_FE(imap_setacl, arginfo_imap_setacl)
|
|
||||||
PHP_FE(imap_getacl, arginfo_imap_getacl)
|
|
||||||
+ PHP_FE(imap_myrights, arginfo_imap_myrights)
|
|
||||||
#endif
|
|
||||||
#if defined(HAVE_IMAP2005)
|
|
||||||
PHP_FE(imap_setannotation, arginfo_imap_setannotation)
|
|
||||||
@@ -822,6 +828,20 @@ void mail_getacl(MAILSTREAM *stream, cha
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
+
|
|
||||||
+/* {{{ mail_myrights
|
|
||||||
+ *
|
|
||||||
+ * Mail MYRIGHTS callback
|
|
||||||
+ * Called via the mail_parameter function in c-client:src/c-client/mail.c
|
|
||||||
+ */
|
|
||||||
+void mail_myrights(MAILSTREAM *stream, char *mailbox, char *rights)
|
|
||||||
+{
|
|
||||||
+ TSRMLS_FETCH();
|
|
||||||
+
|
|
||||||
+ ZVAL_STRING(IMAPG(imap_acl_list), rights, 1);
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_IMAP2005)
|
|
||||||
@@ -1597,6 +1617,36 @@ PHP_FUNCTION(imap_getacl)
|
|
||||||
IMAPG(imap_acl_list) = NIL;
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
+
|
|
||||||
+/* {{{ proto string imap_myrights(resource stream_id, string mailbox)
|
|
||||||
+ Gets my rights (ACL) for a given mailbox */
|
|
||||||
+PHP_FUNCTION(imap_myrights)
|
|
||||||
+{
|
|
||||||
+ zval **streamind, **mailbox;
|
|
||||||
+ pils *imap_le_struct;
|
|
||||||
+
|
|
||||||
+ if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, &mailbox) == FAILURE) {
|
|
||||||
+ ZEND_WRONG_PARAM_COUNT();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap);
|
|
||||||
+
|
|
||||||
+ convert_to_string_ex(mailbox);
|
|
||||||
+
|
|
||||||
+ IMAPG(imap_acl_list) = return_value;
|
|
||||||
+
|
|
||||||
+ /* set the callback for the GET_ACL function */
|
|
||||||
+ mail_parameters(NIL, SET_MYRIGHTS, (void *) mail_myrights);
|
|
||||||
+ if(!imap_myrights(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox))) {
|
|
||||||
+ php_error(E_WARNING, "c-client imap_myrights failed");
|
|
||||||
+ zval_dtor(return_value);
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ IMAPG(imap_acl_list) = NIL;
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+
|
|
||||||
#endif /* HAVE_IMAP2000 || HAVE_IMAP2001 */
|
|
||||||
|
|
||||||
#if defined(HAVE_IMAP2005)
|
|
||||||
diff -Naurp php-5.3.4RC1/ext/imap/php_imap.h php-5.3.4RC1.oden/ext/imap/php_imap.h
|
|
||||||
--- php-5.3.4RC1/ext/imap/php_imap.h 2010-11-22 10:39:59.349863220 +0100
|
|
||||||
+++ php-5.3.4RC1.oden/ext/imap/php_imap.h 2010-11-22 10:40:14.709956619 +0100
|
|
||||||
@@ -183,6 +183,7 @@ PHP_FUNCTION(imap_get_quotaroot);
|
|
||||||
PHP_FUNCTION(imap_set_quota);
|
|
||||||
PHP_FUNCTION(imap_setacl);
|
|
||||||
PHP_FUNCTION(imap_getacl);
|
|
||||||
+PHP_FUNCTION(imap_myrights);
|
|
||||||
#endif
|
|
||||||
#if defined(HAVE_IMAP2005)
|
|
||||||
PHP_FUNCTION(imap_setannotation);
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
--- ext/imap/config.m4 2006-01-23 23:55:13.000000000 +0200
|
|
||||||
+++ ext.orig/imap/config.m4 2006-01-23 23:56:08.000000000 +0200
|
|
||||||
@@ -146,12 +146,6 @@
|
|
||||||
AC_MSG_ERROR(Cannot find rfc822.h. Please check your c-client installation.)
|
|
||||||
fi
|
|
||||||
|
|
||||||
- if test -r "$IMAP_DIR/c-client/c-client.a"; then
|
|
||||||
- ln -s "$IMAP_DIR/c-client/c-client.a" "$IMAP_DIR/c-client/libc-client.a" >/dev/null 2>&1
|
|
||||||
- elif test -r "$IMAP_DIR/$PHP_LIBDIR/c-client.a"; then
|
|
||||||
- ln -s "$IMAP_DIR/$PHP_LIBDIR/c-client.a" "$IMAP_DIR/$PHP_LIBDIR/libc-client.a" >/dev/null 2>&1
|
|
||||||
- fi
|
|
||||||
-
|
|
||||||
for lib in c-client4 c-client imap; do
|
|
||||||
IMAP_LIB=$lib
|
|
||||||
IMAP_LIB_CHK($PHP_LIBDIR)
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
--- php-5.2.14.orig/ext/gd/gd.c 2011-01-26 12:38:42.956023043 +0200
|
|
||||||
+++ php-5.2.14/ext/gd/gd.c 2011-01-26 13:37:21.171023045 +0200
|
|
||||||
@@ -4593,6 +4593,11 @@
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (aa_steps != 4 && aa_steps != 16) {
|
|
||||||
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Antialias steps must be 4 or 16");
|
|
||||||
+ RETURN_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
ZEND_FETCH_RESOURCE(bg_img, gdImagePtr, &img, -1, "Image", le_gd);
|
|
||||||
ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
|
|
||||||
|
|
||||||
@@ -1,265 +0,0 @@
|
|||||||
Index: ext/date/lib/parse_tz.c
|
|
||||||
===================================================================
|
|
||||||
RCS file: /repository/php-src/ext/date/lib/parse_tz.c,v
|
|
||||||
retrieving revision 1.35
|
|
||||||
diff -u -r1.35 parse_tz.c
|
|
||||||
--- ext/date/lib/parse_tz.c 31 Dec 2007 07:12:08 -0000 1.35
|
|
||||||
+++ ext/date/lib/parse_tz.c 10 Jan 2008 11:42:15 -0000
|
|
||||||
@@ -20,6 +20,16 @@
|
|
||||||
|
|
||||||
#include "timelib.h"
|
|
||||||
|
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA
|
|
||||||
+#include <sys/mman.h>
|
|
||||||
+#include <sys/stat.h>
|
|
||||||
+#include <limits.h>
|
|
||||||
+#include <fcntl.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
+
|
|
||||||
+#include "php_scandir.h"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_STRING_H
|
|
||||||
@@ -27,7 +37,10 @@
|
|
||||||
#else
|
|
||||||
#include <strings.h>
|
|
||||||
#endif
|
|
||||||
+
|
|
||||||
+#ifndef HAVE_SYSTEM_TZDATA
|
|
||||||
#include "timezonedb.h"
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
|
||||||
# if defined(__LITTLE_ENDIAN__)
|
|
||||||
@@ -202,6 +215,195 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA
|
|
||||||
+
|
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA_PREFIX
|
|
||||||
+#define ZONEINFO_PREFIX HAVE_SYSTEM_TZDATA_PREFIX
|
|
||||||
+#else
|
|
||||||
+#define ZONEINFO_PREFIX "/usr/share/zoneinfo"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+static const timelib_tzdb *timezonedb_system = NULL;
|
|
||||||
+
|
|
||||||
+/* Filter out some non-tzdata files and the posix/right databases, if
|
|
||||||
+ * present. */
|
|
||||||
+static int index_filter(const struct dirent *ent)
|
|
||||||
+{
|
|
||||||
+ return strcmp(ent->d_name, ".") != 0
|
|
||||||
+ && strcmp(ent->d_name, "..") != 0
|
|
||||||
+ && strcmp(ent->d_name, "posix") != 0
|
|
||||||
+ && strcmp(ent->d_name, "posixrules") != 0
|
|
||||||
+ && strcmp(ent->d_name, "right") != 0
|
|
||||||
+ && strstr(ent->d_name, ".tab") == NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Create the zone identifier index by trawling the filesystem. */
|
|
||||||
+static void create_zone_index(timelib_tzdb *db)
|
|
||||||
+{
|
|
||||||
+ size_t dirstack_size, dirstack_top;
|
|
||||||
+ size_t index_size, index_next;
|
|
||||||
+ timelib_tzdb_index_entry *db_index;
|
|
||||||
+ char **dirstack;
|
|
||||||
+
|
|
||||||
+ /* LIFO stack to hold directory entres to scan; each slot is a
|
|
||||||
+ * directory name relative to the zoneinfo prefix. */
|
|
||||||
+ dirstack_size = 32;
|
|
||||||
+ dirstack = malloc(dirstack_size * sizeof *dirstack);
|
|
||||||
+ dirstack_top = 1;
|
|
||||||
+ dirstack[0] = strdup("");
|
|
||||||
+
|
|
||||||
+ /* Index array. */
|
|
||||||
+ index_size = 64;
|
|
||||||
+ db_index = malloc(index_size * sizeof *db_index);
|
|
||||||
+ index_next = 0;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ struct dirent **ents;
|
|
||||||
+ char name[PATH_MAX], *top;
|
|
||||||
+ int count;
|
|
||||||
+
|
|
||||||
+ /* Pop the top stack entry, and iterate through its contents. */
|
|
||||||
+ top = dirstack[--dirstack_top];
|
|
||||||
+ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s", top);
|
|
||||||
+
|
|
||||||
+ count = php_scandir(name, &ents, index_filter, php_alphasort);
|
|
||||||
+
|
|
||||||
+ while (count > 0) {
|
|
||||||
+ struct stat st;
|
|
||||||
+ const char *leaf = ents[count - 1]->d_name;
|
|
||||||
+
|
|
||||||
+ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s",
|
|
||||||
+ top, leaf);
|
|
||||||
+
|
|
||||||
+ if (strlen(name) && stat(name, &st) == 0) {
|
|
||||||
+ /* Name, relative to the zoneinfo prefix. */
|
|
||||||
+ const char *root = top;
|
|
||||||
+
|
|
||||||
+ if (root[0] == '/') root++;
|
|
||||||
+
|
|
||||||
+ snprintf(name, sizeof name, "%s%s%s", root,
|
|
||||||
+ *root ? "/": "", leaf);
|
|
||||||
+
|
|
||||||
+ if (S_ISDIR(st.st_mode)) {
|
|
||||||
+ if (dirstack_top == dirstack_size) {
|
|
||||||
+ dirstack_size *= 2;
|
|
||||||
+ dirstack = realloc(dirstack,
|
|
||||||
+ dirstack_size * sizeof *dirstack);
|
|
||||||
+ }
|
|
||||||
+ dirstack[dirstack_top++] = strdup(name);
|
|
||||||
+ }
|
|
||||||
+ else {
|
|
||||||
+ if (index_next == index_size) {
|
|
||||||
+ index_size *= 2;
|
|
||||||
+ db_index = realloc(db_index,
|
|
||||||
+ index_size * sizeof *db_index);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ db_index[index_next].id = strdup(name);
|
|
||||||
+ db_index[index_next++].pos = 0;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ free(ents[--count]);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ free(ents);
|
|
||||||
+ free(top);
|
|
||||||
+ } while (dirstack_top);
|
|
||||||
+
|
|
||||||
+ db->index = db_index;
|
|
||||||
+ db->index_size = index_next;
|
|
||||||
+
|
|
||||||
+ free(dirstack);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Return the mmap()ed tzfile if found, else NULL. On success, the
|
|
||||||
+ * length of the mapped data is placed in *length. */
|
|
||||||
+static char *map_tzfile(const char *timezone, size_t *length)
|
|
||||||
+{
|
|
||||||
+ char fname[PATH_MAX];
|
|
||||||
+ struct stat st;
|
|
||||||
+ char *p;
|
|
||||||
+ int fd;
|
|
||||||
+
|
|
||||||
+ if (strstr(timezone, "..") != NULL) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
|
|
||||||
+
|
|
||||||
+ fd = open(fname, O_RDONLY);
|
|
||||||
+ if (fd == -1) {
|
|
||||||
+ return NULL;
|
|
||||||
+ } else if (fstat(fd, &st) != 0 || st.st_size < 21) {
|
|
||||||
+ close(fd);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *length = st.st_size;
|
|
||||||
+ p = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
|
|
||||||
+ close(fd);
|
|
||||||
+
|
|
||||||
+ return p != MAP_FAILED ? p : NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+const timelib_tzdb *timelib_builtin_db(void)
|
|
||||||
+{
|
|
||||||
+ if (timezonedb_system == NULL) {
|
|
||||||
+ timelib_tzdb *tmp = malloc(sizeof *tmp);
|
|
||||||
+
|
|
||||||
+ tmp->version = "0.system";
|
|
||||||
+ tmp->data = NULL;
|
|
||||||
+ create_zone_index(tmp);
|
|
||||||
+ timezonedb_system = tmp;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return timezonedb_system;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count)
|
|
||||||
+{
|
|
||||||
+ *count = timezonedb_system->index_size;
|
|
||||||
+ return timezonedb_system->index;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb)
|
|
||||||
+{
|
|
||||||
+ char fname[PATH_MAX];
|
|
||||||
+
|
|
||||||
+ if (strstr(timezone, "..") != NULL) {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
|
|
||||||
+
|
|
||||||
+ return access(fname, R_OK) == 0 ? 1 : 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb)
|
|
||||||
+{
|
|
||||||
+ char *tzf, *orig;
|
|
||||||
+ timelib_tzinfo *tmp;
|
|
||||||
+ size_t len;
|
|
||||||
+
|
|
||||||
+ orig = map_tzfile(timezone, &len);
|
|
||||||
+ if (orig == NULL) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ tmp = timelib_tzinfo_ctor(timezone);
|
|
||||||
+
|
|
||||||
+ tzf = orig + 20;
|
|
||||||
+ read_header(&tzf, tmp);
|
|
||||||
+ read_transistions(&tzf, tmp);
|
|
||||||
+ read_types(&tzf, tmp);
|
|
||||||
+
|
|
||||||
+ munmap(orig, len);
|
|
||||||
+
|
|
||||||
+ return tmp;
|
|
||||||
+}
|
|
||||||
+#else /* !HAVE_SYSTEM_TZDATA */
|
|
||||||
+
|
|
||||||
static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
|
|
||||||
{
|
|
||||||
int left = 0, right = tzdb->index_size - 1;
|
|
||||||
@@ -258,6 +460,7 @@
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static ttinfo* fetch_timezone_offset(timelib_tzinfo *tz, timelib_sll ts, timelib_sll *transition_time)
|
|
||||||
{
|
|
||||||
Index: ext/date/lib/timelib.m4
|
|
||||||
===================================================================
|
|
||||||
RCS file: /repository/php-src/ext/date/lib/timelib.m4,v
|
|
||||||
retrieving revision 1.4
|
|
||||||
diff -u -r1.4 timelib.m4
|
|
||||||
--- ext/date/lib/timelib.m4 3 Jul 2005 23:30:52 -0000 1.4
|
|
||||||
+++ ext/date/lib/timelib.m4 10 Jan 2008 11:42:16 -0000
|
|
||||||
@@ -78,3 +78,17 @@
|
|
||||||
|
|
||||||
dnl Check for strtoll, atoll
|
|
||||||
AC_CHECK_FUNCS(strtoll atoll strftime)
|
|
||||||
+
|
|
||||||
+PHP_ARG_WITH(system-tzdata, for use of system timezone data,
|
|
||||||
+[ --with-system-tzdata[=DIR] to specify use of system timezone data],
|
|
||||||
+no, no)
|
|
||||||
+
|
|
||||||
+if test "$PHP_SYSTEM_TZDATA" != "no"; then
|
|
||||||
+ AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used])
|
|
||||||
+
|
|
||||||
+ if test "$PHP_SYSTEM_TZDATA" != "yes"; then
|
|
||||||
+ AC_DEFINE_UNQUOTED(HAVE_SYSTEM_TZDATA_PREFIX, "$PHP_SYSTEM_TZDATA",
|
|
||||||
+ [Define for location of system timezone data])
|
|
||||||
+ fi
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
<IsA>library</IsA>
|
<IsA>library</IsA>
|
||||||
<Summary>PHP7 is an HTML-embedded scripting language. The goal of the language is to allow web developers to write dynamically generated pages quickly</Summary>
|
<Summary>PHP7 is an HTML-embedded scripting language. The goal of the language is to allow web developers to write dynamically generated pages quickly</Summary>
|
||||||
<Description>PHP7 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.</Description>
|
<Description>PHP7 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.</Description>
|
||||||
<Archive sha1sum="9ca66b8d102e485eaa30673677b0e33b01dcb3cb" type="tarbz2">http://us2.php.net/distributions/php-7.2.9.tar.bz2</Archive>
|
<Archive sha1sum="9264a6d51f40e5e45459e28bd9ad96540bbde402" type="tarbz2">https://www.php.net/distributions/php-7.3.8.tar.bz2</Archive>
|
||||||
<BuildDependencies>
|
<BuildDependencies>
|
||||||
<Dependency>gd-devel</Dependency>
|
<Dependency>gd-devel</Dependency>
|
||||||
<Dependency>re2c</Dependency>
|
<Dependency>re2c</Dependency>
|
||||||
@@ -217,6 +217,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<History>
|
<History>
|
||||||
|
<Update release="8">
|
||||||
|
<Date>2019-08-01</Date>
|
||||||
|
<Version>7.3.8</Version>
|
||||||
|
<Comment>Version bump</Comment>
|
||||||
|
<Name>İdris Kalp</Name>
|
||||||
|
<Email>idriskalp@gmail.com</Email>
|
||||||
|
</Update>
|
||||||
<Update release="7">
|
<Update release="7">
|
||||||
<Date>2018-11-26</Date>
|
<Date>2018-11-26</Date>
|
||||||
<Version>7.2.9</Version>
|
<Version>7.2.9</Version>
|
||||||
|
|||||||
Reference in New Issue
Block a user