All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache
@ 2018-04-03  9:50 Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 1/5] php: move patches to a single directory Anuj Mittal
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

These patches upgrade the versions of php recipes and enable opcache
in both. I had to move around some patches to ensure both the versions
compile without any fuzz warnings.

There are still some unrelated issues with these recipes like the ini file not
getting installed and the do_install logic should perhaps be reviewed again.

Anuj Mittal (5):
  php: move patches to a single directory
  php7: upgrade to 7.2.4
  php5: upgrade to 5.6.35
  php: add opcache extension to PACKAGECONFIG
  php: enable opcache by default

 .../php-7.1.9/0001-Specify-tag-with-libtool.patch  |   62 -
 .../php/php-7.1.9/CVE-2017-16642.patch             | 5241 --------------------
 .../php/php-7.1.9/CVE-2018-5711.patch              |   56 -
 meta-oe/recipes-devtools/php/php.inc               |   23 +-
 .../0001-Add-lpthread-to-link.patch                |    0
 ...-acinclude.m4-don-t-unset-cache-variables.patch |   39 +
 ...nclude.m4-skip-binconfig-check-for-libxml.patch |   56 +
 ...i.c-build-empty-php_load_zend_extension_c.patch |   63 +
 .../0001-opcache-config.m4-enable-opcache.patch    |  385 ++
 .../change-AC_TRY_RUN-to-AC_TRY_LINK.patch         |   13 +-
 meta-oe/recipes-devtools/php/php/configure.patch   |   11 -
 meta-oe/recipes-devtools/php/php/iconv.patch       |   19 +-
 .../php/php/imap-fix-autofoo.patch                 |   19 +-
 .../recipes-devtools/php/php/pear-makefile.patch   |   18 +-
 .../recipes-devtools/php/php/phar-makefile.patch   |   15 +-
 ...hp5-0001-opcache-config.m4-enable-opcache.patch |  387 ++
 .../php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch}   |   11 +-
 ...ear-makefile.patch => php5-pear-makefile.patch} |   12 +-
 ...har-makefile.patch => php5-phar-makefile.patch} |   15 +-
 .../recipes-devtools/php/php/php_exec_native.patch |   16 +-
 meta-oe/recipes-devtools/php/php_5.6.33.bb         |   10 -
 meta-oe/recipes-devtools/php/php_5.6.35.bb         |   23 +
 meta-oe/recipes-devtools/php/php_7.1.9.bb          |   18 -
 meta-oe/recipes-devtools/php/php_7.2.4.bb          |   23 +
 24 files changed, 1084 insertions(+), 5451 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/php/php-7.1.9/0001-Specify-tag-with-libtool.patch
 delete mode 100644 meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch
 delete mode 100644 meta-oe/recipes-devtools/php/php-7.1.9/CVE-2018-5711.patch
 rename meta-oe/recipes-devtools/php/{php-5.6.33 => php}/0001-Add-lpthread-to-link.patch (100%)
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
 rename meta-oe/recipes-devtools/php/{php-7.1.9 => php}/change-AC_TRY_RUN-to-AC_TRY_LINK.patch (75%)
 delete mode 100644 meta-oe/recipes-devtools/php/php/configure.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch
 rename meta-oe/recipes-devtools/php/{php-5.6.33/change-AC_TRY_RUN-to-AC_TRY_LINK.patch => php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch} (78%)
 copy meta-oe/recipes-devtools/php/php/{pear-makefile.patch => php5-pear-makefile.patch} (66%)
 copy meta-oe/recipes-devtools/php/php/{phar-makefile.patch => php5-phar-makefile.patch} (79%)
 delete mode 100644 meta-oe/recipes-devtools/php/php_5.6.33.bb
 create mode 100644 meta-oe/recipes-devtools/php/php_5.6.35.bb
 delete mode 100644 meta-oe/recipes-devtools/php/php_7.1.9.bb
 create mode 100644 meta-oe/recipes-devtools/php/php_7.2.4.bb

-- 
2.7.4



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [meta-oe][PATCH 1/5] php: move patches to a single directory
  2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
@ 2018-04-03  9:50 ` Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 2/5] php7: upgrade to 7.2.4 Anuj Mittal
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

Having two directories with version numbers just leads to unnecessary
churn everytime there's a version update.

We can have all patches in one single directory and differentiate b/w
specific version by prefix php5-/php7-

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 .../change-AC_TRY_RUN-to-AC_TRY_LINK.patch         | 56 ----------------------
 .../0001-Add-lpthread-to-link.patch                |  0
 .../0001-Specify-tag-with-libtool.patch            |  0
 .../php/{php-7.1.9 => php}/CVE-2017-16642.patch    |  0
 .../php/{php-7.1.9 => php}/CVE-2018-5711.patch     |  0
 .../change-AC_TRY_RUN-to-AC_TRY_LINK.patch         |  0
 6 files changed, 56 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/php/php-5.6.33/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
 rename meta-oe/recipes-devtools/php/{php-5.6.33 => php}/0001-Add-lpthread-to-link.patch (100%)
 rename meta-oe/recipes-devtools/php/{php-7.1.9 => php}/0001-Specify-tag-with-libtool.patch (100%)
 rename meta-oe/recipes-devtools/php/{php-7.1.9 => php}/CVE-2017-16642.patch (100%)
 rename meta-oe/recipes-devtools/php/{php-7.1.9 => php}/CVE-2018-5711.patch (100%)
 rename meta-oe/recipes-devtools/php/{php-7.1.9 => php}/change-AC_TRY_RUN-to-AC_TRY_LINK.patch (100%)

diff --git a/meta-oe/recipes-devtools/php/php-5.6.33/change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/meta-oe/recipes-devtools/php/php-5.6.33/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
deleted file mode 100644
index 39c334f..0000000
--- a/meta-oe/recipes-devtools/php/php-5.6.33/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-[PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
-
-Upstream-Status: Pending
-
-AC_TRY_RUN is not suitable for cross-compile
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- ext/fileinfo/config.m4 | 31 ++++++-------------------------
- 1 file changed, 6 insertions(+), 25 deletions(-)
-
-diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
-index 7e98d62..8a8ea0e 100644
---- a/ext/fileinfo/config.m4
-+++ b/ext/fileinfo/config.m4
-@@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
-     libmagic/readcdf.c libmagic/softmagic.c"
- 
-   AC_MSG_CHECKING([for strcasestr])
--  AC_TRY_RUN([
--#include <string.h>
--#include <strings.h>
--#include <stdlib.h>
--
--int main(void)
--{
--        char *s0, *s1, *ret;
--
--        s0 = (char *) malloc(42);
--        s1 = (char *) malloc(8);
--
--        memset(s0, 'X', 42);
--        s0[24] = 'Y';
--        s0[26] = 'Z';
--        s0[41] = '\0';
--        memset(s1, 'x', 8);
--        s1[0] = 'y';
--        s1[2] = 'Z';
--        s1[7] = '\0';
--
--        ret = strcasestr(s0, s1);
--
--        return !(NULL != ret);
--}
-+  AC_TRY_COMPILE([
-+     #include <string.h>
-+     #include <strings.h>
-+     #include <stdlib.h>
-+  ],[
-+     strcasestr(NULL, NULL);
-   ],[
-     dnl using the platform implementation
-     AC_MSG_RESULT(yes)
--- 
-1.9.1
-
diff --git a/meta-oe/recipes-devtools/php/php-5.6.33/0001-Add-lpthread-to-link.patch b/meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch
similarity index 100%
rename from meta-oe/recipes-devtools/php/php-5.6.33/0001-Add-lpthread-to-link.patch
rename to meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch
diff --git a/meta-oe/recipes-devtools/php/php-7.1.9/0001-Specify-tag-with-libtool.patch b/meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch
similarity index 100%
rename from meta-oe/recipes-devtools/php/php-7.1.9/0001-Specify-tag-with-libtool.patch
rename to meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch
diff --git a/meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch b/meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch
similarity index 100%
rename from meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch
rename to meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch
diff --git a/meta-oe/recipes-devtools/php/php-7.1.9/CVE-2018-5711.patch b/meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch
similarity index 100%
rename from meta-oe/recipes-devtools/php/php-7.1.9/CVE-2018-5711.patch
rename to meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch
diff --git a/meta-oe/recipes-devtools/php/php-7.1.9/change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
similarity index 100%
rename from meta-oe/recipes-devtools/php/php-7.1.9/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
rename to meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [meta-oe][PATCH 2/5] php7: upgrade to 7.2.4
  2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 1/5] php: move patches to a single directory Anuj Mittal
@ 2018-04-03  9:50 ` Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 3/5] php5: upgrade to 5.6.35 Anuj Mittal
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

* For changes, see:
http://www.php.net/ChangeLog-7.php#7.2.4

* Remove patches as they've been upstreamed:
- 0001-Specify-tag-with-libtool.patch
- CVE-2017-16642.patch
- CVE-2018-5711.patch

* mcrypt module has been deprecated and as such dependency has been moved
from php.inc to php5 recipe.

* Refresh patches to avoid fuzz warnings.

* New patches to:
- Make sure libxml is detected using pkg-config instead of binconfig.
- Fix link time warnings (backport, see patch for details)

* Move the following patches to php5 from inc as they were getting applied
out of context:
- acinclude-xml2-config.patch
- 0001-acinclude-use-pkgconfig-for-libxml2-config.patch

License-Update: License is same, just a change in copyright year to 2018.

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 meta-oe/recipes-devtools/php/php.inc               |    5 +-
 .../php/php/0001-Specify-tag-with-libtool.patch    |   62 -
 ...nclude.m4-skip-binconfig-check-for-libxml.patch |   56 +
 ...i.c-build-empty-php_load_zend_extension_c.patch |   63 +
 .../recipes-devtools/php/php/CVE-2017-16642.patch  | 5241 --------------------
 .../recipes-devtools/php/php/CVE-2018-5711.patch   |   56 -
 .../php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch |   13 +-
 meta-oe/recipes-devtools/php/php/configure.patch   |   20 +-
 meta-oe/recipes-devtools/php/php/iconv.patch       |   19 +-
 .../php/php/imap-fix-autofoo.patch                 |   19 +-
 .../recipes-devtools/php/php/pear-makefile.patch   |   18 +-
 .../recipes-devtools/php/php/phar-makefile.patch   |   15 +-
 .../recipes-devtools/php/php/php_exec_native.patch |   16 +-
 meta-oe/recipes-devtools/php/php_5.6.33.bb         |    8 +-
 .../php/{php_7.1.9.bb => php_7.2.4.bb}             |   12 +-
 15 files changed, 213 insertions(+), 5410 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
 delete mode 100644 meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch
 delete mode 100644 meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch
 rename meta-oe/recipes-devtools/php/{php_7.1.9.bb => php_7.2.4.bb} (52%)

diff --git a/meta-oe/recipes-devtools/php/php.inc b/meta-oe/recipes-devtools/php/php.inc
index 8394c4f..d2af4f6 100644
--- a/meta-oe/recipes-devtools/php/php.inc
+++ b/meta-oe/recipes-devtools/php/php.inc
@@ -6,15 +6,13 @@ LICENSE = "PHP-3.0"
 
 BBCLASSEXTEND = "native"
 DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native \
-           openssl libmcrypt"
+           openssl"
 DEPENDS_class-native = "zlib-native libxml2-native"
 
 PHP_MAJOR_VERSION = "${@d.getVar('PV', True).split('.')[0]}"
 
 SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
-           file://acinclude-xml2-config.patch \
            file://0001-php-don-t-use-broken-wrapper-for-mkdir.patch \
-           file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
           "
 
 SRC_URI_append_class-target = " \
@@ -57,7 +55,6 @@ EXTRA_OECONF = "--enable-mbstring \
                 --with-gettext=${STAGING_LIBDIR}/.. \
                 --with-zlib=${STAGING_LIBDIR}/.. \
                 --with-iconv=${STAGING_LIBDIR}/.. \
-                --with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
                 --with-bz2=${STAGING_DIR_TARGET}${exec_prefix} \
                 --with-config-file-path=${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION} \
                 ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'ac_cv_c_bigendian_php=no', 'ac_cv_c_bigendian_php=yes', d)} \
diff --git a/meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch b/meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch
deleted file mode 100644
index 18b4937..0000000
--- a/meta-oe/recipes-devtools/php/php/0001-Specify-tag-with-libtool.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 5c84b039e97abd88f6a18da0e6d27383c00fea92 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 26 Jul 2017 23:06:56 -0700
-Subject: [PATCH] Specify --tag with libtool
-
-This helps in compiling with external toolchains
-with -fPIE appended to CC e.g. via hardening flags
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- acinclude.m4 | 8 ++++----
- configure.in | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index a114a98..1cc7a26 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -806,10 +806,10 @@ dnl
- dnl PHP_BUILD_PROGRAM
- dnl
- AC_DEFUN([PHP_BUILD_PROGRAM],[
--  php_c_pre='$(LIBTOOL) --mode=compile $(CC)'
-+  php_c_pre='$(LIBTOOL) --tag=CC --mode=compile $(CC)'
-   php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)'
-   php_c_post=
--  php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)'
-+  php_cxx_pre='$(LIBTOOL) --tag=CXX --mode=compile $(CXX)'
-   php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)'
-   php_cxx_post=
-   php_lo=lo
-@@ -819,10 +819,10 @@ AC_DEFUN([PHP_BUILD_PROGRAM],[
-     no)  pic_setting='-prefer-non-pic';;
-   esac
- 
--  shared_c_pre='$(LIBTOOL) --mode=compile $(CC)'
-+  shared_c_pre='$(LIBTOOL) --tag=CC --mode=compile $(CC)'
-   shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) '$pic_setting
-   shared_c_post=
--  shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)'
-+  shared_cxx_pre='$(LIBTOOL) --tag=CXX --mode=compile $(CXX)'
-   shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) '$pic_setting
-   shared_cxx_post=
-   shared_lo=lo
-diff --git a/configure.in b/configure.in
-index 7d65b63..7221af9 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1431,8 +1431,8 @@ PHP_SET_LIBTOOL_VARIABLE([--silent])
- dnl libtool 1.4.3 needs this.
- PHP_SET_LIBTOOL_VARIABLE([--preserve-dup-deps])
- 
--test -z "$PHP_COMPILE" && PHP_COMPILE='$(LIBTOOL) --mode=compile $(COMPILE) -c $<'
--test -z "$CXX_PHP_COMPILE" && CXX_PHP_COMPILE='$(LIBTOOL) --mode=compile $(CXX_COMPILE) -c $<'
-+test -z "$PHP_COMPILE" && PHP_COMPILE='$(LIBTOOL) --tag=CC --mode=compile $(COMPILE) -c $<'
-+test -z "$CXX_PHP_COMPILE" && CXX_PHP_COMPILE='$(LIBTOOL) --tag=CXX --mode=compile $(CXX_COMPILE) -c $<'
- SHARED_LIBTOOL='$(LIBTOOL)'
- 
- CC=$old_CC
--- 
-2.13.3
-
diff --git a/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch b/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
new file mode 100644
index 0000000..1532926
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
@@ -0,0 +1,56 @@
+From a2d146b8dd9d02f523d1e205d79792626a71dec3 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Mon, 2 Apr 2018 15:27:09 +0800
+Subject: [PATCH] acinclude.m4: skip binconfig check for libxml
+
+We want libxml flags to be picked up using pkg-config instead of the
+xml2-config file.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+---
+ acinclude.m4 | 29 -----------------------------
+ 1 file changed, 29 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index d42d708..d32766a 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2525,35 +2525,6 @@ dnl
+ AC_DEFUN([PHP_SETUP_LIBXML], [
+   found_libxml=no
+ 
+-  dnl First try to find xml2-config
+-  AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+-  [
+-    for i in $PHP_LIBXML_DIR /usr/local /usr; do
+-      if test -x "$i/bin/xml2-config"; then
+-        ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+-        break
+-      fi
+-    done
+-  ])
+-
+-  if test -x "$ac_cv_php_xml2_config_path"; then
+-    XML2_CONFIG="$ac_cv_php_xml2_config_path"
+-    libxml_full_version=`$XML2_CONFIG --version`
+-    ac_IFS=$IFS
+-    IFS="."
+-    set $libxml_full_version
+-    IFS=$ac_IFS
+-    LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
+-    if test "$LIBXML_VERSION" -ge "2006011"; then
+-      found_libxml=yes
+-      LIBXML_LIBS=`$XML2_CONFIG --libs`
+-      LIBXML_INCS=`$XML2_CONFIG --cflags`
+-    else
+-      AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
+-    fi
+-  fi
+-
+-  dnl If xml2-config fails, try pkg-config
+   if test "$found_libxml" = "no"; then
+     if test -z "$PKG_CONFIG"; then
+       AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
diff --git a/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch b/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
new file mode 100644
index 0000000..fce9738
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
@@ -0,0 +1,63 @@
+From 2842aa2a078eb1cad55540b61e7edf111395150d Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Mon, 26 Feb 2018 19:30:55 +0100
+Subject: [PATCH] main/php_ini.c: build empty php_load_zend_extension_cb() when
+ !HAVE_LIBDL
+
+Commit 0782a7fc6314c8bd3cbfd57f12d0479bf9cc8dc7 ("Fixed bug #74866
+extension_dir = "./ext" now use current directory for base") modified
+the php_load_zend_extension_cb() function to use php_load_shlib(), and
+pass a handle to the newly introduced zend_load_extension_handle()
+function instead of passing the extension path to
+zend_load_extension().
+
+While doing so, it introduced a call to php_load_shlib() from code
+that is built even when HAVE_LIBDL is not defined. However,
+php_load_shlib() is not implemented when HAVE_LIBDL is not defined,
+for obvious reasons.
+
+It turns out that zend_load_extension_handle() anyway doesn't do
+anything when ZEND_EXTENSIONS_SUPPORT is defined to 0, and
+ZEND_EXTENSIONS_SUPPORT is not defined when HAVE_LIBDL is not defined
+(Zend/zend_portability.h).
+
+Fixes the following build failure when building on a system that
+doesn't have libdl:
+
+main/php_ini.o: In function `php_load_zend_extension_cb':
+php_ini.c:(.text+0x478): undefined reference to `php_load_shlib'
+php_ini.c:(.text+0x4b0): undefined reference to `php_load_shlib'
+collect2: error: ld returned 1 exit status
+
+Upstream-Status: Backport [http://git.php.net/?p=php-src.git;a=commit;h=2842aa2a078eb1cad55540b61e7edf111395150d]
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ main/php_ini.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/main/php_ini.c b/main/php_ini.c
+index ba58eb1..fca263e 100644
+--- a/main/php_ini.c
++++ b/main/php_ini.c
+@@ -350,6 +350,7 @@ static void php_load_php_extension_cb(void *arg)
+ 
+ /* {{{ php_load_zend_extension_cb
+  */
++#ifdef HAVE_LIBDL
+ static void php_load_zend_extension_cb(void *arg)
+ {
+ 	char *filename = *((char **) arg);
+@@ -409,6 +410,9 @@ static void php_load_zend_extension_cb(void *arg)
+ 		efree(libpath);
+ 	}
+ }
++#else
++static void php_load_zend_extension_cb(void *arg) { }
++#endif
+ /* }}} */
+ 
+ /* {{{ php_init_config
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch b/meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch
deleted file mode 100644
index 41d2a0f..0000000
--- a/meta-oe/recipes-devtools/php/php/CVE-2017-16642.patch
+++ /dev/null
@@ -1,5241 +0,0 @@
-From f2f90767311355cafabff604a7a857ca60ee3f01 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Wed, 22 Nov 2017 21:14:59 -0800
-Subject: [PATCH] Fixed bug #75055 Out-Of-Bounds Read in timelib_meridian()
-
-Upstream-Status: Backport
-CVE: CVE-2017-16642
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- ext/date/lib/parse_date.c         | 1544 +++++++++++++++++++++----------------
- ext/date/lib/parse_date.re        |    4 +-
- ext/date/tests/bug53437_var3.phpt |    2 +-
- ext/wddx/tests/bug75055.phpt      |   20 +
- ext/wddx/tests/bug75055.wddx      |   13 +
- 5 files changed, 911 insertions(+), 672 deletions(-)
- create mode 100644 ext/wddx/tests/bug75055.phpt
- create mode 100644 ext/wddx/tests/bug75055.wddx
-
-diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
-index f929619..6b11418 100644
---- a/ext/date/lib/parse_date.c
-+++ b/ext/date/lib/parse_date.c
-@@ -1,4 +1,5 @@
--/* Generated by re2c 0.15.3 on Tue Jul  4 21:15:17 2017 */
-+/* Generated by re2c 0.15.3 on Wed Nov 22 21:14:47 2017 */
-+#line 1 "ext/date/lib/parse_date.re"
- /*
-  * The MIT License (MIT)
-  *
-@@ -837,9 +838,11 @@ static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
- std:
- 	s->tok = cursor;
- 	s->len = 0;
-+#line 965 "ext/date/lib/parse_date.re"
- 
- 
- 
-+#line 846 "ext/date/lib/parse_date.c"
- {
- 	YYCTYPE yych;
- 	unsigned int yyaccept = 0;
-@@ -962,18 +965,19 @@ yy2:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'D') goto yy165;
--			goto yy1521;
-+			goto yy1523;
- 		}
- 	} else {
- 		if (yych <= 'd') {
- 			if (yych <= 'Z') goto yy165;
- 			if (yych >= 'a') goto yy170;
- 		} else {
--			if (yych <= 'e') goto yy1530;
-+			if (yych <= 'e') goto yy1532;
- 			if (yych <= 'z') goto yy170;
- 		}
- 	}
- yy3:
-+#line 1673 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("tzcorrection | tz");
-@@ -986,6 +990,7 @@ yy3:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_TIMEZONE;
- 	}
-+#line 994 "ext/date/lib/parse_date.c"
- yy4:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'E') {
-@@ -995,7 +1000,7 @@ yy4:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'D') goto yy165;
--			goto yy1521;
-+			goto yy1523;
- 		}
- 	} else {
- 		if (yych <= 'd') {
-@@ -1003,7 +1008,7 @@ yy4:
- 			if (yych <= '`') goto yy3;
- 			goto yy165;
- 		} else {
--			if (yych <= 'e') goto yy1521;
-+			if (yych <= 'e') goto yy1523;
- 			if (yych <= 'z') goto yy165;
- 			goto yy3;
- 		}
-@@ -1017,12 +1022,12 @@ yy5:
- 			goto yy165;
- 		} else {
- 			if (yych <= 'H') {
--				if (yych <= 'E') goto yy1492;
-+				if (yych <= 'E') goto yy1494;
- 				goto yy165;
- 			} else {
--				if (yych <= 'I') goto yy1493;
-+				if (yych <= 'I') goto yy1495;
- 				if (yych <= 'N') goto yy165;
--				goto yy1491;
-+				goto yy1493;
- 			}
- 		}
- 	} else {
-@@ -1031,15 +1036,15 @@ yy5:
- 				if (yych <= 'Z') goto yy165;
- 				goto yy3;
- 			} else {
--				if (yych == 'e') goto yy1508;
-+				if (yych == 'e') goto yy1510;
- 				goto yy170;
- 			}
- 		} else {
- 			if (yych <= 'n') {
--				if (yych <= 'i') goto yy1509;
-+				if (yych <= 'i') goto yy1511;
- 				goto yy170;
- 			} else {
--				if (yych <= 'o') goto yy1507;
-+				if (yych <= 'o') goto yy1509;
- 				if (yych <= 'z') goto yy170;
- 				goto yy3;
- 			}
-@@ -1054,12 +1059,12 @@ yy6:
- 			goto yy165;
- 		} else {
- 			if (yych <= 'H') {
--				if (yych <= 'E') goto yy1492;
-+				if (yych <= 'E') goto yy1494;
- 				goto yy165;
- 			} else {
--				if (yych <= 'I') goto yy1493;
-+				if (yych <= 'I') goto yy1495;
- 				if (yych <= 'N') goto yy165;
--				goto yy1491;
-+				goto yy1493;
- 			}
- 		}
- 	} else {
-@@ -1068,15 +1073,15 @@ yy6:
- 				if (yych <= 'Z') goto yy165;
- 				goto yy3;
- 			} else {
--				if (yych == 'e') goto yy1492;
-+				if (yych == 'e') goto yy1494;
- 				goto yy165;
- 			}
- 		} else {
- 			if (yych <= 'n') {
--				if (yych <= 'i') goto yy1493;
-+				if (yych <= 'i') goto yy1495;
- 				goto yy165;
- 			} else {
--				if (yych <= 'o') goto yy1491;
-+				if (yych <= 'o') goto yy1493;
- 				if (yych <= 'z') goto yy165;
- 				goto yy3;
- 			}
-@@ -1088,24 +1093,24 @@ yy7:
- 		if (yych <= 'A') {
- 			if (yych == ')') goto yy164;
- 			if (yych <= '@') goto yy3;
--			goto yy1461;
-+			goto yy1463;
- 		} else {
--			if (yych == 'I') goto yy1462;
-+			if (yych == 'I') goto yy1464;
- 			if (yych <= 'N') goto yy165;
--			goto yy1463;
-+			goto yy1465;
- 		}
- 	} else {
- 		if (yych <= 'h') {
- 			if (yych <= 'Z') goto yy165;
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1476;
-+			if (yych <= 'a') goto yy1478;
- 			goto yy170;
- 		} else {
- 			if (yych <= 'n') {
--				if (yych <= 'i') goto yy1477;
-+				if (yych <= 'i') goto yy1479;
- 				goto yy170;
- 			} else {
--				if (yych <= 'o') goto yy1478;
-+				if (yych <= 'o') goto yy1480;
- 				if (yych <= 'z') goto yy170;
- 				goto yy3;
- 			}
-@@ -1117,24 +1122,24 @@ yy8:
- 		if (yych <= 'A') {
- 			if (yych == ')') goto yy164;
- 			if (yych <= '@') goto yy3;
--			goto yy1461;
-+			goto yy1463;
- 		} else {
--			if (yych == 'I') goto yy1462;
-+			if (yych == 'I') goto yy1464;
- 			if (yych <= 'N') goto yy165;
--			goto yy1463;
-+			goto yy1465;
- 		}
- 	} else {
- 		if (yych <= 'h') {
- 			if (yych <= 'Z') goto yy165;
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1461;
-+			if (yych <= 'a') goto yy1463;
- 			goto yy165;
- 		} else {
- 			if (yych <= 'n') {
--				if (yych <= 'i') goto yy1462;
-+				if (yych <= 'i') goto yy1464;
- 				goto yy165;
- 			} else {
--				if (yych <= 'o') goto yy1463;
-+				if (yych <= 'o') goto yy1465;
- 				if (yych <= 'z') goto yy165;
- 				goto yy3;
- 			}
-@@ -1146,15 +1151,15 @@ yy9:
- 	switch (yych) {
- 	case ')':	goto yy164;
- 	case '0':
--	case '1':	goto yy1391;
--	case '2':	goto yy1392;
-+	case '1':	goto yy1393;
-+	case '2':	goto yy1394;
- 	case '3':
- 	case '4':
- 	case '5':
- 	case '6':
- 	case '7':
- 	case '8':
--	case '9':	goto yy1393;
-+	case '9':	goto yy1395;
- 	case 'A':
- 	case 'B':
- 	case 'C':
-@@ -1176,11 +1181,11 @@ yy9:
- 	case 'X':
- 	case 'Y':
- 	case 'Z':	goto yy165;
--	case 'E':	goto yy1386;
--	case 'H':	goto yy1387;
--	case 'O':	goto yy1388;
--	case 'U':	goto yy1389;
--	case 'W':	goto yy1390;
-+	case 'E':	goto yy1388;
-+	case 'H':	goto yy1389;
-+	case 'O':	goto yy1390;
-+	case 'U':	goto yy1391;
-+	case 'W':	goto yy1392;
- 	case 'a':
- 	case 'b':
- 	case 'c':
-@@ -1202,11 +1207,11 @@ yy9:
- 	case 'x':
- 	case 'y':
- 	case 'z':	goto yy170;
--	case 'e':	goto yy1429;
--	case 'h':	goto yy1430;
--	case 'o':	goto yy1431;
--	case 'u':	goto yy1432;
--	case 'w':	goto yy1433;
-+	case 'e':	goto yy1431;
-+	case 'h':	goto yy1432;
-+	case 'o':	goto yy1433;
-+	case 'u':	goto yy1434;
-+	case 'w':	goto yy1435;
- 	default:	goto yy3;
- 	}
- yy10:
-@@ -1215,15 +1220,15 @@ yy10:
- 	switch (yych) {
- 	case ')':	goto yy164;
- 	case '0':
--	case '1':	goto yy1391;
--	case '2':	goto yy1392;
-+	case '1':	goto yy1393;
-+	case '2':	goto yy1394;
- 	case '3':
- 	case '4':
- 	case '5':
- 	case '6':
- 	case '7':
- 	case '8':
--	case '9':	goto yy1393;
-+	case '9':	goto yy1395;
- 	case 'A':
- 	case 'B':
- 	case 'C':
-@@ -1267,28 +1272,30 @@ yy10:
- 	case 'y':
- 	case 'z':	goto yy165;
- 	case 'E':
--	case 'e':	goto yy1386;
-+	case 'e':	goto yy1388;
- 	case 'H':
--	case 'h':	goto yy1387;
-+	case 'h':	goto yy1389;
- 	case 'O':
--	case 'o':	goto yy1388;
-+	case 'o':	goto yy1390;
- 	case 'U':
--	case 'u':	goto yy1389;
-+	case 'u':	goto yy1391;
- 	case 'W':
--	case 'w':	goto yy1390;
-+	case 'w':	goto yy1392;
- 	default:	goto yy3;
- 	}
- yy11:
- 	yyaccept = 1;
- 	yych = *(YYMARKER = ++YYCURSOR);
--	if (yych == '-') goto yy1374;
-+	if (yych == '-') goto yy1376;
- 	if (yych <= '/') goto yy12;
--	if (yych <= '9') goto yy1375;
-+	if (yych <= '9') goto yy1377;
- yy12:
-+#line 1768 "ext/date/lib/parse_date.re"
- 	{
- 		add_error(s, "Unexpected character");
- 		goto std;
- 	}
-+#line 1299 "ext/date/lib/parse_date.c"
- yy13:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
-@@ -1299,16 +1306,16 @@ yy13:
- 			} else {
- 				if (yych <= '@') goto yy3;
- 				if (yych <= 'D') goto yy165;
--				goto yy1310;
-+				goto yy1311;
- 			}
- 		} else {
- 			if (yych <= 'N') {
--				if (yych == 'I') goto yy1311;
-+				if (yych == 'I') goto yy1312;
- 				goto yy165;
- 			} else {
--				if (yych <= 'O') goto yy1312;
-+				if (yych <= 'O') goto yy1313;
- 				if (yych <= 'Q') goto yy165;
--				goto yy1313;
-+				goto yy1314;
- 			}
- 		}
- 	} else {
-@@ -1318,16 +1325,16 @@ yy13:
- 				if (yych <= '`') goto yy3;
- 				goto yy170;
- 			} else {
--				if (yych <= 'e') goto yy1351;
-+				if (yych <= 'e') goto yy1353;
- 				if (yych <= 'h') goto yy170;
--				goto yy1352;
-+				goto yy1354;
- 			}
- 		} else {
- 			if (yych <= 'q') {
--				if (yych == 'o') goto yy1353;
-+				if (yych == 'o') goto yy1355;
- 				goto yy170;
- 			} else {
--				if (yych <= 'r') goto yy1354;
-+				if (yych <= 'r') goto yy1356;
- 				if (yych <= 'z') goto yy170;
- 				goto yy3;
- 			}
-@@ -1343,16 +1350,16 @@ yy14:
- 			} else {
- 				if (yych <= '@') goto yy3;
- 				if (yych <= 'D') goto yy165;
--				goto yy1310;
-+				goto yy1311;
- 			}
- 		} else {
- 			if (yych <= 'N') {
--				if (yych == 'I') goto yy1311;
-+				if (yych == 'I') goto yy1312;
- 				goto yy165;
- 			} else {
--				if (yych <= 'O') goto yy1312;
-+				if (yych <= 'O') goto yy1313;
- 				if (yych <= 'Q') goto yy165;
--				goto yy1313;
-+				goto yy1314;
- 			}
- 		}
- 	} else {
-@@ -1362,16 +1369,16 @@ yy14:
- 				if (yych <= '`') goto yy3;
- 				goto yy165;
- 			} else {
--				if (yych <= 'e') goto yy1310;
-+				if (yych <= 'e') goto yy1311;
- 				if (yych <= 'h') goto yy165;
--				goto yy1311;
-+				goto yy1312;
- 			}
- 		} else {
- 			if (yych <= 'q') {
--				if (yych == 'o') goto yy1312;
-+				if (yych == 'o') goto yy1313;
- 				goto yy165;
- 			} else {
--				if (yych <= 'r') goto yy1313;
-+				if (yych <= 'r') goto yy1314;
- 				if (yych <= 'z') goto yy165;
- 				goto yy3;
- 			}
-@@ -1382,13 +1389,13 @@ yy15:
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
- 		if (yych <= '@') goto yy3;
--		goto yy1296;
-+		goto yy1297;
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') goto yy165;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1307;
-+			if (yych <= 'a') goto yy1308;
- 			if (yych <= 'z') goto yy170;
- 			goto yy3;
- 		}
-@@ -1398,13 +1405,13 @@ yy16:
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
- 		if (yych <= '@') goto yy3;
--		goto yy1296;
-+		goto yy1297;
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') goto yy165;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1296;
-+			if (yych <= 'a') goto yy1297;
- 			if (yych <= 'z') goto yy165;
- 			goto yy3;
- 		}
-@@ -1420,7 +1427,7 @@ yy17:
- 			if (yych <= 'Z') goto yy165;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1293;
-+			if (yych <= 'a') goto yy1294;
- 			if (yych <= 'z') goto yy170;
- 			goto yy3;
- 		}
-@@ -2495,18 +2502,22 @@ yy48:
- 	if (yych <= '/') goto yy49;
- 	if (yych <= '9') goto yy54;
- yy49:
-+#line 1757 "ext/date/lib/parse_date.re"
- 	{
- 		goto std;
- 	}
-+#line 2510 "ext/date/lib/parse_date.c"
- yy50:
- 	yych = *++YYCURSOR;
- 	goto yy49;
- yy51:
- 	++YYCURSOR;
-+#line 1762 "ext/date/lib/parse_date.re"
- 	{
- 		s->pos = cursor; s->line++;
- 		goto std;
- 	}
-+#line 2521 "ext/date/lib/parse_date.c"
- yy53:
- 	yych = *++YYCURSOR;
- 	goto yy12;
-@@ -2693,23 +2704,23 @@ yy56:
- 					}
- 				} else {
- 					if (yyaccept == 28) {
--						goto yy1377;
-+						goto yy1379;
- 					} else {
--						goto yy1415;
-+						goto yy1417;
- 					}
- 				}
- 			} else {
- 				if (yyaccept <= 31) {
- 					if (yyaccept == 30) {
--						goto yy1418;
-+						goto yy1420;
- 					} else {
--						goto yy1498;
-+						goto yy1500;
- 					}
- 				} else {
- 					if (yyaccept == 32) {
--						goto yy1506;
-+						goto yy1508;
- 					} else {
--						goto yy1529;
-+						goto yy1531;
- 					}
- 				}
- 			}
-@@ -2920,6 +2931,7 @@ yy73:
- 	if (yych == 'S') goto yy75;
- 	if (yych == 's') goto yy75;
- yy74:
-+#line 1741 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_ull i;
- 		DEBUG_OUTPUT("relative");
-@@ -2934,6 +2946,7 @@ yy74:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
-+#line 2950 "ext/date/lib/parse_date.c"
- yy75:
- 	yych = *++YYCURSOR;
- 	if (yych == 'D') goto yy76;
-@@ -3719,6 +3732,7 @@ yy190:
- 		}
- 	}
- yy191:
-+#line 1604 "ext/date/lib/parse_date.re"
- 	{
- 		const timelib_relunit* relunit;
- 		DEBUG_OUTPUT("daytext");
-@@ -3735,6 +3749,7 @@ yy191:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_WEEKDAY;
- 	}
-+#line 3753 "ext/date/lib/parse_date.c"
- yy192:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'K') {
-@@ -4227,6 +4242,7 @@ yy217:
- 		}
- 	}
- yy218:
-+#line 1663 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("monthtext");
- 		TIMELIB_INIT;
-@@ -4235,6 +4251,7 @@ yy218:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_TEXT;
- 	}
-+#line 4255 "ext/date/lib/parse_date.c"
- yy219:
- 	++YYCURSOR;
- 	if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23);
-@@ -4469,6 +4486,7 @@ yy231:
- 	if (yych == 't') goto yy319;
- 	goto yy237;
- yy232:
-+#line 1409 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("datetextual | datenoyear");
-@@ -4481,6 +4499,7 @@ yy232:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_TEXT;
- 	}
-+#line 4503 "ext/date/lib/parse_date.c"
- yy233:
- 	yyaccept = 6;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -4593,6 +4612,7 @@ yy245:
- 		if (yych <= ':') goto yy248;
- 	}
- yy246:
-+#line 1711 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
-@@ -4621,6 +4641,7 @@ yy246:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_SHORTDATE_WITH_TIME;
- 	}
-+#line 4645 "ext/date/lib/parse_date.c"
- yy247:
- 	yyaccept = 7;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -4893,6 +4914,7 @@ yy269:
- 	}
- yy270:
- 	++YYCURSOR;
-+#line 1687 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
- 		TIMELIB_INIT;
-@@ -4915,6 +4937,7 @@ yy270:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_SHORTDATE_WITH_TIME;
- 	}
-+#line 4941 "ext/date/lib/parse_date.c"
- yy272:
- 	yych = *++YYCURSOR;
- 	if (yych <= 0x1F) {
-@@ -5470,6 +5493,7 @@ yy320:
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
- 	++YYCURSOR;
-+#line 1381 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("datenoday");
-@@ -5482,6 +5506,7 @@ yy320:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_NO_DAY;
- 	}
-+#line 5510 "ext/date/lib/parse_date.c"
- yy323:
- 	yych = *++YYCURSOR;
- 	if (yych <= '9') {
-@@ -5704,6 +5729,7 @@ yy327:
- 	if ((yych = *YYCURSOR) <= '/') goto yy330;
- 	if (yych <= '9') goto yy331;
- yy330:
-+#line 1525 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("pgtextshort");
-@@ -5716,6 +5742,7 @@ yy330:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_PG_TEXT;
- 	}
-+#line 5746 "ext/date/lib/parse_date.c"
- yy331:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy330;
-@@ -6270,6 +6297,7 @@ yy356:
- 		if (yych <= 'z') goto yy167;
- 	}
- yy357:
-+#line 1583 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("ago");
- 		TIMELIB_INIT;
-@@ -6289,6 +6317,7 @@ yy357:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_AGO;
- 	}
-+#line 6321 "ext/date/lib/parse_date.c"
- yy358:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -8009,6 +8038,7 @@ yy417:
- yy418:
- 	++YYCURSOR;
- yy419:
-+#line 1286 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
- 		TIMELIB_INIT;
-@@ -8019,6 +8049,7 @@ yy419:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_DATE;
- 	}
-+#line 8053 "ext/date/lib/parse_date.c"
- yy420:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -8641,6 +8672,7 @@ yy439:
- 		}
- 	}
- yy440:
-+#line 1423 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("datenoyearrev");
- 		TIMELIB_INIT;
-@@ -8651,6 +8683,7 @@ yy440:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_TEXT;
- 	}
-+#line 8687 "ext/date/lib/parse_date.c"
- yy441:
- 	yyaccept = 9;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -8778,6 +8811,7 @@ yy450:
- 	}
- yy452:
- 	++YYCURSOR;
-+#line 1141 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
- 		TIMELIB_INIT;
-@@ -8793,6 +8827,7 @@ yy452:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_TIME12;
- 	}
-+#line 8831 "ext/date/lib/parse_date.c"
- yy454:
- 	yyaccept = 10;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -8803,6 +8838,7 @@ yy454:
- 		if (yych <= ':') goto yy457;
- 	}
- yy455:
-+#line 1178 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
-@@ -8827,6 +8863,7 @@ yy455:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_TIME24_WITH_ZONE;
- 	}
-+#line 8867 "ext/date/lib/parse_date.c"
- yy456:
- 	yyaccept = 10;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -9103,6 +9140,7 @@ yy485:
- 	}
- yy487:
- 	++YYCURSOR;
-+#line 1158 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("mssqltime");
- 		TIMELIB_INIT;
-@@ -9121,6 +9159,7 @@ yy487:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_TIME24_WITH_ZONE;
- 	}
-+#line 9163 "ext/date/lib/parse_date.c"
- yy489:
- 	yyaccept = 10;
- 	YYMARKER = ++YYCURSOR;
-@@ -9215,6 +9254,7 @@ yy498:
- 	if ((yych = *YYCURSOR) <= '/') goto yy499;
- 	if (yych <= '9') goto yy505;
- yy499:
-+#line 1340 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("datefull");
-@@ -9228,6 +9268,7 @@ yy499:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_FULL;
- 	}
-+#line 9272 "ext/date/lib/parse_date.c"
- yy500:
- 	yych = *++YYCURSOR;
- 	if (yych == 'M') goto yy501;
-@@ -9891,6 +9932,7 @@ yy569:
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
- 	++YYCURSOR;
-+#line 1355 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("pointed date YYYY");
- 		TIMELIB_INIT;
-@@ -9901,6 +9943,7 @@ yy569:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_FULL_POINTED;
- 	}
-+#line 9947 "ext/date/lib/parse_date.c"
- yy572:
- 	yyaccept = 10;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -9931,6 +9974,7 @@ yy575:
- 	if (yych <= '/') goto yy576;
- 	if (yych <= '9') goto yy569;
- yy576:
-+#line 1367 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("pointed date YY");
-@@ -9943,6 +9987,7 @@ yy576:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_FULL_POINTED;
- 	}
-+#line 9991 "ext/date/lib/parse_date.c"
- yy577:
- 	yyaccept = 10;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -10538,6 +10583,7 @@ yy620:
- 		}
- 	}
- yy621:
-+#line 1326 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("gnudateshort");
-@@ -10550,6 +10596,7 @@ yy621:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_DATE;
- 	}
-+#line 10600 "ext/date/lib/parse_date.c"
- yy622:
- 	yyaccept = 12;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -10645,6 +10692,7 @@ yy630:
- 		}
- 	}
- yy631:
-+#line 1270 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("americanshort | american");
-@@ -10659,6 +10707,7 @@ yy631:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_AMERICAN;
- 	}
-+#line 10711 "ext/date/lib/parse_date.c"
- yy632:
- 	yyaccept = 13;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -10857,6 +10906,7 @@ yy664:
- 	if (yych <= '9') goto yy667;
- 	if (yych <= ':') goto yy668;
- yy665:
-+#line 1553 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("clf");
-@@ -10876,6 +10926,7 @@ yy665:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_CLF;
- 	}
-+#line 10930 "ext/date/lib/parse_date.c"
- yy666:
- 	yych = *++YYCURSOR;
- 	if (yych <= '5') {
-@@ -11362,6 +11413,7 @@ yy727:
- 		if (yych <= 't') goto yy627;
- 	}
- yy728:
-+#line 1298 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("iso8601date2");
-@@ -11374,6 +11426,7 @@ yy728:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_DATE;
- 	}
-+#line 11430 "ext/date/lib/parse_date.c"
- yy729:
- 	yych = *++YYCURSOR;
- 	if (yych == 'C') goto yy730;
-@@ -11404,6 +11457,7 @@ yy734:
- 	if (yych >= '2') goto yy56;
- yy735:
- 	++YYCURSOR;
-+#line 1539 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("pgtextreverse");
-@@ -11416,6 +11470,7 @@ yy735:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_PG_TEXT;
- 	}
-+#line 11474 "ext/date/lib/parse_date.c"
- yy737:
- 	yych = *++YYCURSOR;
- 	if (yych == 'V') goto yy730;
-@@ -11568,6 +11623,7 @@ yy747:
- 		}
- 	}
- yy748:
-+#line 1574 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("year4");
- 		TIMELIB_INIT;
-@@ -11575,6 +11631,7 @@ yy748:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_CLF;
- 	}
-+#line 11635 "ext/date/lib/parse_date.c"
- yy749:
- 	yych = *++YYCURSOR;
- 	switch (yych) {
-@@ -11769,6 +11826,7 @@ yy757:
- 		if (yych <= 'X') goto yy848;
- 	}
- yy758:
-+#line 1395 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("datenodayrev");
-@@ -11781,6 +11839,7 @@ yy758:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_NO_DAY;
- 	}
-+#line 11843 "ext/date/lib/parse_date.c"
- yy759:
- 	yych = *++YYCURSOR;
- 	if (yych == 'I') goto yy892;
-@@ -11980,6 +12039,7 @@ yy778:
- 	if (yych <= '/') goto yy779;
- 	if (yych <= '7') goto yy781;
- yy779:
-+#line 1506 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_sll w, d;
- 		DEBUG_OUTPUT("isoweek");
-@@ -11997,12 +12057,14 @@ yy779:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_WEEK;
- 	}
-+#line 12061 "ext/date/lib/parse_date.c"
- yy780:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
- 	if (yych >= '8') goto yy56;
- yy781:
- 	++YYCURSOR;
-+#line 1487 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_sll w, d;
- 		DEBUG_OUTPUT("isoweekday");
-@@ -12020,6 +12082,7 @@ yy781:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_WEEK;
- 	}
-+#line 12086 "ext/date/lib/parse_date.c"
- yy783:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy60;
-@@ -12085,6 +12148,7 @@ yy785:
- 		}
- 	}
- yy786:
-+#line 1473 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("pgydotd");
-@@ -12097,6 +12161,7 @@ yy786:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_PG_YEARDAY;
- 	}
-+#line 12165 "ext/date/lib/parse_date.c"
- yy787:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy60;
-@@ -12178,6 +12243,7 @@ yy805:
- yy806:
- 	++YYCURSOR;
- yy807:
-+#line 1447 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
-@@ -12202,6 +12268,7 @@ yy807:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_XMLRPC_SOAP;
- 	}
-+#line 12272 "ext/date/lib/parse_date.c"
- yy808:
- 	yych = *++YYCURSOR;
- 	if (yych <= '2') {
-@@ -12490,6 +12557,7 @@ yy812:
- 		}
- 	}
- yy813:
-+#line 1435 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("datenocolon");
- 		TIMELIB_INIT;
-@@ -12500,6 +12568,7 @@ yy813:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_DATE_NOCOLON;
- 	}
-+#line 12572 "ext/date/lib/parse_date.c"
- yy814:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
-@@ -13293,6 +13362,7 @@ yy937:
- 	if (yych <= '/') goto yy938;
- 	if (yych <= '9') goto yy960;
- yy938:
-+#line 1312 "ext/date/lib/parse_date.re"
- 	{
- 		int length = 0;
- 		DEBUG_OUTPUT("gnudateshorter");
-@@ -13305,6 +13375,7 @@ yy938:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_DATE;
- 	}
-+#line 13379 "ext/date/lib/parse_date.c"
- yy939:
- 	yyaccept = 21;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -14303,6 +14374,7 @@ yy1030:
- 		}
- 	}
- yy1032:
-+#line 1204 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("gnunocolon");
- 		TIMELIB_INIT;
-@@ -14324,6 +14396,7 @@ yy1032:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_GNU_NOCOLON;
- 	}
-+#line 14400 "ext/date/lib/parse_date.c"
- yy1033:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy60;
-@@ -14413,6 +14486,7 @@ yy1039:
- 		}
- 	}
- yy1040:
-+#line 1250 "ext/date/lib/parse_date.re"
- 	{
- 		int tz_not_found;
- 		DEBUG_OUTPUT("iso8601nocolon");
-@@ -14431,6 +14505,7 @@ yy1040:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_ISO_NOCOLON;
- 	}
-+#line 14509 "ext/date/lib/parse_date.c"
- yy1041:
- 	yyaccept = 24;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -15362,6 +15437,7 @@ yy1083:
- 		}
- 	}
- yy1084:
-+#line 1646 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_sll i;
- 		int         behavior = 0;
-@@ -15377,6 +15453,7 @@ yy1084:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
-+#line 15457 "ext/date/lib/parse_date.c"
- yy1085:
- 	++YYCURSOR;
- 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-@@ -15418,6 +15495,7 @@ yy1091:
- 	if (yych != 'f') goto yy56;
- yy1092:
- 	++YYCURSOR;
-+#line 1119 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_sll i;
- 		int         behavior = 0;
-@@ -15438,6 +15516,7 @@ yy1092:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_WEEK_DAY_OF_MONTH;
- 	}
-+#line 15520 "ext/date/lib/parse_date.c"
- yy1094:
- 	yyaccept = 25;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -15530,6 +15609,7 @@ yy1107:
- 		}
- 	}
- yy1108:
-+#line 1622 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_sll i;
- 		int         behavior = 0;
-@@ -15552,6 +15632,7 @@ yy1108:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
-+#line 15636 "ext/date/lib/parse_date.c"
- yy1109:
- 	yych = *++YYCURSOR;
- 	goto yy1084;
-@@ -18206,10 +18287,25 @@ yy1281:
- yy1283:
- 	yyaccept = 27;
- 	yych = *(YYMARKER = ++YYCURSOR);
--	if (yych <= '/') goto yy1287;
--	if (yych <= '9') goto yy1286;
--	goto yy1287;
-+	if (yych <= '@') {
-+		if (yych <= 0x1F) {
-+			if (yych == '\t') goto yy1287;
-+		} else {
-+			if (yych <= ' ') goto yy1287;
-+			if (yych <= '/') goto yy1284;
-+			if (yych <= '9') goto yy1286;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych <= 'A') goto yy1289;
-+			if (yych == 'P') goto yy1289;
-+		} else {
-+			if (yych <= 'a') goto yy1289;
-+			if (yych == 'p') goto yy1289;
-+		}
-+	}
- yy1284:
-+#line 1096 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("backof | frontof");
- 		TIMELIB_INIT;
-@@ -18231,66 +18327,104 @@ yy1284:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_LF_DAY_OF_MONTH;
- 	}
-+#line 18331 "ext/date/lib/parse_date.c"
- yy1285:
- 	yyaccept = 27;
- 	yych = *(YYMARKER = ++YYCURSOR);
--	if (yych <= '/') goto yy1287;
--	if (yych >= '5') goto yy1287;
-+	if (yych <= '@') {
-+		if (yych <= 0x1F) {
-+			if (yych == '\t') goto yy1287;
-+			goto yy1284;
-+		} else {
-+			if (yych <= ' ') goto yy1287;
-+			if (yych <= '/') goto yy1284;
-+			if (yych >= '5') goto yy1284;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych <= 'A') goto yy1289;
-+			if (yych == 'P') goto yy1289;
-+			goto yy1284;
-+		} else {
-+			if (yych <= 'a') goto yy1289;
-+			if (yych == 'p') goto yy1289;
-+			goto yy1284;
-+		}
-+	}
- yy1286:
- 	yyaccept = 27;
--	YYMARKER = ++YYCURSOR;
-+	yych = *(YYMARKER = ++YYCURSOR);
-+	if (yych <= 'A') {
-+		if (yych <= 0x1F) {
-+			if (yych != '\t') goto yy1284;
-+		} else {
-+			if (yych <= ' ') goto yy1287;
-+			if (yych <= '@') goto yy1284;
-+			goto yy1289;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych == 'P') goto yy1289;
-+			goto yy1284;
-+		} else {
-+			if (yych <= 'a') goto yy1289;
-+			if (yych == 'p') goto yy1289;
-+			goto yy1284;
-+		}
-+	}
-+yy1287:
-+	++YYCURSOR;
- 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- 	yych = *YYCURSOR;
--yy1287:
- 	if (yych <= 'A') {
- 		if (yych <= 0x1F) {
--			if (yych == '\t') goto yy1286;
--			goto yy1284;
-+			if (yych == '\t') goto yy1287;
-+			goto yy56;
- 		} else {
--			if (yych <= ' ') goto yy1286;
--			if (yych <= '@') goto yy1284;
-+			if (yych <= ' ') goto yy1287;
-+			if (yych <= '@') goto yy56;
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych != 'P') goto yy1284;
-+			if (yych != 'P') goto yy56;
- 		} else {
--			if (yych <= 'a') goto yy1288;
--			if (yych != 'p') goto yy1284;
-+			if (yych <= 'a') goto yy1289;
-+			if (yych != 'p') goto yy56;
- 		}
- 	}
--yy1288:
-+yy1289:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'L') {
- 		if (yych != '.') goto yy56;
- 	} else {
--		if (yych <= 'M') goto yy1290;
--		if (yych == 'm') goto yy1290;
-+		if (yych <= 'M') goto yy1291;
-+		if (yych == 'm') goto yy1291;
- 		goto yy56;
- 	}
- 	yych = *++YYCURSOR;
--	if (yych == 'M') goto yy1290;
-+	if (yych == 'M') goto yy1291;
- 	if (yych != 'm') goto yy56;
--yy1290:
-+yy1291:
- 	yych = *++YYCURSOR;
- 	if (yych <= 0x1F) {
--		if (yych <= 0x00) goto yy1292;
--		if (yych == '\t') goto yy1292;
-+		if (yych <= 0x00) goto yy1293;
-+		if (yych == '\t') goto yy1293;
- 		goto yy56;
- 	} else {
--		if (yych <= ' ') goto yy1292;
-+		if (yych <= ' ') goto yy1293;
- 		if (yych != '.') goto yy56;
- 	}
- 	yych = *++YYCURSOR;
- 	if (yych <= '\t') {
--		if (yych <= 0x00) goto yy1292;
-+		if (yych <= 0x00) goto yy1293;
- 		if (yych <= 0x08) goto yy56;
- 	} else {
- 		if (yych != ' ') goto yy56;
- 	}
--yy1292:
-+yy1293:
- 	yych = *++YYCURSOR;
- 	goto yy1284;
--yy1293:
-+yy1294:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'B') {
-@@ -18314,13 +18448,13 @@ yy1293:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'c') goto yy1294;
-+				if (yych <= 'c') goto yy1295;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1294:
-+yy1295:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'J') {
-@@ -18344,13 +18478,13 @@ yy1294:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'k') goto yy1295;
-+				if (yych <= 'k') goto yy1296;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1295:
-+yy1296:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '.') {
-@@ -18375,7 +18509,7 @@ yy1295:
- 			goto yy3;
- 		}
- 	}
--yy1296:
-+yy1297:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= ')') {
-@@ -18391,12 +18525,12 @@ yy1296:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 's') goto yy1297;
-+			if (yych <= 's') goto yy1298;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1297:
-+yy1298:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -18412,12 +18546,12 @@ yy1297:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1298;
-+			if (yych <= 't') goto yy1299;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1298:
-+yy1299:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '(') {
-@@ -18438,19 +18572,19 @@ yy1298:
- 			goto yy3;
- 		}
- 	}
--yy1299:
-+yy1300:
- 	yych = *++YYCURSOR;
--	if (yych == 'D') goto yy1300;
-+	if (yych == 'D') goto yy1301;
- 	if (yych != 'd') goto yy1070;
--yy1300:
-+yy1301:
- 	yych = *++YYCURSOR;
--	if (yych == 'A') goto yy1301;
-+	if (yych == 'A') goto yy1302;
- 	if (yych != 'a') goto yy56;
--yy1301:
-+yy1302:
- 	yych = *++YYCURSOR;
--	if (yych == 'Y') goto yy1302;
-+	if (yych == 'Y') goto yy1303;
- 	if (yych != 'y') goto yy56;
--yy1302:
-+yy1303:
- 	yyaccept = 25;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -18461,14 +18595,15 @@ yy1302:
- 		goto yy1084;
- 	}
- 	yych = *++YYCURSOR;
--	if (yych == 'O') goto yy1304;
-+	if (yych == 'O') goto yy1305;
- 	if (yych != 'o') goto yy56;
--yy1304:
-+yy1305:
- 	yych = *++YYCURSOR;
--	if (yych == 'F') goto yy1305;
-+	if (yych == 'F') goto yy1306;
- 	if (yych != 'f') goto yy56;
--yy1305:
-+yy1306:
- 	++YYCURSOR;
-+#line 1079 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("firstdayof | lastdayof");
- 		TIMELIB_INIT;
-@@ -18484,7 +18619,8 @@ yy1305:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_LF_DAY_OF_MONTH;
- 	}
--yy1307:
-+#line 18623 "ext/date/lib/parse_date.c"
-+yy1308:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -18499,7 +18635,7 @@ yy1307:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'S') goto yy1297;
-+			if (yych <= 'S') goto yy1298;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -18508,13 +18644,13 @@ yy1307:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 's') goto yy1308;
-+				if (yych <= 's') goto yy1309;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1308:
-+yy1309:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -18529,7 +18665,7 @@ yy1308:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1298;
-+			if (yych <= 'T') goto yy1299;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -18538,20 +18674,20 @@ yy1308:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1309;
-+				if (yych <= 't') goto yy1310;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1309:
-+yy1310:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '-') {
- 		if (yych <= ' ') {
- 			if (yych == '\t') goto yy1069;
- 			if (yych <= 0x1F) goto yy3;
--			goto yy1299;
-+			goto yy1300;
- 		} else {
- 			if (yych == ')') goto yy164;
- 			if (yych <= ',') goto yy3;
-@@ -18573,7 +18709,7 @@ yy1309:
- 			}
- 		}
- 	}
--yy1310:
-+yy1311:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'B') {
- 		if (yych <= ')') {
-@@ -18582,7 +18718,7 @@ yy1310:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'A') goto yy166;
--			goto yy1346;
-+			goto yy1348;
- 		}
- 	} else {
- 		if (yych <= 'a') {
-@@ -18590,35 +18726,35 @@ yy1310:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'b') goto yy1346;
-+			if (yych <= 'b') goto yy1348;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1311:
-+yy1312:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= '@') {
- 			if (yych == ')') goto yy164;
- 			goto yy3;
- 		} else {
--			if (yych == 'F') goto yy1336;
-+			if (yych == 'F') goto yy1338;
- 			if (yych <= 'Q') goto yy166;
--			goto yy1335;
-+			goto yy1337;
- 		}
- 	} else {
- 		if (yych <= 'f') {
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'e') goto yy166;
--			goto yy1336;
-+			goto yy1338;
- 		} else {
--			if (yych == 'r') goto yy1335;
-+			if (yych == 'r') goto yy1337;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1312:
-+yy1313:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'U') {
- 		if (yych <= ')') {
-@@ -18627,7 +18763,7 @@ yy1312:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'T') goto yy166;
--			goto yy1332;
-+			goto yy1334;
- 		}
- 	} else {
- 		if (yych <= 't') {
-@@ -18635,19 +18771,19 @@ yy1312:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'u') goto yy1332;
-+			if (yych <= 'u') goto yy1334;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1313:
-+yy1314:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'O') {
- 		if (yych <= '@') {
- 			if (yych == ')') goto yy164;
- 			goto yy3;
- 		} else {
--			if (yych == 'I') goto yy1315;
-+			if (yych == 'I') goto yy1316;
- 			if (yych <= 'N') goto yy166;
- 		}
- 	} else {
-@@ -18655,14 +18791,14 @@ yy1313:
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'h') goto yy166;
--			goto yy1315;
-+			goto yy1316;
- 		} else {
--			if (yych == 'o') goto yy1314;
-+			if (yych == 'o') goto yy1315;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1314:
-+yy1315:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -18671,7 +18807,7 @@ yy1314:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'M') goto yy167;
--			goto yy1318;
-+			goto yy1319;
- 		}
- 	} else {
- 		if (yych <= 'm') {
-@@ -18679,12 +18815,12 @@ yy1314:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'n') goto yy1318;
-+			if (yych <= 'n') goto yy1319;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1315:
-+yy1316:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -18700,12 +18836,12 @@ yy1315:
- 			if (yych <= '`') goto yy191;
- 			goto yy167;
- 		} else {
--			if (yych <= 'd') goto yy1316;
-+			if (yych <= 'd') goto yy1317;
- 			if (yych <= 'z') goto yy167;
- 			goto yy191;
- 		}
- 	}
--yy1316:
-+yy1317:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
-@@ -18715,12 +18851,12 @@ yy1316:
- 			if (yych <= 'Z') goto yy168;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1317;
-+			if (yych <= 'a') goto yy1318;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1317:
-+yy1318:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'Y') {
- 		if (yych <= ')') {
-@@ -18742,7 +18878,7 @@ yy1317:
- 			goto yy3;
- 		}
- 	}
--yy1318:
-+yy1319:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -18758,16 +18894,16 @@ yy1318:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 't') goto yy1319;
-+			if (yych <= 't') goto yy1320;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1319:
-+yy1320:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= ')') {
--		if (yych == ' ') goto yy1320;
-+		if (yych == ' ') goto yy1321;
- 		if (yych <= '(') goto yy3;
- 		goto yy164;
- 	} else {
-@@ -18780,88 +18916,143 @@ yy1319:
- 			goto yy3;
- 		}
- 	}
--yy1320:
-+yy1321:
- 	yych = *++YYCURSOR;
--	if (yych == 'O') goto yy1321;
-+	if (yych == 'O') goto yy1322;
- 	if (yych != 'o') goto yy56;
--yy1321:
-+yy1322:
- 	yych = *++YYCURSOR;
--	if (yych == 'F') goto yy1322;
-+	if (yych == 'F') goto yy1323;
- 	if (yych != 'f') goto yy56;
--yy1322:
-+yy1323:
- 	yych = *++YYCURSOR;
- 	if (yych != ' ') goto yy56;
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
--	if (yych <= '1') goto yy1324;
--	if (yych <= '2') goto yy1325;
--	if (yych <= '9') goto yy1326;
-+	if (yych <= '1') goto yy1325;
-+	if (yych <= '2') goto yy1326;
-+	if (yych <= '9') goto yy1327;
- 	goto yy56;
--yy1324:
--	yyaccept = 27;
--	yych = *(YYMARKER = ++YYCURSOR);
--	if (yych <= '/') goto yy1327;
--	if (yych <= '9') goto yy1326;
--	goto yy1327;
- yy1325:
- 	yyaccept = 27;
- 	yych = *(YYMARKER = ++YYCURSOR);
--	if (yych <= '/') goto yy1327;
--	if (yych >= '5') goto yy1327;
-+	if (yych <= '@') {
-+		if (yych <= 0x1F) {
-+			if (yych == '\t') goto yy1328;
-+			goto yy1284;
-+		} else {
-+			if (yych <= ' ') goto yy1328;
-+			if (yych <= '/') goto yy1284;
-+			if (yych <= '9') goto yy1327;
-+			goto yy1284;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych <= 'A') goto yy1330;
-+			if (yych == 'P') goto yy1330;
-+			goto yy1284;
-+		} else {
-+			if (yych <= 'a') goto yy1330;
-+			if (yych == 'p') goto yy1330;
-+			goto yy1284;
-+		}
-+	}
- yy1326:
- 	yyaccept = 27;
--	YYMARKER = ++YYCURSOR;
--	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
--	yych = *YYCURSOR;
-+	yych = *(YYMARKER = ++YYCURSOR);
-+	if (yych <= '@') {
-+		if (yych <= 0x1F) {
-+			if (yych == '\t') goto yy1328;
-+			goto yy1284;
-+		} else {
-+			if (yych <= ' ') goto yy1328;
-+			if (yych <= '/') goto yy1284;
-+			if (yych >= '5') goto yy1284;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych <= 'A') goto yy1330;
-+			if (yych == 'P') goto yy1330;
-+			goto yy1284;
-+		} else {
-+			if (yych <= 'a') goto yy1330;
-+			if (yych == 'p') goto yy1330;
-+			goto yy1284;
-+		}
-+	}
- yy1327:
-+	yyaccept = 27;
-+	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'A') {
- 		if (yych <= 0x1F) {
--			if (yych == '\t') goto yy1326;
--			goto yy1284;
-+			if (yych != '\t') goto yy1284;
- 		} else {
--			if (yych <= ' ') goto yy1326;
-+			if (yych <= ' ') goto yy1328;
- 			if (yych <= '@') goto yy1284;
-+			goto yy1330;
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych != 'P') goto yy1284;
-+			if (yych == 'P') goto yy1330;
-+			goto yy1284;
- 		} else {
--			if (yych <= 'a') goto yy1328;
--			if (yych != 'p') goto yy1284;
-+			if (yych <= 'a') goto yy1330;
-+			if (yych == 'p') goto yy1330;
-+			goto yy1284;
- 		}
- 	}
- yy1328:
-+	++YYCURSOR;
-+	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-+	yych = *YYCURSOR;
-+	if (yych <= 'A') {
-+		if (yych <= 0x1F) {
-+			if (yych == '\t') goto yy1328;
-+			goto yy56;
-+		} else {
-+			if (yych <= ' ') goto yy1328;
-+			if (yych <= '@') goto yy56;
-+		}
-+	} else {
-+		if (yych <= '`') {
-+			if (yych != 'P') goto yy56;
-+		} else {
-+			if (yych <= 'a') goto yy1330;
-+			if (yych != 'p') goto yy56;
-+		}
-+	}
-+yy1330:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'L') {
- 		if (yych != '.') goto yy56;
- 	} else {
--		if (yych <= 'M') goto yy1330;
--		if (yych == 'm') goto yy1330;
-+		if (yych <= 'M') goto yy1332;
-+		if (yych == 'm') goto yy1332;
- 		goto yy56;
- 	}
- 	yych = *++YYCURSOR;
--	if (yych == 'M') goto yy1330;
-+	if (yych == 'M') goto yy1332;
- 	if (yych != 'm') goto yy56;
--yy1330:
-+yy1332:
- 	yych = *++YYCURSOR;
- 	if (yych <= 0x1F) {
--		if (yych <= 0x00) goto yy1292;
--		if (yych == '\t') goto yy1292;
-+		if (yych <= 0x00) goto yy1293;
-+		if (yych == '\t') goto yy1293;
- 		goto yy56;
- 	} else {
--		if (yych <= ' ') goto yy1292;
-+		if (yych <= ' ') goto yy1293;
- 		if (yych != '.') goto yy56;
- 	}
- 	yych = *++YYCURSOR;
- 	if (yych <= '\t') {
--		if (yych <= 0x00) goto yy1292;
-+		if (yych <= 0x00) goto yy1293;
- 		if (yych <= 0x08) goto yy56;
--		goto yy1292;
-+		goto yy1293;
- 	} else {
--		if (yych == ' ') goto yy1292;
-+		if (yych == ' ') goto yy1293;
- 		goto yy56;
- 	}
--yy1332:
-+yy1334:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= ')') {
-@@ -18877,12 +19068,12 @@ yy1332:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'r') goto yy1333;
-+			if (yych <= 'r') goto yy1335;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1333:
-+yy1335:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -18898,12 +19089,12 @@ yy1333:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 't') goto yy1334;
-+			if (yych <= 't') goto yy1336;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1334:
-+yy1336:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
- 		if (yych <= ')') {
-@@ -18925,7 +19116,7 @@ yy1334:
- 			goto yy3;
- 		}
- 	}
--yy1335:
-+yy1337:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= ')') {
-@@ -18934,7 +19125,7 @@ yy1335:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'R') goto yy167;
--			goto yy1338;
-+			goto yy1340;
- 		}
- 	} else {
- 		if (yych <= 'r') {
-@@ -18942,12 +19133,12 @@ yy1335:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 's') goto yy1338;
-+			if (yych <= 's') goto yy1340;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1336:
-+yy1338:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -18963,12 +19154,12 @@ yy1336:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1337;
-+			if (yych <= 't') goto yy1339;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1337:
-+yy1339:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
- 		if (yych <= ')') {
-@@ -18990,7 +19181,7 @@ yy1337:
- 			goto yy3;
- 		}
- 	}
--yy1338:
-+yy1340:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -19006,12 +19197,12 @@ yy1338:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 't') goto yy1339;
-+			if (yych <= 't') goto yy1341;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1339:
-+yy1341:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '(') {
-@@ -19032,19 +19223,19 @@ yy1339:
- 			goto yy3;
- 		}
- 	}
--yy1340:
-+yy1342:
- 	yych = *++YYCURSOR;
--	if (yych == 'D') goto yy1341;
-+	if (yych == 'D') goto yy1343;
- 	if (yych != 'd') goto yy1197;
--yy1341:
-+yy1343:
- 	yych = *++YYCURSOR;
--	if (yych == 'A') goto yy1342;
-+	if (yych == 'A') goto yy1344;
- 	if (yych != 'a') goto yy56;
--yy1342:
-+yy1344:
- 	yych = *++YYCURSOR;
--	if (yych == 'Y') goto yy1343;
-+	if (yych == 'Y') goto yy1345;
- 	if (yych != 'y') goto yy56;
--yy1343:
-+yy1345:
- 	yyaccept = 25;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -19055,14 +19246,14 @@ yy1343:
- 		goto yy1084;
- 	}
- 	yych = *++YYCURSOR;
--	if (yych == 'O') goto yy1345;
-+	if (yych == 'O') goto yy1347;
- 	if (yych != 'o') goto yy56;
--yy1345:
-+yy1347:
- 	yych = *++YYCURSOR;
--	if (yych == 'F') goto yy1305;
--	if (yych == 'f') goto yy1305;
-+	if (yych == 'F') goto yy1306;
-+	if (yych == 'f') goto yy1306;
- 	goto yy56;
--yy1346:
-+yy1348:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
-@@ -19097,13 +19288,13 @@ yy1346:
- 				if (yych <= '`') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'r') goto yy1347;
-+				if (yych <= 'r') goto yy1349;
- 				if (yych <= 'z') goto yy167;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1347:
-+yy1349:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'U') {
- 		if (yych <= ')') {
-@@ -19119,12 +19310,12 @@ yy1347:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'u') goto yy1348;
-+			if (yych <= 'u') goto yy1350;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1348:
-+yy1350:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
-@@ -19134,27 +19325,27 @@ yy1348:
- 			if (yych <= 'Z') goto yy169;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1349;
-+			if (yych <= 'a') goto yy1351;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1349:
-+yy1351:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'R') goto yy1350;
-+		if (yych <= 'R') goto yy1352;
- 		if (yych != 'r') goto yy3;
- 	}
--yy1350:
-+yy1352:
- 	yych = *++YYCURSOR;
- 	if (yych == 'Y') goto yy229;
- 	if (yych == 'y') goto yy229;
- 	goto yy56;
--yy1351:
-+yy1353:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'A') {
-@@ -19169,7 +19360,7 @@ yy1351:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'B') goto yy1346;
-+			if (yych <= 'B') goto yy1348;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19178,13 +19369,13 @@ yy1351:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'b') goto yy1369;
-+				if (yych <= 'b') goto yy1371;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1352:
-+yy1354:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -19201,14 +19392,14 @@ yy1352:
- 				if (yych <= '/') goto yy172;
- 				goto yy3;
- 			} else {
--				if (yych == 'F') goto yy1336;
-+				if (yych == 'F') goto yy1338;
- 				goto yy166;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'R') goto yy1335;
-+				if (yych <= 'R') goto yy1337;
- 				goto yy166;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -19216,16 +19407,16 @@ yy1352:
- 			}
- 		} else {
- 			if (yych <= 'q') {
--				if (yych == 'f') goto yy1365;
-+				if (yych == 'f') goto yy1367;
- 				goto yy171;
- 			} else {
--				if (yych <= 'r') goto yy1364;
-+				if (yych <= 'r') goto yy1366;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1353:
-+yy1355:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'T') {
-@@ -19240,7 +19431,7 @@ yy1353:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'U') goto yy1332;
-+			if (yych <= 'U') goto yy1334;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19249,13 +19440,13 @@ yy1353:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'u') goto yy1361;
-+				if (yych <= 'u') goto yy1363;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1354:
-+yy1356:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'N') {
-@@ -19272,14 +19463,14 @@ yy1354:
- 				if (yych <= '/') goto yy172;
- 				goto yy3;
- 			} else {
--				if (yych == 'I') goto yy1315;
-+				if (yych == 'I') goto yy1316;
- 				goto yy166;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'O') goto yy1314;
-+				if (yych <= 'O') goto yy1315;
- 				goto yy166;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -19287,16 +19478,16 @@ yy1354:
- 			}
- 		} else {
- 			if (yych <= 'n') {
--				if (yych == 'i') goto yy1356;
-+				if (yych == 'i') goto yy1358;
- 				goto yy171;
- 			} else {
--				if (yych <= 'o') goto yy1355;
-+				if (yych <= 'o') goto yy1357;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1355:
-+yy1357:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -19311,7 +19502,7 @@ yy1355:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1318;
-+			if (yych <= 'N') goto yy1319;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19320,13 +19511,13 @@ yy1355:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'n') goto yy1359;
-+				if (yych <= 'n') goto yy1361;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1356:
-+yy1358:
- 	yyaccept = 4;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -19341,7 +19532,7 @@ yy1356:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'D') goto yy1316;
-+			if (yych <= 'D') goto yy1317;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy191;
- 			goto yy172;
-@@ -19350,13 +19541,13 @@ yy1356:
- 				if (yych <= '`') goto yy191;
- 				goto yy175;
- 			} else {
--				if (yych <= 'd') goto yy1357;
-+				if (yych <= 'd') goto yy1359;
- 				if (yych <= 'z') goto yy175;
- 				goto yy191;
- 			}
- 		}
- 	}
--yy1357:
-+yy1359:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -19370,18 +19561,18 @@ yy1357:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1317;
-+			if (yych <= 'A') goto yy1318;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1358;
-+			if (yych <= 'a') goto yy1360;
- 			if (yych <= 'z') goto yy176;
- 			goto yy3;
- 		}
- 	}
--yy1358:
-+yy1360:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'X') {
-@@ -19411,7 +19602,7 @@ yy1358:
- 			}
- 		}
- 	}
--yy1359:
-+yy1361:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -19426,7 +19617,7 @@ yy1359:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1319;
-+			if (yych <= 'T') goto yy1320;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19435,18 +19626,18 @@ yy1359:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 't') goto yy1360;
-+				if (yych <= 't') goto yy1362;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1360:
-+yy1362:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '.') {
- 		if (yych <= '(') {
--			if (yych == ' ') goto yy1320;
-+			if (yych == ' ') goto yy1321;
- 			goto yy3;
- 		} else {
- 			if (yych <= ')') goto yy164;
-@@ -19466,7 +19657,7 @@ yy1360:
- 			goto yy3;
- 		}
- 	}
--yy1361:
-+yy1363:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -19481,7 +19672,7 @@ yy1361:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'R') goto yy1333;
-+			if (yych <= 'R') goto yy1335;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19490,13 +19681,13 @@ yy1361:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'r') goto yy1362;
-+				if (yych <= 'r') goto yy1364;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1362:
-+yy1364:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -19511,7 +19702,7 @@ yy1362:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1334;
-+			if (yych <= 'T') goto yy1336;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19520,13 +19711,13 @@ yy1362:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 't') goto yy1363;
-+				if (yych <= 't') goto yy1365;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1363:
-+yy1365:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -19556,7 +19747,7 @@ yy1363:
- 			}
- 		}
- 	}
--yy1364:
-+yy1366:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -19571,7 +19762,7 @@ yy1364:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'S') goto yy1338;
-+			if (yych <= 'S') goto yy1340;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19580,13 +19771,13 @@ yy1364:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 's') goto yy1367;
-+				if (yych <= 's') goto yy1369;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1365:
-+yy1367:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -19601,7 +19792,7 @@ yy1365:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1337;
-+			if (yych <= 'T') goto yy1339;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19610,13 +19801,13 @@ yy1365:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1366;
-+				if (yych <= 't') goto yy1368;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1366:
-+yy1368:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -19646,7 +19837,7 @@ yy1366:
- 			}
- 		}
- 	}
--yy1367:
-+yy1369:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -19661,7 +19852,7 @@ yy1367:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1339;
-+			if (yych <= 'T') goto yy1341;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19670,20 +19861,20 @@ yy1367:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 't') goto yy1368;
-+				if (yych <= 't') goto yy1370;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1368:
-+yy1370:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '-') {
- 		if (yych <= ' ') {
- 			if (yych == '\t') goto yy1196;
- 			if (yych <= 0x1F) goto yy3;
--			goto yy1340;
-+			goto yy1342;
- 		} else {
- 			if (yych == ')') goto yy164;
- 			if (yych <= ',') goto yy3;
-@@ -19705,7 +19896,7 @@ yy1368:
- 			}
- 		}
- 	}
--yy1369:
-+yy1371:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '9') {
-@@ -19733,7 +19924,7 @@ yy1369:
- 				if (yych <= '@') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'R') goto yy1347;
-+				if (yych <= 'R') goto yy1349;
- 				if (yych <= 'Z') goto yy167;
- 				goto yy218;
- 			}
-@@ -19743,13 +19934,13 @@ yy1369:
- 				if (yych <= '`') goto yy218;
- 				goto yy175;
- 			} else {
--				if (yych <= 'r') goto yy1370;
-+				if (yych <= 'r') goto yy1372;
- 				if (yych <= 'z') goto yy175;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1370:
-+yy1372:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'T') {
-@@ -19764,7 +19955,7 @@ yy1370:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'U') goto yy1348;
-+			if (yych <= 'U') goto yy1350;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -19773,13 +19964,13 @@ yy1370:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'u') goto yy1371;
-+				if (yych <= 'u') goto yy1373;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1371:
-+yy1373:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -19793,18 +19984,18 @@ yy1371:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1349;
-+			if (yych <= 'A') goto yy1351;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1372;
-+			if (yych <= 'a') goto yy1374;
- 			if (yych <= 'z') goto yy177;
- 			goto yy3;
- 		}
- 	}
--yy1372:
-+yy1374:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -19818,33 +20009,34 @@ yy1372:
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych <= 'R') goto yy1350;
-+			if (yych <= 'R') goto yy1352;
- 			if (yych == '_') goto yy172;
- 			goto yy3;
- 		} else {
--			if (yych == 'r') goto yy1373;
-+			if (yych == 'r') goto yy1375;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1373:
-+yy1375:
- 	yych = *++YYCURSOR;
- 	if (yych == 'Y') goto yy229;
- 	if (yych == 'y') goto yy341;
- 	goto yy179;
--yy1374:
-+yy1376:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
--yy1375:
-+yy1377:
- 	yyaccept = 28;
- 	YYMARKER = ++YYCURSOR;
- 	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
- 	yych = *YYCURSOR;
--	if (yych == '.') goto yy1378;
--	if (yych <= '/') goto yy1377;
--	if (yych <= '9') goto yy1375;
--yy1377:
-+	if (yych == '.') goto yy1380;
-+	if (yych <= '/') goto yy1379;
-+	if (yych <= '9') goto yy1377;
-+yy1379:
-+#line 1025 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_ull i;
- 
-@@ -19869,7 +20061,8 @@ yy1377:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1378:
-+#line 20065 "ext/date/lib/parse_date.c"
-+yy1380:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
-@@ -19889,6 +20082,7 @@ yy1378:
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
- 	++YYCURSOR;
-+#line 1051 "ext/date/lib/parse_date.re"
- 	{
- 		timelib_ull i, ms;
- 
-@@ -19915,7 +20109,8 @@ yy1378:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1386:
-+#line 20113 "ext/date/lib/parse_date.c"
-+yy1388:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -19924,7 +20119,7 @@ yy1386:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'M') goto yy166;
--			goto yy1427;
-+			goto yy1429;
- 		}
- 	} else {
- 		if (yych <= 'm') {
-@@ -19932,58 +20127,58 @@ yy1386:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'n') goto yy1427;
-+			if (yych <= 'n') goto yy1429;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1387:
-+yy1389:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'U') {
- 		if (yych <= '@') {
- 			if (yych == ')') goto yy164;
- 			goto yy3;
- 		} else {
--			if (yych == 'I') goto yy1419;
-+			if (yych == 'I') goto yy1421;
- 			if (yych <= 'T') goto yy166;
--			goto yy1420;
-+			goto yy1422;
- 		}
- 	} else {
- 		if (yych <= 'i') {
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'h') goto yy166;
--			goto yy1419;
-+			goto yy1421;
- 		} else {
--			if (yych == 'u') goto yy1420;
-+			if (yych == 'u') goto yy1422;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1388:
-+yy1390:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'M') {
- 		if (yych <= '@') {
- 			if (yych == ')') goto yy164;
- 			goto yy3;
- 		} else {
--			if (yych == 'D') goto yy1408;
-+			if (yych == 'D') goto yy1410;
- 			if (yych <= 'L') goto yy166;
--			goto yy1409;
-+			goto yy1411;
- 		}
- 	} else {
- 		if (yych <= 'd') {
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'c') goto yy166;
--			goto yy1408;
-+			goto yy1410;
- 		} else {
--			if (yych == 'm') goto yy1409;
-+			if (yych == 'm') goto yy1411;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1389:
-+yy1391:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'E') {
- 		if (yych <= ')') {
-@@ -19992,7 +20187,7 @@ yy1389:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'D') goto yy166;
--			goto yy1404;
-+			goto yy1406;
- 		}
- 	} else {
- 		if (yych <= 'd') {
-@@ -20000,12 +20195,12 @@ yy1389:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'e') goto yy1404;
-+			if (yych <= 'e') goto yy1406;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1390:
-+yy1392:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'E') {
- 		if (yych <= ')') {
-@@ -20014,7 +20209,7 @@ yy1390:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'D') goto yy166;
--			goto yy1400;
-+			goto yy1402;
- 		}
- 	} else {
- 		if (yych <= 'd') {
-@@ -20022,68 +20217,68 @@ yy1390:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'e') goto yy1400;
-+			if (yych <= 'e') goto yy1402;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1391:
-+yy1393:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') {
- 		if (yych == '.') goto yy1029;
- 		goto yy56;
- 	} else {
--		if (yych <= '9') goto yy1394;
-+		if (yych <= '9') goto yy1396;
- 		if (yych <= ':') goto yy1029;
- 		goto yy56;
- 	}
--yy1392:
-+yy1394:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') {
- 		if (yych == '.') goto yy1029;
- 		goto yy56;
- 	} else {
--		if (yych <= '4') goto yy1394;
-+		if (yych <= '4') goto yy1396;
- 		if (yych == ':') goto yy1029;
- 		goto yy56;
- 	}
--yy1393:
-+yy1395:
- 	yych = *++YYCURSOR;
- 	if (yych == '.') goto yy1029;
- 	if (yych == ':') goto yy1029;
- 	goto yy56;
--yy1394:
-+yy1396:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') {
- 		if (yych == '.') goto yy1029;
- 		goto yy56;
- 	} else {
--		if (yych <= '5') goto yy1395;
-+		if (yych <= '5') goto yy1397;
- 		if (yych == ':') goto yy1029;
- 		goto yy56;
- 	}
--yy1395:
-+yy1397:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
- 	if (yych >= ':') goto yy56;
- 	yyaccept = 23;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') goto yy1032;
--	if (yych <= '5') goto yy1397;
--	if (yych <= '6') goto yy1398;
-+	if (yych <= '5') goto yy1399;
-+	if (yych <= '6') goto yy1400;
- 	goto yy1032;
--yy1397:
-+yy1399:
- 	yych = *++YYCURSOR;
- 	if (yych <= '/') goto yy56;
--	if (yych <= '9') goto yy1399;
-+	if (yych <= '9') goto yy1401;
- 	goto yy56;
--yy1398:
-+yy1400:
- 	yych = *++YYCURSOR;
- 	if (yych != '0') goto yy56;
--yy1399:
-+yy1401:
- 	yych = *++YYCURSOR;
- 	goto yy1040;
--yy1400:
-+yy1402:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'L') {
- 		if (yych <= ')') {
-@@ -20099,12 +20294,12 @@ yy1400:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'l') goto yy1401;
-+			if (yych <= 'l') goto yy1403;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1401:
-+yy1403:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'F') {
- 		if (yych <= ')') {
-@@ -20120,12 +20315,12 @@ yy1401:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'f') goto yy1402;
-+			if (yych <= 'f') goto yy1404;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1402:
-+yy1404:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -20141,12 +20336,12 @@ yy1402:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 't') goto yy1403;
-+			if (yych <= 't') goto yy1405;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1403:
-+yy1405:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -20157,7 +20352,7 @@ yy1403:
- 		if (yych == 'h') goto yy1195;
- 		goto yy3;
- 	}
--yy1404:
-+yy1406:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= ')') {
-@@ -20173,12 +20368,12 @@ yy1404:
- 			if (yych <= '`') goto yy191;
- 			goto yy167;
- 		} else {
--			if (yych <= 's') goto yy1405;
-+			if (yych <= 's') goto yy1407;
- 			if (yych <= 'z') goto yy167;
- 			goto yy191;
- 		}
- 	}
--yy1405:
-+yy1407:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -20194,12 +20389,12 @@ yy1405:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'd') goto yy1406;
-+			if (yych <= 'd') goto yy1408;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1406:
-+yy1408:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
-@@ -20209,12 +20404,12 @@ yy1406:
- 			if (yych <= 'Z') goto yy169;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1407;
-+			if (yych <= 'a') goto yy1409;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1407:
-+yy1409:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'X') {
- 		if (yych == ')') goto yy164;
-@@ -20224,23 +20419,23 @@ yy1407:
- 		if (yych == 'y') goto yy197;
- 		goto yy3;
- 	}
--yy1408:
-+yy1410:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
- 		if (yych <= '@') goto yy3;
--		goto yy1416;
-+		goto yy1418;
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') goto yy167;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1416;
-+			if (yych <= 'a') goto yy1418;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1409:
-+yy1411:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'O') {
- 		if (yych <= ')') {
-@@ -20256,12 +20451,12 @@ yy1409:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'o') goto yy1410;
-+			if (yych <= 'o') goto yy1412;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1410:
-+yy1412:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= ')') {
-@@ -20277,12 +20472,12 @@ yy1410:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'r') goto yy1411;
-+			if (yych <= 'r') goto yy1413;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1411:
-+yy1413:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= ')') {
-@@ -20298,28 +20493,29 @@ yy1411:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 'r') goto yy1412;
-+			if (yych <= 'r') goto yy1414;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1412:
-+yy1414:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'N') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'O') goto yy1413;
-+		if (yych <= 'O') goto yy1415;
- 		if (yych != 'o') goto yy3;
- 	}
--yy1413:
-+yy1415:
- 	yych = *++YYCURSOR;
--	if (yych == 'W') goto yy1414;
-+	if (yych == 'W') goto yy1416;
- 	if (yych != 'w') goto yy56;
--yy1414:
-+yy1416:
- 	++YYCURSOR;
--yy1415:
-+yy1417:
-+#line 1013 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("tomorrow");
- 		TIMELIB_INIT;
-@@ -20330,7 +20526,8 @@ yy1415:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1416:
-+#line 20530 "ext/date/lib/parse_date.c"
-+yy1418:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'Y') {
- 		if (yych <= ')') {
-@@ -20346,21 +20543,22 @@ yy1416:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'y') goto yy1417;
-+			if (yych <= 'y') goto yy1419;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1417:
-+yy1419:
- 	++YYCURSOR;
- 	if ((yych = *YYCURSOR) <= '@') {
- 		if (yych == ')') goto yy164;
- 	} else {
- 		if (yych <= 'Z') goto yy169;
--		if (yych <= '`') goto yy1418;
-+		if (yych <= '`') goto yy1420;
- 		if (yych <= 'z') goto yy169;
- 	}
--yy1418:
-+yy1420:
-+#line 1003 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("midnight | today");
- 		TIMELIB_INIT;
-@@ -20369,7 +20567,8 @@ yy1418:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1419:
-+#line 20571 "ext/date/lib/parse_date.c"
-+yy1421:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= '@') {
-@@ -20377,8 +20576,8 @@ yy1419:
- 			goto yy3;
- 		} else {
- 			if (yych <= 'Q') goto yy167;
--			if (yych <= 'R') goto yy1425;
--			goto yy1426;
-+			if (yych <= 'R') goto yy1427;
-+			goto yy1428;
- 		}
- 	} else {
- 		if (yych <= 'q') {
-@@ -20386,13 +20585,13 @@ yy1419:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'r') goto yy1425;
--			if (yych <= 's') goto yy1426;
-+			if (yych <= 'r') goto yy1427;
-+			if (yych <= 's') goto yy1428;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1420:
-+yy1422:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= ')') {
-@@ -20408,12 +20607,12 @@ yy1420:
- 			if (yych <= '`') goto yy191;
- 			goto yy167;
- 		} else {
--			if (yych <= 'r') goto yy1421;
-+			if (yych <= 'r') goto yy1423;
- 			if (yych <= 'z') goto yy167;
- 			goto yy191;
- 		}
- 	}
--yy1421:
-+yy1423:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= ')') {
-@@ -20429,12 +20628,12 @@ yy1421:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 's') goto yy1422;
-+			if (yych <= 's') goto yy1424;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1422:
-+yy1424:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -20450,27 +20649,27 @@ yy1422:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 'd') goto yy1423;
-+			if (yych <= 'd') goto yy1425;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1423:
-+yy1425:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'A') goto yy1424;
-+		if (yych <= 'A') goto yy1426;
- 		if (yych != 'a') goto yy3;
- 	}
--yy1424:
-+yy1426:
- 	yych = *++YYCURSOR;
- 	if (yych == 'Y') goto yy197;
- 	if (yych == 'y') goto yy197;
- 	goto yy56;
--yy1425:
-+yy1427:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -20492,7 +20691,7 @@ yy1425:
- 			goto yy3;
- 		}
- 	}
--yy1426:
-+yy1428:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '(') {
-@@ -20514,7 +20713,7 @@ yy1426:
- 			goto yy3;
- 		}
- 	}
--yy1427:
-+yy1429:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -20530,12 +20729,12 @@ yy1427:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1428;
-+			if (yych <= 't') goto yy1430;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1428:
-+yy1430:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
- 		if (yych <= ')') {
-@@ -20557,7 +20756,7 @@ yy1428:
- 			goto yy3;
- 		}
- 	}
--yy1429:
-+yy1431:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -20572,7 +20771,7 @@ yy1429:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1427;
-+			if (yych <= 'N') goto yy1429;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20581,13 +20780,13 @@ yy1429:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'n') goto yy1459;
-+				if (yych <= 'n') goto yy1461;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1430:
-+yy1432:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'T') {
-@@ -20604,14 +20803,14 @@ yy1430:
- 				if (yych <= '/') goto yy172;
- 				goto yy3;
- 			} else {
--				if (yych == 'I') goto yy1419;
-+				if (yych == 'I') goto yy1421;
- 				goto yy166;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'U') goto yy1420;
-+				if (yych <= 'U') goto yy1422;
- 				goto yy166;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -20619,16 +20818,16 @@ yy1430:
- 			}
- 		} else {
- 			if (yych <= 't') {
--				if (yych == 'i') goto yy1451;
-+				if (yych == 'i') goto yy1453;
- 				goto yy171;
- 			} else {
--				if (yych <= 'u') goto yy1452;
-+				if (yych <= 'u') goto yy1454;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1431:
-+yy1433:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'L') {
-@@ -20645,14 +20844,14 @@ yy1431:
- 				if (yych <= '/') goto yy172;
- 				goto yy3;
- 			} else {
--				if (yych == 'D') goto yy1408;
-+				if (yych == 'D') goto yy1410;
- 				goto yy166;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'M') goto yy1409;
-+				if (yych <= 'M') goto yy1411;
- 				goto yy166;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -20660,16 +20859,16 @@ yy1431:
- 			}
- 		} else {
- 			if (yych <= 'l') {
--				if (yych == 'd') goto yy1442;
-+				if (yych == 'd') goto yy1444;
- 				goto yy171;
- 			} else {
--				if (yych <= 'm') goto yy1443;
-+				if (yych <= 'm') goto yy1445;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1432:
-+yy1434:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'D') {
-@@ -20684,7 +20883,7 @@ yy1432:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'E') goto yy1404;
-+			if (yych <= 'E') goto yy1406;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20693,13 +20892,13 @@ yy1432:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'e') goto yy1438;
-+				if (yych <= 'e') goto yy1440;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1433:
-+yy1435:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'D') {
-@@ -20714,7 +20913,7 @@ yy1433:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'E') goto yy1400;
-+			if (yych <= 'E') goto yy1402;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20723,13 +20922,13 @@ yy1433:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'e') goto yy1434;
-+				if (yych <= 'e') goto yy1436;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1434:
-+yy1436:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'K') {
-@@ -20744,7 +20943,7 @@ yy1434:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'L') goto yy1401;
-+			if (yych <= 'L') goto yy1403;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20753,13 +20952,13 @@ yy1434:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'l') goto yy1435;
-+				if (yych <= 'l') goto yy1437;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1435:
-+yy1437:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'E') {
-@@ -20774,7 +20973,7 @@ yy1435:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'F') goto yy1402;
-+			if (yych <= 'F') goto yy1404;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20783,13 +20982,13 @@ yy1435:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'f') goto yy1436;
-+				if (yych <= 'f') goto yy1438;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1436:
-+yy1438:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -20804,7 +21003,7 @@ yy1436:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1403;
-+			if (yych <= 'T') goto yy1405;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20813,13 +21012,13 @@ yy1436:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 't') goto yy1437;
-+				if (yych <= 't') goto yy1439;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1437:
-+yy1439:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -20842,7 +21041,7 @@ yy1437:
- 			goto yy3;
- 		}
- 	}
--yy1438:
-+yy1440:
- 	yyaccept = 4;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -20857,7 +21056,7 @@ yy1438:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'S') goto yy1405;
-+			if (yych <= 'S') goto yy1407;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy191;
- 			goto yy172;
-@@ -20866,13 +21065,13 @@ yy1438:
- 				if (yych <= '`') goto yy191;
- 				goto yy175;
- 			} else {
--				if (yych <= 's') goto yy1439;
-+				if (yych <= 's') goto yy1441;
- 				if (yych <= 'z') goto yy175;
- 				goto yy191;
- 			}
- 		}
- 	}
--yy1439:
-+yy1441:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -20887,7 +21086,7 @@ yy1439:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'D') goto yy1406;
-+			if (yych <= 'D') goto yy1408;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20896,13 +21095,13 @@ yy1439:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'd') goto yy1440;
-+				if (yych <= 'd') goto yy1442;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1440:
-+yy1442:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -20916,18 +21115,18 @@ yy1440:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1407;
-+			if (yych <= 'A') goto yy1409;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1441;
-+			if (yych <= 'a') goto yy1443;
- 			if (yych <= 'z') goto yy177;
- 			goto yy3;
- 		}
- 	}
--yy1441:
-+yy1443:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'X') {
-@@ -20950,7 +21149,7 @@ yy1441:
- 			goto yy3;
- 		}
- 	}
--yy1442:
-+yy1444:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -20964,18 +21163,18 @@ yy1442:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1416;
-+			if (yych <= 'A') goto yy1418;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1449;
-+			if (yych <= 'a') goto yy1451;
- 			if (yych <= 'z') goto yy175;
- 			goto yy3;
- 		}
- 	}
--yy1443:
-+yy1445:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'N') {
-@@ -20990,7 +21189,7 @@ yy1443:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'O') goto yy1410;
-+			if (yych <= 'O') goto yy1412;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -20999,13 +21198,13 @@ yy1443:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'o') goto yy1444;
-+				if (yych <= 'o') goto yy1446;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1444:
-+yy1446:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -21020,7 +21219,7 @@ yy1444:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'R') goto yy1411;
-+			if (yych <= 'R') goto yy1413;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21029,13 +21228,13 @@ yy1444:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'r') goto yy1445;
-+				if (yych <= 'r') goto yy1447;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1445:
-+yy1447:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -21050,7 +21249,7 @@ yy1445:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'R') goto yy1412;
-+			if (yych <= 'R') goto yy1414;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21059,13 +21258,13 @@ yy1445:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 'r') goto yy1446;
-+				if (yych <= 'r') goto yy1448;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1446:
-+yy1448:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'N') {
-@@ -21079,18 +21278,18 @@ yy1446:
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych <= 'O') goto yy1413;
-+			if (yych <= 'O') goto yy1415;
- 			if (yych == '_') goto yy172;
- 			goto yy3;
- 		} else {
--			if (yych == 'o') goto yy1447;
-+			if (yych == 'o') goto yy1449;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1447:
-+yy1449:
- 	yych = *++YYCURSOR;
--	if (yych == 'W') goto yy1414;
-+	if (yych == 'W') goto yy1416;
- 	if (yych != 'w') goto yy179;
- 	yyaccept = 29;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -21099,13 +21298,13 @@ yy1447:
- 	}
- 	if (yych <= '.') {
- 		if (yych == '-') goto yy172;
--		goto yy1415;
-+		goto yy1417;
- 	} else {
- 		if (yych <= '/') goto yy172;
- 		if (yych == '_') goto yy172;
--		goto yy1415;
-+		goto yy1417;
- 	}
--yy1449:
-+yy1451:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'X') {
-@@ -21120,7 +21319,7 @@ yy1449:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'Y') goto yy1417;
-+			if (yych <= 'Y') goto yy1419;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21129,36 +21328,36 @@ yy1449:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'y') goto yy1450;
-+				if (yych <= 'y') goto yy1452;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1450:
-+yy1452:
- 	yyaccept = 30;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
- 		if (yych <= ',') {
- 			if (yych == ')') goto yy164;
--			goto yy1418;
-+			goto yy1420;
- 		} else {
--			if (yych == '.') goto yy1418;
-+			if (yych == '.') goto yy1420;
- 			goto yy172;
- 		}
- 	} else {
- 		if (yych <= '^') {
--			if (yych <= '@') goto yy1418;
-+			if (yych <= '@') goto yy1420;
- 			if (yych <= 'Z') goto yy169;
--			goto yy1418;
-+			goto yy1420;
- 		} else {
- 			if (yych <= '_') goto yy172;
--			if (yych <= '`') goto yy1418;
-+			if (yych <= '`') goto yy1420;
- 			if (yych <= 'z') goto yy177;
--			goto yy1418;
-+			goto yy1420;
- 		}
- 	}
--yy1451:
-+yy1453:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -21173,13 +21372,13 @@ yy1451:
- 			} else {
- 				if (yych <= '@') goto yy3;
- 				if (yych <= 'Q') goto yy167;
--				goto yy1425;
-+				goto yy1427;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'S') goto yy1426;
-+				if (yych <= 'S') goto yy1428;
- 				goto yy167;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -21188,15 +21387,15 @@ yy1451:
- 		} else {
- 			if (yych <= 'r') {
- 				if (yych <= 'q') goto yy175;
--				goto yy1457;
-+				goto yy1459;
- 			} else {
--				if (yych <= 's') goto yy1458;
-+				if (yych <= 's') goto yy1460;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1452:
-+yy1454:
- 	yyaccept = 4;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -21211,7 +21410,7 @@ yy1452:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'R') goto yy1421;
-+			if (yych <= 'R') goto yy1423;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy191;
- 			goto yy172;
-@@ -21220,13 +21419,13 @@ yy1452:
- 				if (yych <= '`') goto yy191;
- 				goto yy175;
- 			} else {
--				if (yych <= 'r') goto yy1453;
-+				if (yych <= 'r') goto yy1455;
- 				if (yych <= 'z') goto yy175;
- 				goto yy191;
- 			}
- 		}
- 	}
--yy1453:
-+yy1455:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -21241,7 +21440,7 @@ yy1453:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'S') goto yy1422;
-+			if (yych <= 'S') goto yy1424;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21250,13 +21449,13 @@ yy1453:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 's') goto yy1454;
-+				if (yych <= 's') goto yy1456;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1454:
-+yy1456:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -21271,7 +21470,7 @@ yy1454:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'D') goto yy1423;
-+			if (yych <= 'D') goto yy1425;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21280,13 +21479,13 @@ yy1454:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 'd') goto yy1455;
-+				if (yych <= 'd') goto yy1457;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1455:
-+yy1457:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -21300,22 +21499,22 @@ yy1455:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1424;
-+			if (yych <= 'A') goto yy1426;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1456;
-+			if (yych <= 'a') goto yy1458;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1456:
-+yy1458:
- 	yych = *++YYCURSOR;
- 	if (yych == 'Y') goto yy197;
- 	if (yych == 'y') goto yy210;
- 	goto yy179;
--yy1457:
-+yy1459:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -21345,7 +21544,7 @@ yy1457:
- 			}
- 		}
- 	}
--yy1458:
-+yy1460:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '-') {
-@@ -21374,7 +21573,7 @@ yy1458:
- 			}
- 		}
- 	}
--yy1459:
-+yy1461:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -21389,7 +21588,7 @@ yy1459:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1428;
-+			if (yych <= 'T') goto yy1430;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21398,13 +21597,13 @@ yy1459:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1460;
-+				if (yych <= 't') goto yy1462;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1460:
-+yy1462:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -21434,30 +21633,30 @@ yy1460:
- 			}
- 		}
- 	}
--yy1461:
-+yy1463:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'Y') {
- 		if (yych <= '@') {
- 			if (yych == ')') goto yy164;
- 			goto yy3;
- 		} else {
--			if (yych == 'R') goto yy1473;
-+			if (yych == 'R') goto yy1475;
- 			if (yych <= 'X') goto yy166;
--			goto yy1474;
-+			goto yy1476;
- 		}
- 	} else {
- 		if (yych <= 'r') {
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'q') goto yy166;
--			goto yy1473;
-+			goto yy1475;
- 		} else {
--			if (yych == 'y') goto yy1474;
-+			if (yych == 'y') goto yy1476;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1462:
-+yy1464:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -21466,7 +21665,7 @@ yy1462:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'C') goto yy166;
--			goto yy1467;
-+			goto yy1469;
- 		}
- 	} else {
- 		if (yych <= 'c') {
-@@ -21474,12 +21673,12 @@ yy1462:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'd') goto yy1467;
-+			if (yych <= 'd') goto yy1469;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1463:
-+yy1465:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -21495,12 +21694,12 @@ yy1463:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'n') goto yy1464;
-+			if (yych <= 'n') goto yy1466;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1464:
-+yy1466:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'D') {
- 		if (yych <= ')') {
-@@ -21516,12 +21715,12 @@ yy1464:
- 			if (yych <= '`') goto yy191;
- 			goto yy167;
- 		} else {
--			if (yych <= 'd') goto yy1465;
-+			if (yych <= 'd') goto yy1467;
- 			if (yych <= 'z') goto yy167;
- 			goto yy191;
- 		}
- 	}
--yy1465:
-+yy1467:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'A') {
- 		if (yych == ')') goto yy164;
-@@ -21531,12 +21730,12 @@ yy1465:
- 			if (yych <= 'Z') goto yy168;
- 			goto yy3;
- 		} else {
--			if (yych <= 'a') goto yy1466;
-+			if (yych <= 'a') goto yy1468;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1466:
-+yy1468:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'Y') {
- 		if (yych <= ')') {
-@@ -21558,7 +21757,7 @@ yy1466:
- 			goto yy3;
- 		}
- 	}
--yy1467:
-+yy1469:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -21574,12 +21773,12 @@ yy1467:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'n') goto yy1468;
-+			if (yych <= 'n') goto yy1470;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1468:
-+yy1470:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'I') {
- 		if (yych <= ')') {
-@@ -21595,12 +21794,12 @@ yy1468:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'i') goto yy1469;
-+			if (yych <= 'i') goto yy1471;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1469:
-+yy1471:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'G') {
- 		if (yych <= ')') {
-@@ -21616,29 +21815,29 @@ yy1469:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 'g') goto yy1470;
-+			if (yych <= 'g') goto yy1472;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1470:
-+yy1472:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'H') goto yy1471;
-+		if (yych <= 'H') goto yy1473;
- 		if (yych != 'h') goto yy3;
- 	}
--yy1471:
-+yy1473:
- 	yych = *++YYCURSOR;
--	if (yych == 'T') goto yy1472;
-+	if (yych == 'T') goto yy1474;
- 	if (yych != 't') goto yy56;
--yy1472:
-+yy1474:
- 	yych = *++YYCURSOR;
--	goto yy1418;
--yy1473:
-+	goto yy1420;
-+yy1475:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
-@@ -21666,7 +21865,7 @@ yy1473:
- 				if (yych <= '9') goto yy220;
- 				goto yy218;
- 			} else {
--				if (yych == 'C') goto yy1475;
-+				if (yych == 'C') goto yy1477;
- 				goto yy167;
- 			}
- 		} else {
-@@ -21674,13 +21873,13 @@ yy1473:
- 				if (yych <= '`') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'c') goto yy1475;
-+				if (yych <= 'c') goto yy1477;
- 				if (yych <= 'z') goto yy167;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1474:
-+yy1476:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '-') {
-@@ -21705,7 +21904,7 @@ yy1474:
- 			goto yy218;
- 		}
- 	}
--yy1475:
-+yy1477:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
- 		if (yych <= ')') {
-@@ -21727,7 +21926,7 @@ yy1475:
- 			goto yy3;
- 		}
- 	}
--yy1476:
-+yy1478:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'X') {
-@@ -21744,14 +21943,14 @@ yy1476:
- 				if (yych <= '/') goto yy172;
- 				goto yy3;
- 			} else {
--				if (yych == 'R') goto yy1473;
-+				if (yych == 'R') goto yy1475;
- 				goto yy166;
- 			}
- 		}
- 	} else {
- 		if (yych <= '`') {
- 			if (yych <= 'Z') {
--				if (yych <= 'Y') goto yy1474;
-+				if (yych <= 'Y') goto yy1476;
- 				goto yy166;
- 			} else {
- 				if (yych == '_') goto yy172;
-@@ -21759,16 +21958,16 @@ yy1476:
- 			}
- 		} else {
- 			if (yych <= 'x') {
--				if (yych == 'r') goto yy1488;
-+				if (yych == 'r') goto yy1490;
- 				goto yy171;
- 			} else {
--				if (yych <= 'y') goto yy1489;
-+				if (yych <= 'y') goto yy1491;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1477:
-+yy1479:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -21783,7 +21982,7 @@ yy1477:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'D') goto yy1467;
-+			if (yych <= 'D') goto yy1469;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21792,13 +21991,13 @@ yy1477:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'd') goto yy1482;
-+				if (yych <= 'd') goto yy1484;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1478:
-+yy1480:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -21813,7 +22012,7 @@ yy1478:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1464;
-+			if (yych <= 'N') goto yy1466;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21822,13 +22021,13 @@ yy1478:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'n') goto yy1479;
-+				if (yych <= 'n') goto yy1481;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1479:
-+yy1481:
- 	yyaccept = 4;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -21843,7 +22042,7 @@ yy1479:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'D') goto yy1465;
-+			if (yych <= 'D') goto yy1467;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy191;
- 			goto yy172;
-@@ -21852,13 +22051,13 @@ yy1479:
- 				if (yych <= '`') goto yy191;
- 				goto yy175;
- 			} else {
--				if (yych <= 'd') goto yy1480;
-+				if (yych <= 'd') goto yy1482;
- 				if (yych <= 'z') goto yy175;
- 				goto yy191;
- 			}
- 		}
- 	}
--yy1480:
-+yy1482:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '@') {
-@@ -21872,18 +22071,18 @@ yy1480:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'A') goto yy1466;
-+			if (yych <= 'A') goto yy1468;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
- 		} else {
- 			if (yych <= '`') goto yy3;
--			if (yych <= 'a') goto yy1481;
-+			if (yych <= 'a') goto yy1483;
- 			if (yych <= 'z') goto yy176;
- 			goto yy3;
- 		}
- 	}
--yy1481:
-+yy1483:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'X') {
-@@ -21913,7 +22112,7 @@ yy1481:
- 			}
- 		}
- 	}
--yy1482:
-+yy1484:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -21928,7 +22127,7 @@ yy1482:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1468;
-+			if (yych <= 'N') goto yy1470;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21937,13 +22136,13 @@ yy1482:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'n') goto yy1483;
-+				if (yych <= 'n') goto yy1485;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1483:
-+yy1485:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'H') {
-@@ -21958,7 +22157,7 @@ yy1483:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'I') goto yy1469;
-+			if (yych <= 'I') goto yy1471;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21967,13 +22166,13 @@ yy1483:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'i') goto yy1484;
-+				if (yych <= 'i') goto yy1486;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1484:
-+yy1486:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'F') {
-@@ -21988,7 +22187,7 @@ yy1484:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'G') goto yy1470;
-+			if (yych <= 'G') goto yy1472;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -21997,13 +22196,13 @@ yy1484:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 'g') goto yy1485;
-+				if (yych <= 'g') goto yy1487;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1485:
-+yy1487:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -22017,18 +22216,18 @@ yy1485:
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych <= 'H') goto yy1471;
-+			if (yych <= 'H') goto yy1473;
- 			if (yych == '_') goto yy172;
- 			goto yy3;
- 		} else {
--			if (yych == 'h') goto yy1486;
-+			if (yych == 'h') goto yy1488;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1486:
-+yy1488:
- 	yych = *++YYCURSOR;
--	if (yych == 'T') goto yy1472;
-+	if (yych == 'T') goto yy1474;
- 	if (yych != 't') goto yy179;
- 	yyaccept = 30;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -22037,13 +22236,13 @@ yy1486:
- 	}
- 	if (yych <= '.') {
- 		if (yych == '-') goto yy172;
--		goto yy1418;
-+		goto yy1420;
- 	} else {
- 		if (yych <= '/') goto yy172;
- 		if (yych == '_') goto yy172;
--		goto yy1418;
-+		goto yy1420;
- 	}
--yy1488:
-+yy1490:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '9') {
-@@ -22071,7 +22270,7 @@ yy1488:
- 				if (yych <= '@') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'C') goto yy1475;
-+				if (yych <= 'C') goto yy1477;
- 				if (yych <= 'Z') goto yy167;
- 				goto yy218;
- 			}
-@@ -22081,13 +22280,13 @@ yy1488:
- 				if (yych <= '`') goto yy218;
- 				goto yy175;
- 			} else {
--				if (yych <= 'c') goto yy1490;
-+				if (yych <= 'c') goto yy1492;
- 				if (yych <= 'z') goto yy175;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1489:
-+yy1491:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '.') {
-@@ -22122,7 +22321,7 @@ yy1489:
- 			}
- 		}
- 	}
--yy1490:
-+yy1492:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -22152,7 +22351,7 @@ yy1490:
- 			}
- 		}
- 	}
--yy1491:
-+yy1493:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'W') {
- 		if (yych <= 'N') {
-@@ -22160,29 +22359,29 @@ yy1491:
- 			if (yych <= '@') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'O') goto yy1499;
-+			if (yych <= 'O') goto yy1501;
- 			if (yych <= 'U') goto yy166;
--			if (yych <= 'V') goto yy1500;
--			goto yy1497;
-+			if (yych <= 'V') goto yy1502;
-+			goto yy1499;
- 		}
- 	} else {
- 		if (yych <= 'o') {
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '`') goto yy3;
- 			if (yych <= 'n') goto yy166;
--			goto yy1499;
-+			goto yy1501;
- 		} else {
- 			if (yych <= 'v') {
- 				if (yych <= 'u') goto yy166;
--				goto yy1500;
-+				goto yy1502;
- 			} else {
--				if (yych <= 'w') goto yy1497;
-+				if (yych <= 'w') goto yy1499;
- 				if (yych <= 'z') goto yy166;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1492:
-+yy1494:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'X') {
- 		if (yych <= ')') {
-@@ -22191,7 +22390,7 @@ yy1492:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'W') goto yy166;
--			goto yy1496;
-+			goto yy1498;
- 		}
- 	} else {
- 		if (yych <= 'w') {
-@@ -22199,12 +22398,12 @@ yy1492:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'x') goto yy1496;
-+			if (yych <= 'x') goto yy1498;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1493:
-+yy1495:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -22220,12 +22419,12 @@ yy1493:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 'n') goto yy1494;
-+			if (yych <= 'n') goto yy1496;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1494:
-+yy1496:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -22241,12 +22440,12 @@ yy1494:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1495;
-+			if (yych <= 't') goto yy1497;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1495:
-+yy1497:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'H') {
- 		if (yych <= ')') {
-@@ -22268,7 +22467,7 @@ yy1495:
- 			goto yy3;
- 		}
- 	}
--yy1496:
-+yy1498:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -22277,7 +22476,7 @@ yy1496:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'S') goto yy167;
--			goto yy1426;
-+			goto yy1428;
- 		}
- 	} else {
- 		if (yych <= 's') {
-@@ -22285,21 +22484,22 @@ yy1496:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1426;
-+			if (yych <= 't') goto yy1428;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1497:
-+yy1499:
- 	++YYCURSOR;
- 	if ((yych = *YYCURSOR) <= '@') {
- 		if (yych == ')') goto yy164;
- 	} else {
- 		if (yych <= 'Z') goto yy167;
--		if (yych <= '`') goto yy1498;
-+		if (yych <= '`') goto yy1500;
- 		if (yych <= 'z') goto yy167;
- 	}
--yy1498:
-+yy1500:
-+#line 982 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("now");
- 		TIMELIB_INIT;
-@@ -22307,7 +22507,8 @@ yy1498:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1499:
-+#line 22511 "ext/date/lib/parse_date.c"
-+yy1501:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'N') {
- 		if (yych <= ')') {
-@@ -22316,7 +22517,7 @@ yy1499:
- 		} else {
- 			if (yych <= '@') goto yy3;
- 			if (yych <= 'M') goto yy167;
--			goto yy1505;
-+			goto yy1507;
- 		}
- 	} else {
- 		if (yych <= 'm') {
-@@ -22324,12 +22525,12 @@ yy1499:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 'n') goto yy1505;
-+			if (yych <= 'n') goto yy1507;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1500:
-+yy1502:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
-@@ -22364,13 +22565,13 @@ yy1500:
- 				if (yych <= '`') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'e') goto yy1501;
-+				if (yych <= 'e') goto yy1503;
- 				if (yych <= 'z') goto yy167;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1501:
-+yy1503:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'M') {
- 		if (yych <= ')') {
-@@ -22386,12 +22587,12 @@ yy1501:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'm') goto yy1502;
-+			if (yych <= 'm') goto yy1504;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1502:
-+yy1504:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'B') {
- 		if (yych <= ')') {
-@@ -22407,36 +22608,37 @@ yy1502:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 'b') goto yy1503;
-+			if (yych <= 'b') goto yy1505;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1503:
-+yy1505:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'D') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'E') goto yy1504;
-+		if (yych <= 'E') goto yy1506;
- 		if (yych != 'e') goto yy3;
- 	}
--yy1504:
-+yy1506:
- 	yych = *++YYCURSOR;
- 	if (yych == 'R') goto yy229;
- 	if (yych == 'r') goto yy229;
- 	goto yy56;
--yy1505:
-+yy1507:
- 	++YYCURSOR;
- 	if ((yych = *YYCURSOR) <= '@') {
- 		if (yych == ')') goto yy164;
- 	} else {
- 		if (yych <= 'Z') goto yy168;
--		if (yych <= '`') goto yy1506;
-+		if (yych <= '`') goto yy1508;
- 		if (yych <= 'z') goto yy168;
- 	}
--yy1506:
-+yy1508:
-+#line 991 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("noon");
- 		TIMELIB_INIT;
-@@ -22447,7 +22649,8 @@ yy1506:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1507:
-+#line 22653 "ext/date/lib/parse_date.c"
-+yy1509:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'V') {
-@@ -22465,15 +22668,15 @@ yy1507:
- 				if (yych <= '@') goto yy3;
- 				goto yy166;
- 			} else {
--				if (yych <= 'O') goto yy1499;
-+				if (yych <= 'O') goto yy1501;
- 				if (yych <= 'U') goto yy166;
--				goto yy1500;
-+				goto yy1502;
- 			}
- 		}
- 	} else {
- 		if (yych <= 'n') {
- 			if (yych <= '^') {
--				if (yych <= 'W') goto yy1497;
-+				if (yych <= 'W') goto yy1499;
- 				if (yych <= 'Z') goto yy166;
- 				goto yy3;
- 			} else {
-@@ -22483,17 +22686,17 @@ yy1507:
- 			}
- 		} else {
- 			if (yych <= 'v') {
--				if (yych <= 'o') goto yy1514;
-+				if (yych <= 'o') goto yy1516;
- 				if (yych <= 'u') goto yy171;
--				goto yy1515;
-+				goto yy1517;
- 			} else {
--				if (yych <= 'w') goto yy1513;
-+				if (yych <= 'w') goto yy1515;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1508:
-+yy1510:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'W') {
-@@ -22508,7 +22711,7 @@ yy1508:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'X') goto yy1496;
-+			if (yych <= 'X') goto yy1498;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22517,13 +22720,13 @@ yy1508:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'x') goto yy1512;
-+				if (yych <= 'x') goto yy1514;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1509:
-+yy1511:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -22538,7 +22741,7 @@ yy1509:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1494;
-+			if (yych <= 'N') goto yy1496;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22547,13 +22750,13 @@ yy1509:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 'n') goto yy1510;
-+				if (yych <= 'n') goto yy1512;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1510:
-+yy1512:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -22568,7 +22771,7 @@ yy1510:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1495;
-+			if (yych <= 'T') goto yy1497;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22577,13 +22780,13 @@ yy1510:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1511;
-+				if (yych <= 't') goto yy1513;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1511:
-+yy1513:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'G') {
-@@ -22613,7 +22816,7 @@ yy1511:
- 			}
- 		}
- 	}
--yy1512:
-+yy1514:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -22628,7 +22831,7 @@ yy1512:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1426;
-+			if (yych <= 'T') goto yy1428;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22637,36 +22840,36 @@ yy1512:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1458;
-+				if (yych <= 't') goto yy1460;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1513:
-+yy1515:
- 	yyaccept = 31;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
- 		if (yych <= ',') {
- 			if (yych == ')') goto yy164;
--			goto yy1498;
-+			goto yy1500;
- 		} else {
--			if (yych == '.') goto yy1498;
-+			if (yych == '.') goto yy1500;
- 			goto yy172;
- 		}
- 	} else {
- 		if (yych <= '^') {
--			if (yych <= '@') goto yy1498;
-+			if (yych <= '@') goto yy1500;
- 			if (yych <= 'Z') goto yy167;
--			goto yy1498;
-+			goto yy1500;
- 		} else {
- 			if (yych <= '_') goto yy172;
--			if (yych <= '`') goto yy1498;
-+			if (yych <= '`') goto yy1500;
- 			if (yych <= 'z') goto yy175;
--			goto yy1498;
-+			goto yy1500;
- 		}
- 	}
--yy1514:
-+yy1516:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'M') {
-@@ -22681,7 +22884,7 @@ yy1514:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'N') goto yy1505;
-+			if (yych <= 'N') goto yy1507;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22690,13 +22893,13 @@ yy1514:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 'n') goto yy1520;
-+				if (yych <= 'n') goto yy1522;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1515:
-+yy1517:
- 	yyaccept = 5;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '9') {
-@@ -22724,7 +22927,7 @@ yy1515:
- 				if (yych <= '@') goto yy218;
- 				goto yy167;
- 			} else {
--				if (yych <= 'E') goto yy1501;
-+				if (yych <= 'E') goto yy1503;
- 				if (yych <= 'Z') goto yy167;
- 				goto yy218;
- 			}
-@@ -22734,13 +22937,13 @@ yy1515:
- 				if (yych <= '`') goto yy218;
- 				goto yy175;
- 			} else {
--				if (yych <= 'e') goto yy1516;
-+				if (yych <= 'e') goto yy1518;
- 				if (yych <= 'z') goto yy175;
- 				goto yy218;
- 			}
- 		}
- 	}
--yy1516:
-+yy1518:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'L') {
-@@ -22755,7 +22958,7 @@ yy1516:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'M') goto yy1502;
-+			if (yych <= 'M') goto yy1504;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22764,13 +22967,13 @@ yy1516:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'm') goto yy1517;
-+				if (yych <= 'm') goto yy1519;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1517:
-+yy1519:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'A') {
-@@ -22785,7 +22988,7 @@ yy1517:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'B') goto yy1503;
-+			if (yych <= 'B') goto yy1505;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22794,13 +22997,13 @@ yy1517:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 'b') goto yy1518;
-+				if (yych <= 'b') goto yy1520;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1518:
-+yy1520:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'D') {
-@@ -22814,44 +23017,44 @@ yy1518:
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych <= 'E') goto yy1504;
-+			if (yych <= 'E') goto yy1506;
- 			if (yych == '_') goto yy172;
- 			goto yy3;
- 		} else {
--			if (yych == 'e') goto yy1519;
-+			if (yych == 'e') goto yy1521;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1519:
-+yy1521:
- 	yych = *++YYCURSOR;
- 	if (yych == 'R') goto yy229;
- 	if (yych == 'r') goto yy341;
- 	goto yy179;
--yy1520:
-+yy1522:
- 	yyaccept = 32;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= '/') {
- 		if (yych <= ',') {
- 			if (yych == ')') goto yy164;
--			goto yy1506;
-+			goto yy1508;
- 		} else {
--			if (yych == '.') goto yy1506;
-+			if (yych == '.') goto yy1508;
- 			goto yy172;
- 		}
- 	} else {
- 		if (yych <= '^') {
--			if (yych <= '@') goto yy1506;
-+			if (yych <= '@') goto yy1508;
- 			if (yych <= 'Z') goto yy168;
--			goto yy1506;
-+			goto yy1508;
- 		} else {
- 			if (yych <= '_') goto yy172;
--			if (yych <= '`') goto yy1506;
-+			if (yych <= '`') goto yy1508;
- 			if (yych <= 'z') goto yy176;
--			goto yy1506;
-+			goto yy1508;
- 		}
- 	}
--yy1521:
-+yy1523:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'S') {
- 		if (yych <= ')') {
-@@ -22867,12 +23070,12 @@ yy1521:
- 			if (yych <= '`') goto yy3;
- 			goto yy166;
- 		} else {
--			if (yych <= 's') goto yy1522;
-+			if (yych <= 's') goto yy1524;
- 			if (yych <= 'z') goto yy166;
- 			goto yy3;
- 		}
- 	}
--yy1522:
-+yy1524:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'T') {
- 		if (yych <= ')') {
-@@ -22888,12 +23091,12 @@ yy1522:
- 			if (yych <= '`') goto yy3;
- 			goto yy167;
- 		} else {
--			if (yych <= 't') goto yy1523;
-+			if (yych <= 't') goto yy1525;
- 			if (yych <= 'z') goto yy167;
- 			goto yy3;
- 		}
- 	}
--yy1523:
-+yy1525:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'E') {
- 		if (yych <= ')') {
-@@ -22909,12 +23112,12 @@ yy1523:
- 			if (yych <= '`') goto yy3;
- 			goto yy168;
- 		} else {
--			if (yych <= 'e') goto yy1524;
-+			if (yych <= 'e') goto yy1526;
- 			if (yych <= 'z') goto yy168;
- 			goto yy3;
- 		}
- 	}
--yy1524:
-+yy1526:
- 	yych = *++YYCURSOR;
- 	if (yych <= 'R') {
- 		if (yych <= ')') {
-@@ -22930,32 +23133,33 @@ yy1524:
- 			if (yych <= '`') goto yy3;
- 			goto yy169;
- 		} else {
--			if (yych <= 'r') goto yy1525;
-+			if (yych <= 'r') goto yy1527;
- 			if (yych <= 'z') goto yy169;
- 			goto yy3;
- 		}
- 	}
--yy1525:
-+yy1527:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
- 		if (yych == ')') goto yy164;
- 		goto yy3;
- 	} else {
--		if (yych <= 'D') goto yy1526;
-+		if (yych <= 'D') goto yy1528;
- 		if (yych != 'd') goto yy3;
- 	}
--yy1526:
-+yy1528:
- 	yych = *++YYCURSOR;
--	if (yych == 'A') goto yy1527;
-+	if (yych == 'A') goto yy1529;
- 	if (yych != 'a') goto yy56;
--yy1527:
-+yy1529:
- 	yych = *++YYCURSOR;
--	if (yych == 'Y') goto yy1528;
-+	if (yych == 'Y') goto yy1530;
- 	if (yych != 'y') goto yy56;
--yy1528:
-+yy1530:
- 	++YYCURSOR;
--yy1529:
-+yy1531:
-+#line 970 "ext/date/lib/parse_date.re"
- 	{
- 		DEBUG_OUTPUT("yesterday");
- 		TIMELIB_INIT;
-@@ -22966,7 +23170,8 @@ yy1529:
- 		TIMELIB_DEINIT;
- 		return TIMELIB_RELATIVE;
- 	}
--yy1530:
-+#line 23174 "ext/date/lib/parse_date.c"
-+yy1532:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'R') {
-@@ -22981,7 +23186,7 @@ yy1530:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'S') goto yy1522;
-+			if (yych <= 'S') goto yy1524;
- 			if (yych <= 'Z') goto yy166;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -22990,13 +23195,13 @@ yy1530:
- 				if (yych <= '`') goto yy3;
- 				goto yy171;
- 			} else {
--				if (yych <= 's') goto yy1531;
-+				if (yych <= 's') goto yy1533;
- 				if (yych <= 'z') goto yy171;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1531:
-+yy1533:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'S') {
-@@ -23011,7 +23216,7 @@ yy1531:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'T') goto yy1523;
-+			if (yych <= 'T') goto yy1525;
- 			if (yych <= 'Z') goto yy167;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -23020,13 +23225,13 @@ yy1531:
- 				if (yych <= '`') goto yy3;
- 				goto yy175;
- 			} else {
--				if (yych <= 't') goto yy1532;
-+				if (yych <= 't') goto yy1534;
- 				if (yych <= 'z') goto yy175;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1532:
-+yy1534:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'D') {
-@@ -23041,7 +23246,7 @@ yy1532:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'E') goto yy1524;
-+			if (yych <= 'E') goto yy1526;
- 			if (yych <= 'Z') goto yy168;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -23050,13 +23255,13 @@ yy1532:
- 				if (yych <= '`') goto yy3;
- 				goto yy176;
- 			} else {
--				if (yych <= 'e') goto yy1533;
-+				if (yych <= 'e') goto yy1535;
- 				if (yych <= 'z') goto yy176;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1533:
-+yy1535:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'Q') {
-@@ -23071,7 +23276,7 @@ yy1533:
- 		}
- 	} else {
- 		if (yych <= '_') {
--			if (yych <= 'R') goto yy1525;
-+			if (yych <= 'R') goto yy1527;
- 			if (yych <= 'Z') goto yy169;
- 			if (yych <= '^') goto yy3;
- 			goto yy172;
-@@ -23080,13 +23285,13 @@ yy1533:
- 				if (yych <= '`') goto yy3;
- 				goto yy177;
- 			} else {
--				if (yych <= 'r') goto yy1534;
-+				if (yych <= 'r') goto yy1536;
- 				if (yych <= 'z') goto yy177;
- 				goto yy3;
- 			}
- 		}
- 	}
--yy1534:
-+yy1536:
- 	yyaccept = 0;
- 	yych = *(YYMARKER = ++YYCURSOR);
- 	if (yych <= 'C') {
-@@ -23100,21 +23305,21 @@ yy1534:
- 		}
- 	} else {
- 		if (yych <= '`') {
--			if (yych <= 'D') goto yy1526;
-+			if (yych <= 'D') goto yy1528;
- 			if (yych == '_') goto yy172;
- 			goto yy3;
- 		} else {
--			if (yych == 'd') goto yy1535;
-+			if (yych == 'd') goto yy1537;
- 			if (yych <= 'z') goto yy178;
- 			goto yy3;
- 		}
- 	}
--yy1535:
-+yy1537:
- 	yych = *++YYCURSOR;
--	if (yych == 'A') goto yy1527;
-+	if (yych == 'A') goto yy1529;
- 	if (yych != 'a') goto yy179;
- 	yych = *++YYCURSOR;
--	if (yych == 'Y') goto yy1528;
-+	if (yych == 'Y') goto yy1530;
- 	if (yych != 'y') goto yy179;
- 	yyaccept = 33;
- 	yych = *(YYMARKER = ++YYCURSOR);
-@@ -23123,13 +23328,14 @@ yy1535:
- 	}
- 	if (yych <= '.') {
- 		if (yych == '-') goto yy172;
--		goto yy1529;
-+		goto yy1531;
- 	} else {
- 		if (yych <= '/') goto yy172;
- 		if (yych == '_') goto yy172;
--		goto yy1529;
-+		goto yy1531;
- 	}
- }
-+#line 1772 "ext/date/lib/parse_date.re"
- 
- }
- 
-diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
-index 74d9ea3..f26e276 100644
---- a/ext/date/lib/parse_date.re
-+++ b/ext/date/lib/parse_date.re
-@@ -931,8 +931,8 @@ isoweek          = year4 "-"? "W" weekofyear;
- exif             = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
- firstdayof       = 'first day of';
- lastdayof        = 'last day of';
--backof           = 'back of ' hour24 space? meridian?;
--frontof          = 'front of ' hour24 space? meridian?;
-+backof           = 'back of ' hour24 (space? meridian)?;
-+frontof          = 'front of ' hour24 (space? meridian)?;
- 
- /* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
- clf              = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
-diff --git a/ext/date/tests/bug53437_var3.phpt b/ext/date/tests/bug53437_var3.phpt
-index 8f48b1b..8dcd4c8 100644
---- a/ext/date/tests/bug53437_var3.phpt
-+++ b/ext/date/tests/bug53437_var3.phpt
-@@ -40,7 +40,7 @@ object(DateInterval)#%d (16) {
-   ["special_amount"]=>
-   int(-1)
-   ["have_weekday_relative"]=>
--  int(9)
-+  int(0)
-   ["have_special_relative"]=>
-   int(0)
-   ["f"]=>
-diff --git a/ext/wddx/tests/bug75055.phpt b/ext/wddx/tests/bug75055.phpt
-new file mode 100644
-index 0000000..2956284
---- /dev/null
-+++ b/ext/wddx/tests/bug75055.phpt
-@@ -0,0 +1,20 @@
-+--TEST--
-+Bug #75055 Out-Of-Bounds Read in timelib_meridian()
-+--SKIPIF--
-+<?php if (!extension_loaded("wddx")) print "skip"; ?>
-+--FILE--
-+<?php
-+
-+$file_str = dirname(__FILE__) . "/bug75055.wddx";
-+
-+$wddx_str = file_get_contents($file_str);
-+print strlen($wddx_str) . " bytes read.\n";
-+
-+var_dump(wddx_deserialize($wddx_str));
-+?>
-+--EXPECT--
-+323 bytes read.
-+array(1) {
-+  ["aDateTime"]=>
-+  string(12) "frONt of 0 0"
-+}
-diff --git a/ext/wddx/tests/bug75055.wddx b/ext/wddx/tests/bug75055.wddx
-new file mode 100644
-index 0000000..6493352
---- /dev/null
-+++ b/ext/wddx/tests/bug75055.wddx
-@@ -0,0 +1,13 @@
-+<?xml version='1.0'?>
-+<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
-+<wddxPacket version='1.0'>
-+<header/>
-+	<data>
-+        	<struct>
-+                    <var name='aDateTime'>
-+                         <dateTime>frONt of 0 0</dateTime>
-+                     </var>
-+                </struct>
-+	</data>
-+</wddxPacket>
-+
--- 
-2.11.0
-
diff --git a/meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch b/meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch
deleted file mode 100644
index 596244d..0000000
--- a/meta-oe/recipes-devtools/php/php/CVE-2018-5711.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b04cd19b76374ebce8f3326275bdfd7e9b9aeab5 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Sun, 11 Feb 2018 15:03:21 +0800
-Subject: [PATCH] Fixed bug #75571: Potential infinite loop in
- gdImageCreateFromGifCtx
-
-Due to a signedness confusion in `GetCode_` a corrupt GIF file can
-trigger an infinite loop.  Furthermore we make sure that a GIF without
-any palette entries is treated as invalid *after* open palette entries
-have been removed.
-
-Upstream-Status: Backport
-CVE: CVE-2018-5711
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- ext/gd/libgd/gd_gif_in.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/ext/gd/libgd/gd_gif_in.c b/ext/gd/libgd/gd_gif_in.c
-index 76ba152..7156e4b 100644
---- a/ext/gd/libgd/gd_gif_in.c
-+++ b/ext/gd/libgd/gd_gif_in.c
-@@ -261,10 +261,6 @@ terminated:
- 	if (!im) {
- 		return 0;
- 	}
--	if (!im->colorsTotal) {
--		gdImageDestroy(im);
--		return 0;
--	}
- 	/* Check for open colors at the end, so
- 	   we can reduce colorsTotal and ultimately
- 	   BitsPerPixel */
-@@ -275,6 +271,10 @@ terminated:
- 			break;
- 		}
- 	}
-+	if (!im->colorsTotal) {
-+		gdImageDestroy(im);
-+		return 0;
-+	}
- 	return im;
- }
- /* }}} */
-@@ -375,7 +375,7 @@ static int
- GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
- {
- 	int           i, j, ret;
--	unsigned char count;
-+	int           count;
- 
- 	if (flag) {
- 		scd->curbit = 0;
--- 
-1.9.1
-
diff --git a/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
index 39c334f..3e90184 100644
--- a/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+++ b/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
@@ -1,20 +1,25 @@
-[PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
+From 3bfcc7fdd22261eaed10949714de0a90d31e10ab Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Thu, 20 Aug 2015 16:29:35 +0800
+Subject: [PATCH] [PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
 
 Upstream-Status: Pending
 
 AC_TRY_RUN is not suitable for cross-compile
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+%% original patch: change-AC_TRY_RUN-to-AC_TRY_LINK.patch
 ---
  ext/fileinfo/config.m4 | 31 ++++++-------------------------
  1 file changed, 6 insertions(+), 25 deletions(-)
 
 diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
-index 7e98d62..8a8ea0e 100644
+index 523b4fd..0aaa4c8 100644
 --- a/ext/fileinfo/config.m4
 +++ b/ext/fileinfo/config.m4
 @@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
-     libmagic/readcdf.c libmagic/softmagic.c"
+     libmagic/readcdf.c libmagic/softmagic.c libmagic/der.c"
  
    AC_MSG_CHECKING([for strcasestr])
 -  AC_TRY_RUN([
@@ -52,5 +57,5 @@ index 7e98d62..8a8ea0e 100644
      dnl using the platform implementation
      AC_MSG_RESULT(yes)
 -- 
-1.9.1
+2.7.4
 
diff --git a/meta-oe/recipes-devtools/php/php/configure.patch b/meta-oe/recipes-devtools/php/php/configure.patch
index c5334c7..d9d913f 100644
--- a/meta-oe/recipes-devtools/php/php/configure.patch
+++ b/meta-oe/recipes-devtools/php/php/configure.patch
@@ -1,11 +1,21 @@
---- php-5.1.6/configure.old	2006-09-12 07:54:14.000000000 -0700
-+++ php-5.1.6/configure	2006-09-12 07:54:37.000000000 -0700
-@@ -14715,8 +14715,6 @@
+From 617d01ef2ac2f436cd8e06555b608db56079b851 Mon Sep 17 00:00:00 2001
+From: Paul Eggleton <paul.eggleton@linux.intel.com>
+Date: Tue, 17 Jul 2012 11:31:54 +0100
+
+---
+ configure | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure b/configure
+index 1f1ef32..392fb76 100755
+--- a/configure
++++ b/configure
+@@ -11642,8 +11642,6 @@ $as_echo "#define HAVE_LIBNSL 1" >>confdefs.h
  
  
  
 -  unset ac_cv_func_dlopen
 -  unset ac_cv_func___dlopen
    unset found
-   
-   echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+ 
+   ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
diff --git a/meta-oe/recipes-devtools/php/php/iconv.patch b/meta-oe/recipes-devtools/php/php/iconv.patch
index 255fbb0..b6e3ceb 100644
--- a/meta-oe/recipes-devtools/php/php/iconv.patch
+++ b/meta-oe/recipes-devtools/php/php/iconv.patch
@@ -1,10 +1,18 @@
-Upstream-status: Unknown
+From 17cc5645f3acf943a5a06465d09d0ebcfea987bd Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Upstream-status: Unknown
+
+---
+ acinclude.m4        | 3 ++-
+ ext/iconv/config.m4 | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/acinclude.m4 b/acinclude.m4
-index a6c0d84..df11abd 100644
+index d32766a..ad5166e 100644
 --- a/acinclude.m4
 +++ b/acinclude.m4
-@@ -2452,7 +2452,8 @@ AC_DEFUN([PHP_SETUP_ICONV], [
+@@ -2445,7 +2445,8 @@ AC_DEFUN([PHP_SETUP_ICONV], [
    dnl Check libc first if no path is provided in --with-iconv
    dnl
  
@@ -15,7 +23,7 @@ index a6c0d84..df11abd 100644
      dnl -liconv in.
      LIBS_save="$LIBS"
 diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4
-index d673b0a..1fbef13 100644
+index 6a05697..973e750 100644
 --- a/ext/iconv/config.m4
 +++ b/ext/iconv/config.m4
 @@ -15,7 +15,7 @@ if test "$PHP_ICONV" != "no"; then
@@ -27,6 +35,3 @@ index d673b0a..1fbef13 100644
          if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then
            PHP_ICONV_PREFIX="$i"
            break
--- 
-1.9.3
-
diff --git a/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch b/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
index da04c2d..b5fb7d4 100644
--- a/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
+++ b/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
@@ -1,10 +1,18 @@
-Upstream-status: Unknown
+From c084c8349d1780980e232cb28b60a109e3d89438 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Upstream-status: Unknown
+
+---
+ acinclude.m4       |  2 +-
+ ext/imap/config.m4 | 10 ++--------
+ 2 files changed, 3 insertions(+), 9 deletions(-)
 
 diff --git a/acinclude.m4 b/acinclude.m4
-index df11abd..06e7236 100644
+index ad5166e..f6a55ec 100644
 --- a/acinclude.m4
 +++ b/acinclude.m4
-@@ -2357,7 +2357,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
+@@ -2350,7 +2350,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
        PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl"
      fi
  
@@ -14,7 +22,7 @@ index df11abd..06e7236 100644
          OPENSSL_INCDIR=$i/include
        fi
 diff --git a/ext/imap/config.m4 b/ext/imap/config.m4
-index 3fcf674..f08caf7 100644
+index badb6e2..8ff803c 100644
 --- a/ext/imap/config.m4
 +++ b/ext/imap/config.m4
 @@ -109,7 +109,7 @@ if test "$PHP_IMAP" != "no"; then
@@ -41,6 +49,3 @@ index 3fcf674..f08caf7 100644
        IMAP_LIB=$lib
        IMAP_LIB_CHK($PHP_LIBDIR)
        IMAP_LIB_CHK(c-client)
--- 
-1.9.3
-
diff --git a/meta-oe/recipes-devtools/php/php/pear-makefile.patch b/meta-oe/recipes-devtools/php/php/pear-makefile.patch
index 9927d2d..4bc1025 100644
--- a/meta-oe/recipes-devtools/php/php/pear-makefile.patch
+++ b/meta-oe/recipes-devtools/php/php/pear-makefile.patch
@@ -1,11 +1,18 @@
-Upstream-status: Unknown
+From edd575a546d56bb5683aff19782b16963d61fd0b Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Upstream-status: Unknown
+
+---
+ pear/Makefile.frag | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/pear/Makefile.frag b/pear/Makefile.frag
-index 00bacae..739eeca 100644
+index bbe8ec3..16f43e2 100644
 --- a/pear/Makefile.frag
 +++ b/pear/Makefile.frag
-@@ -11,7 +11,7 @@ PEAR_PREFIX = -dp a${program_prefix}
- PEAR_SUFFIX = -ds a$(program_suffix)
+@@ -12,7 +12,7 @@ PEAR_SUFFIX = -ds a$(program_suffix)
+ PEAR_INSTALLER_URL = https://pear.php.net/install-pear-nozlib.phar
  
  install-pear-installer: $(SAPI_CLI_PATH)
 -	@$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) pear/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
@@ -13,6 +20,3 @@ index 00bacae..739eeca 100644
  
  install-pear:
  	@echo "Installing PEAR environment:      $(INSTALL_ROOT)$(peardir)/"
--- 
-1.9.3
-
diff --git a/meta-oe/recipes-devtools/php/php/phar-makefile.patch b/meta-oe/recipes-devtools/php/php/phar-makefile.patch
index 2f7fe34..336cf0d 100644
--- a/meta-oe/recipes-devtools/php/php/phar-makefile.patch
+++ b/meta-oe/recipes-devtools/php/php/phar-makefile.patch
@@ -1,17 +1,24 @@
-Fix phar packaging
+From 08962a56f69963e01892d98ca5b75de8354bd3f5 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Fix phar packaging
 
 Inherited from OE-Classic, with some additions to fix host paths leaking
 into the target package.
 
 Upstream-Status: Inappropriate [config]
 
+---
+ ext/phar/Makefile.frag | 17 +++--------------
+ 1 file changed, 3 insertions(+), 14 deletions(-)
+
 diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag
-index 6516ddf..36e6cf4 100644
+index 0e3713f..22f7898 100644
 --- a/ext/phar/Makefile.frag
 +++ b/ext/phar/Makefile.frag
-@@ -5,20 +5,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
+@@ -10,20 +10,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
  
- PHP_PHARCMD_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
+ PHP_PHARCMD_SETTINGS = -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
  PHP_PHARCMD_EXECUTABLE = ` \
 -	if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \
 -		$(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \
diff --git a/meta-oe/recipes-devtools/php/php/php_exec_native.patch b/meta-oe/recipes-devtools/php/php/php_exec_native.patch
index 0506bdd..6af0dc8 100644
--- a/meta-oe/recipes-devtools/php/php/php_exec_native.patch
+++ b/meta-oe/recipes-devtools/php/php/php_exec_native.patch
@@ -1,10 +1,17 @@
-Upstream-status: Inappriate
+From d251b5aa3d23803d016ca16818e2e1d2f2b70a02 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Upstream-status: Inappriate
+
+---
+ sapi/cli/config.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/sapi/cli/config.m4 b/sapi/cli/config.m4
-index cdfa1f7..0fe11e3 100644
+index 2168151..20a81db 100644
 --- a/sapi/cli/config.m4
 +++ b/sapi/cli/config.m4
-@@ -36,7 +36,7 @@ if test "$PHP_CLI" != "no"; then
+@@ -50,7 +50,7 @@ if test "$PHP_CLI" != "no"; then
    esac
  
    dnl Set executable for tests
@@ -13,6 +20,3 @@ index cdfa1f7..0fe11e3 100644
    PHP_SUBST(PHP_EXECUTABLE)
  
    dnl Expose to Makefile
--- 
-1.9.3
-
diff --git a/meta-oe/recipes-devtools/php/php_5.6.33.bb b/meta-oe/recipes-devtools/php/php_5.6.33.bb
index cf31238..9c78918 100644
--- a/meta-oe/recipes-devtools/php/php_5.6.33.bb
+++ b/meta-oe/recipes-devtools/php/php_5.6.33.bb
@@ -5,6 +5,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=b602636d46a61c0ac0432bbf5c078fe4"
 SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
             file://pthread-check-threads-m4.patch \
             file://0001-Add-lpthread-to-link.patch \
-           "
+            file://acinclude-xml2-config.patch \
+            file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
+            "
 SRC_URI[md5sum] = "1ba84d9881521065f6398e665786f9e2"
 SRC_URI[sha256sum] = "07f696a9761dcd839e2045c95c3a4d2ffb52c54417477cca9d30a14975b831cc"
+
+DEPENDS += "libmcrypt"
+EXTRA_OECONF += "--with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
+                 " 
diff --git a/meta-oe/recipes-devtools/php/php_7.1.9.bb b/meta-oe/recipes-devtools/php/php_7.2.4.bb
similarity index 52%
rename from meta-oe/recipes-devtools/php/php_7.1.9.bb
rename to meta-oe/recipes-devtools/php/php_7.2.4.bb
index 1d9e35a..e00e1b5 100644
--- a/meta-oe/recipes-devtools/php/php_7.1.9.bb
+++ b/meta-oe/recipes-devtools/php/php_7.2.4.bb
@@ -1,14 +1,14 @@
 require php.inc
 
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c0af599f66d0461c5837c695fcbc5c1e"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=67e369bc8d1f2e641236b8002039a6a2"
 
 SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
-            file://0001-Specify-tag-with-libtool.patch \
-            file://CVE-2017-16642.patch \
-            file://CVE-2018-5711.patch \
+            file://0001-acinclude.m4-skip-binconfig-check-for-libxml.patch \
+            file://0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch \
            "
-SRC_URI[md5sum] = "2397be54f3281cdf30c7ef076b28f7d0"
-SRC_URI[sha256sum] = "314dcc10dfdd7c4443edb4fe1e133a44f2b2a8351be8c9eb6ab9222d45fd9bae"
+
+SRC_URI[md5sum] = "864c64ffd2f1686b035ef8ce6a6d8478"
+SRC_URI[sha256sum] = "11658a0d764dc94023b9fb60d4b5eb75d438ad17981efe70abb0d0d09a447ef3"
 
 PACKAGECONFIG[mysql] = "--with-mysqli=${STAGING_BINDIR_CROSS}/mysql_config \
                         --with-pdo-mysql=${STAGING_BINDIR_CROSS}/mysql_config \
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [meta-oe][PATCH 3/5] php5: upgrade to 5.6.35
  2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 1/5] php: move patches to a single directory Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 2/5] php7: upgrade to 7.2.4 Anuj Mittal
@ 2018-04-03  9:50 ` Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 4/5] php: add opcache extension to PACKAGECONFIG Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 5/5] php: enable opcache by default Anuj Mittal
  4 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

For changes, see:
http://php.net/ChangeLog-5.php#5.6.35

Split patches between php5 and php7 to ensure there are no
fuzz warnings for both the versions.

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 meta-oe/recipes-devtools/php/php.inc               |  2 -
 .../php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch    | 63 ++++++++++++++++++++++
 .../php/php/php5-pear-makefile.patch               | 26 +++++++++
 .../php/php/php5-phar-makefile.patch               | 46 ++++++++++++++++
 .../php/{php_5.6.33.bb => php_5.6.35.bb}           | 12 +++--
 meta-oe/recipes-devtools/php/php_7.2.4.bb          |  4 ++
 6 files changed, 148 insertions(+), 5 deletions(-)
 create mode 100644 meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch
 rename meta-oe/recipes-devtools/php/{php_5.6.33.bb => php_5.6.35.bb} (52%)

diff --git a/meta-oe/recipes-devtools/php/php.inc b/meta-oe/recipes-devtools/php/php.inc
index d2af4f6..fbc750d 100644
--- a/meta-oe/recipes-devtools/php/php.inc
+++ b/meta-oe/recipes-devtools/php/php.inc
@@ -18,8 +18,6 @@ SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
 SRC_URI_append_class-target = " \
             file://iconv.patch \
             file://imap-fix-autofoo.patch \
-            file://pear-makefile.patch \
-            file://phar-makefile.patch \
             file://php_exec_native.patch \
             file://php-fpm.conf \
             file://php-fpm-apache.conf \
diff --git a/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
new file mode 100644
index 0000000..1d21f8c
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
@@ -0,0 +1,63 @@
+From 5f49987e88dfcbdb84be6e0c9025432fbd998709 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Thu, 20 Aug 2015 16:29:35 +0800
+Subject: [PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
+
+Upstream-Status: Pending
+
+AC_TRY_RUN is not suitable for cross-compile
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+%% original patch: change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+
+%% original patch: php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+---
+ ext/fileinfo/config.m4 | 31 ++++++-------------------------
+ 1 file changed, 6 insertions(+), 25 deletions(-)
+
+diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
+index 7e98d62..8a8ea0e 100644
+--- a/ext/fileinfo/config.m4
++++ b/ext/fileinfo/config.m4
+@@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
+     libmagic/readcdf.c libmagic/softmagic.c"
+ 
+   AC_MSG_CHECKING([for strcasestr])
+-  AC_TRY_RUN([
+-#include <string.h>
+-#include <strings.h>
+-#include <stdlib.h>
+-
+-int main(void)
+-{
+-        char *s0, *s1, *ret;
+-
+-        s0 = (char *) malloc(42);
+-        s1 = (char *) malloc(8);
+-
+-        memset(s0, 'X', 42);
+-        s0[24] = 'Y';
+-        s0[26] = 'Z';
+-        s0[41] = '\0';
+-        memset(s1, 'x', 8);
+-        s1[0] = 'y';
+-        s1[2] = 'Z';
+-        s1[7] = '\0';
+-
+-        ret = strcasestr(s0, s1);
+-
+-        return !(NULL != ret);
+-}
++  AC_TRY_COMPILE([
++     #include <string.h>
++     #include <strings.h>
++     #include <stdlib.h>
++  ],[
++     strcasestr(NULL, NULL);
+   ],[
+     dnl using the platform implementation
+     AC_MSG_RESULT(yes)
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch b/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch
new file mode 100644
index 0000000..cff6426
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch
@@ -0,0 +1,26 @@
+From 79725e82d5981fc94eb657f0f46a499dbfc1cc40 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Upstream-status: Unknown
+
+%% original patch: php5-pear-makefile.patch
+---
+ pear/Makefile.frag | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pear/Makefile.frag b/pear/Makefile.frag
+index 00bacae..739eeca 100644
+--- a/pear/Makefile.frag
++++ b/pear/Makefile.frag
+@@ -11,7 +11,7 @@ PEAR_PREFIX = -dp a${program_prefix}
+ PEAR_SUFFIX = -ds a$(program_suffix)
+ 
+ install-pear-installer: $(SAPI_CLI_PATH)
+-	@$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) pear/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
++	@$(PHP_NATIVE_DIR)/php $(PEAR_INSTALL_FLAGS) $(builddir)/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
+ 
+ install-pear:
+ 	@echo "Installing PEAR environment:      $(INSTALL_ROOT)$(peardir)/"
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch b/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch
new file mode 100644
index 0000000..4e1efd4
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch
@@ -0,0 +1,46 @@
+From 3ea626a8d081f56b01004b7992534d4e6b81a9cc Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 16:54:57 +0100
+Subject: [PATCH] Fix phar packaging
+
+Inherited from OE-Classic, with some additions to fix host paths leaking
+into the target package.
+
+Upstream-Status: Inappropriate [config]
+
+%% original patch: php5-phar-makefile.patch
+---
+ ext/phar/Makefile.frag | 17 +++--------------
+ 1 file changed, 3 insertions(+), 14 deletions(-)
+
+diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag
+index b8b1b42..1005b2d 100644
+--- a/ext/phar/Makefile.frag
++++ b/ext/phar/Makefile.frag
+@@ -5,20 +5,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
+ 
+ PHP_PHARCMD_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
+ PHP_PHARCMD_EXECUTABLE = ` \
+-	if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \
+-		$(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \
+-		if test "x$(PHP_MODULES)" != "x"; then \
+-		$(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \
+-		for i in bz2 zlib phar; do \
+-			if test -f "$(top_builddir)/modules/$$i.la"; then \
+-				. $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
+-			fi; \
+-		done; \
+-		fi; \
+-	else \
+-		$(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \
+-	fi;`
+-PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
++		$(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; `
++
++PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
+ 
+ $(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc
+ 	-@test -d $(builddir)/phar || mkdir $(builddir)/phar
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php_5.6.33.bb b/meta-oe/recipes-devtools/php/php_5.6.35.bb
similarity index 52%
rename from meta-oe/recipes-devtools/php/php_5.6.33.bb
rename to meta-oe/recipes-devtools/php/php_5.6.35.bb
index 9c78918..5ccbfa1 100644
--- a/meta-oe/recipes-devtools/php/php_5.6.33.bb
+++ b/meta-oe/recipes-devtools/php/php_5.6.35.bb
@@ -2,14 +2,20 @@ require php.inc
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b602636d46a61c0ac0432bbf5c078fe4"
 
-SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
+SRC_URI += "file://php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
             file://pthread-check-threads-m4.patch \
             file://0001-Add-lpthread-to-link.patch \
             file://acinclude-xml2-config.patch \
             file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
             "
-SRC_URI[md5sum] = "1ba84d9881521065f6398e665786f9e2"
-SRC_URI[sha256sum] = "07f696a9761dcd839e2045c95c3a4d2ffb52c54417477cca9d30a14975b831cc"
+
+SRC_URI_append_class-target = " \
+                                file://php5-pear-makefile.patch \
+                                file://php5-phar-makefile.patch \
+                                "
+
+SRC_URI[md5sum] = "905ae5f586351f3ca29d044c9484d475"
+SRC_URI[sha256sum] = "ee78a7e9ca21d8ea394d037c55effff477a49dbae31c7753c547036f5bd73b92"
 
 DEPENDS += "libmcrypt"
 EXTRA_OECONF += "--with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
diff --git a/meta-oe/recipes-devtools/php/php_7.2.4.bb b/meta-oe/recipes-devtools/php/php_7.2.4.bb
index e00e1b5..1a9c8ff 100644
--- a/meta-oe/recipes-devtools/php/php_7.2.4.bb
+++ b/meta-oe/recipes-devtools/php/php_7.2.4.bb
@@ -6,6 +6,10 @@ SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
             file://0001-acinclude.m4-skip-binconfig-check-for-libxml.patch \
             file://0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch \
            "
+SRC_URI_append_class-target = " \
+                                file://pear-makefile.patch \
+                                file://phar-makefile.patch \
+                                "
 
 SRC_URI[md5sum] = "864c64ffd2f1686b035ef8ce6a6d8478"
 SRC_URI[sha256sum] = "11658a0d764dc94023b9fb60d4b5eb75d438ad17981efe70abb0d0d09a447ef3"
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [meta-oe][PATCH 4/5] php: add opcache extension to PACKAGECONFIG
  2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
                   ` (2 preceding siblings ...)
  2018-04-03  9:50 ` [meta-oe][PATCH 3/5] php5: upgrade to 5.6.35 Anuj Mittal
@ 2018-04-03  9:50 ` Anuj Mittal
  2018-04-03  9:50 ` [meta-oe][PATCH 5/5] php: enable opcache by default Anuj Mittal
  4 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

OPcache improves PHP performance by storing precompiled script bytecode
in shared memory, thereby removing the need for PHP to load and parse
scripts on each request [1].

Add an option to enable opcache in php. AC_CHECK_FUNC isn't suitable for a
cross-compile environment, so pass the configure options instead to force
dlopen detection that is necessary to have extension support enabled.

On a standard phpbench test, I see a performance improvement of > 40%.

[1] http://php.net/manual/en/book.opcache.php

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 meta-oe/recipes-devtools/php/php.inc               |  14 +-
 ...-acinclude.m4-don-t-unset-cache-variables.patch |  39 +++
 .../0001-opcache-config.m4-enable-opcache.patch    | 385 ++++++++++++++++++++
 meta-oe/recipes-devtools/php/php/configure.patch   |  21 --
 ...hp5-0001-opcache-config.m4-enable-opcache.patch | 387 +++++++++++++++++++++
 meta-oe/recipes-devtools/php/php_5.6.35.bb         |   1 +
 meta-oe/recipes-devtools/php/php_7.2.4.bb          |   1 +
 7 files changed, 822 insertions(+), 26 deletions(-)
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
 delete mode 100644 meta-oe/recipes-devtools/php/php/configure.patch
 create mode 100644 meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch

diff --git a/meta-oe/recipes-devtools/php/php.inc b/meta-oe/recipes-devtools/php/php.inc
index fbc750d..8ba218c 100644
--- a/meta-oe/recipes-devtools/php/php.inc
+++ b/meta-oe/recipes-devtools/php/php.inc
@@ -21,7 +21,7 @@ SRC_URI_append_class-target = " \
             file://php_exec_native.patch \
             file://php-fpm.conf \
             file://php-fpm-apache.conf \
-            file://configure.patch \
+            file://0001-acinclude.m4-don-t-unset-cache-variables.patch \
             file://70_mod_php${PHP_MAJOR_VERSION}.conf \
             file://php-fpm.service \
           "
@@ -40,7 +40,6 @@ PHP_LIBDIR = "${libdir}/php${PHP_MAJOR_VERSION}"
 COMMON_EXTRA_OECONF = "--enable-sockets \
                        --enable-pcntl \
                        --enable-shared \
-                       --disable-opcache \
                        --disable-rpath \
                        --with-pic \
                        --libdir=${PHP_LIBDIR} \
@@ -59,6 +58,9 @@ EXTRA_OECONF = "--enable-mbstring \
                 ${@bb.utils.contains('PACKAGECONFIG', 'pam', '', 'ac_cv_lib_pam_pam_start=no', d)} \
                 ${COMMON_EXTRA_OECONF} \
 "
+
+CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes"
+
 EXTRA_OECONF_class-native = " \
                 --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
                 --without-iconv \
@@ -89,7 +91,7 @@ PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
                        ,--without-imap --without-imap-ssl \
                        ,uw-imap"
 PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
+PACKAGECONFIG[opcache] = ",--disable-opcache"
 
 export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
 export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
@@ -196,14 +198,14 @@ php_sysroot_preprocess () {
 
 MODPHP_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', '${PN}-modphp', '', d)}"
 
-PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}"
+PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-opcache ${PN}"
 
 RDEPENDS_${PN} += "libgcc"
 RDEPENDS_${PN}-pear = "${PN}"
 RDEPENDS_${PN}-phar = "${PN}-cli"
 RDEPENDS_${PN}-cli = "${PN}"
 RDEPENDS_${PN}-modphp = "${PN} apache2"
-RDEPENDS_${PN}-dev = "${PN}"
+RDEPENDS_${PN}-opcache = "${PN}"
 
 INITSCRIPT_PACKAGES = "${PN}-fpm"
 inherit update-rc.d
@@ -232,6 +234,8 @@ FILES_${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
                 ${bindir}/php-config ${PHP_LIBDIR}/php/.depdb \
                 ${PHP_LIBDIR}/php/.depdblock ${PHP_LIBDIR}/php/.filemap \
                 ${PHP_LIBDIR}/php/.lock ${PHP_LIBDIR}/php/test"
+FILES_${PN}-staticdev += "${PHP_LIBDIR}/extensions/*/*.a"
+FILES_${PN}-opcache = "${PHP_LIBDIR}/extensions/*/opcache${SOLIBSDEV}"
 FILES_${PN} = "${PHP_LIBDIR}/php"
 FILES_${PN} += "${bindir}"
 
diff --git a/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch b/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
new file mode 100644
index 0000000..a250cac
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
@@ -0,0 +1,39 @@
+From dfebe81f946a83fe2499fc84d4f3dbdc5612276c Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Tue, 3 Apr 2018 11:35:03 +0800
+Subject: [PATCH] acinclude.m4: don't unset cache variables
+
+Unsetting prevents cache variable from being passed to configure.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ acinclude.m4 | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index f6a55ec..d3346df 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -1890,8 +1890,6 @@ define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,]))
+ dnl
+ AC_DEFUN([PHP_CHECK_FUNC_LIB],[
+   ifelse($2,,:,[
+-  unset ac_cv_lib_$2[]_$1
+-  unset ac_cv_lib_$2[]___$1
+   unset found
+   AC_CHECK_LIB($2, $1, [found=yes], [
+     AC_CHECK_LIB($2, __$1, [found=yes], [found=no])
+@@ -1923,8 +1921,6 @@ dnl in the default libraries and as a fall back in the specified library.
+ dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
+ dnl
+ AC_DEFUN([PHP_CHECK_FUNC],[
+-  unset ac_cv_func_$1
+-  unset ac_cv_func___$1
+   unset found
+   
+   AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch b/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
new file mode 100644
index 0000000..0d24d34
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
@@ -0,0 +1,385 @@
+From b2fb725dc404d471371731b663234e87cb0fca84 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Mon, 2 Apr 2018 17:54:52 +0800
+Subject: [PATCH] opcache/config.m4: enable opcache
+
+We can't use AC_TRY_RUN to run programs in a cross compile environment. Set
+the variables directly instead since we know that we'd be running on latest
+enough linux kernel.
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ ext/opcache/config.m4 | 349 ++------------------------------------------------
+ 1 file changed, 8 insertions(+), 341 deletions(-)
+
+diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
+index 7b500f0..10bb99a 100644
+--- a/ext/opcache/config.m4
++++ b/ext/opcache/config.m4
+@@ -28,353 +28,20 @@ if test "$PHP_OPCACHE" != "no"; then
+ 
+   AC_CHECK_HEADERS([unistd.h sys/uio.h])
+ 
+-  AC_MSG_CHECKING(for sysvipc shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/ipc.h>
+-#include <sys/shm.h>
+-#include <unistd.h>
+-#include <string.h>
++  AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+ 
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int ipc_id;
+-  char *shm;
+-  struct shmid_ds shmbuf;
++  AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+ 
+-  ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
+-  if (ipc_id == -1) {
+-    return 1;
+-  }
++  AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
+ 
+-  shm = shmat(ipc_id, NULL, 0);
+-  if (shm == (void *)-1) {
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 2;
+-  }
+-
+-  if (shmctl(ipc_id, IPC_STAT, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 3;
+-  }
+-
+-  shmbuf.shm_perm.uid = getuid();
+-  shmbuf.shm_perm.gid = getgid();
+-  shmbuf.shm_perm.mode = 0600;
+-
+-  if (shmctl(ipc_id, IPC_SET, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 4;
+-  }
+-
+-  shmctl(ipc_id, IPC_RMID, NULL);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-#ifndef MAP_ANON
+-# ifdef MAP_ANONYMOUS
+-#  define MAP_ANON MAP_ANONYMOUS
+-# endif
+-#endif
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  char *shm;
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
+-  if (shm == MAP_FAILED) {
+-    return 1;
+-  }
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-
+-  fd = open("/dev/zero", O_RDWR, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 1;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 2;
+-  }
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using shm_open() shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-  char tmpname[4096];
+-
+-  sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
+-  if (mktemp(tmpname) == NULL) {
+-    return 1;
+-  }
+-  fd = shm_open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 2;
+-  }
+-  if (ftruncate(fd, 4096) < 0) {
+-    close(fd);
+-    shm_unlink(tmpname);
+-    return 3;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 4;
+-  }
+-  shm_unlink(tmpname);
+-  close(fd);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
++  AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
+ 
+   AC_MSG_CHECKING(for mmap() using regular file shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-  char tmpname[4096];
+-
+-  sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
+-  if (mktemp(tmpname) == NULL) {
+-    return 1;
+-  }
+-  fd = open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 2;
+-  }
+-  if (ftruncate(fd, 4096) < 0) {
+-    close(fd);
+-    unlink(tmpname);
+-    return 3;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 4;
+-  }
+-  unlink(tmpname);
+-  close(fd);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-flock_type=unknown
+-AC_MSG_CHECKING("whether flock struct is linux ordered")
+-AC_TRY_RUN([
+-  #include <fcntl.h>
+-  struct flock lock = { 1, 2, 3, 4, 5 };
+-  int main() { 
+-    if(lock.l_type == 1 && lock.l_whence == 2 && lock.l_start == 3 && lock.l_len == 4) {
+-		return 0;
+-    }
+-    return 1;
+-  } 
+-], [
+-	flock_type=linux
+-    AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
+-    AC_MSG_RESULT("yes")
+-], AC_MSG_RESULT("no") )
++  
++  AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
+ 
+-AC_MSG_CHECKING("whether flock struct is BSD ordered")
+-AC_TRY_RUN([
+-  #include <fcntl.h>
+-  struct flock lock = { 1, 2, 3, 4, 5 };
+-  int main() { 
+-    if(lock.l_start == 1 && lock.l_len == 2 && lock.l_type == 4 && lock.l_whence == 5) {
+-		return 0;
+-    }
+-    return 1;
+-  } 
+-], [
+-	flock_type=bsd
+-    AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type]) 
+-    AC_MSG_RESULT("yes")
+-], AC_MSG_RESULT("no") )
++  flock_type=linux
++  AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
+ 
+ if test "$flock_type" = "unknown"; then
+ 	AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php/configure.patch b/meta-oe/recipes-devtools/php/php/configure.patch
deleted file mode 100644
index d9d913f..0000000
--- a/meta-oe/recipes-devtools/php/php/configure.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 617d01ef2ac2f436cd8e06555b608db56079b851 Mon Sep 17 00:00:00 2001
-From: Paul Eggleton <paul.eggleton@linux.intel.com>
-Date: Tue, 17 Jul 2012 11:31:54 +0100
-
----
- configure | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/configure b/configure
-index 1f1ef32..392fb76 100755
---- a/configure
-+++ b/configure
-@@ -11642,8 +11642,6 @@ $as_echo "#define HAVE_LIBNSL 1" >>confdefs.h
- 
- 
- 
--  unset ac_cv_func_dlopen
--  unset ac_cv_func___dlopen
-   unset found
- 
-   ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
diff --git a/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch b/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch
new file mode 100644
index 0000000..7be67ea
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch
@@ -0,0 +1,387 @@
+From fafcfac0933c17e1bf551600080eb0541186caf5 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Mon, 2 Apr 2018 17:54:52 +0800
+Subject: [PATCH] opcache/config.m4: enable opcache
+
+We can't use AC_TRY_RUN to run programs in a cross compile environment. Set
+the variables directly instead since we know that we'd be running on latest
+enough linux kernel.
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+%% original patch: php5-0001-opcache-config.m4-enable-opcache.patch
+---
+ ext/opcache/config.m4 | 349 ++------------------------------------------------
+ 1 file changed, 8 insertions(+), 341 deletions(-)
+
+diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
+index 5a8b86c..6e87fa5 100644
+--- a/ext/opcache/config.m4
++++ b/ext/opcache/config.m4
+@@ -11,353 +11,20 @@ if test "$PHP_OPCACHE" != "no"; then
+     AC_DEFINE(HAVE_MPROTECT, 1, [Define if you have mprotect() function])
+   ])
+ 
+-  AC_MSG_CHECKING(for sysvipc shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/ipc.h>
+-#include <sys/shm.h>
+-#include <unistd.h>
+-#include <string.h>
++  AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+ 
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int ipc_id;
+-  char *shm;
+-  struct shmid_ds shmbuf;
++  AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+ 
+-  ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
+-  if (ipc_id == -1) {
+-    return 1;
+-  }
++  AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
+ 
+-  shm = shmat(ipc_id, NULL, 0);
+-  if (shm == (void *)-1) {
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 2;
+-  }
+-
+-  if (shmctl(ipc_id, IPC_STAT, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 3;
+-  }
+-
+-  shmbuf.shm_perm.uid = getuid();
+-  shmbuf.shm_perm.gid = getgid();
+-  shmbuf.shm_perm.mode = 0600;
+-
+-  if (shmctl(ipc_id, IPC_SET, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 4;
+-  }
+-
+-  shmctl(ipc_id, IPC_RMID, NULL);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-#ifndef MAP_ANON
+-# ifdef MAP_ANONYMOUS
+-#  define MAP_ANON MAP_ANONYMOUS
+-# endif
+-#endif
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  char *shm;
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
+-  if (shm == MAP_FAILED) {
+-    return 1;
+-  }
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-
+-  fd = open("/dev/zero", O_RDWR, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 1;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 2;
+-  }
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using shm_open() shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-  char tmpname[4096];
+-
+-  sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
+-  if (mktemp(tmpname) == NULL) {
+-    return 1;
+-  }
+-  fd = shm_open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 2;
+-  }
+-  if (ftruncate(fd, 4096) < 0) {
+-    close(fd);
+-    shm_unlink(tmpname);
+-    return 3;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 4;
+-  }
+-  shm_unlink(tmpname);
+-  close(fd);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
++  AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
+ 
+   AC_MSG_CHECKING(for mmap() using regular file shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <string.h>
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int fd;
+-  char *shm;
+-  char tmpname[4096];
+-
+-  sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
+-  if (mktemp(tmpname) == NULL) {
+-    return 1;
+-  }
+-  fd = open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+-  if (fd == -1) {
+-    return 2;
+-  }
+-  if (ftruncate(fd, 4096) < 0) {
+-    close(fd);
+-    unlink(tmpname);
+-    return 3;
+-  }
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+-  if (shm == MAP_FAILED) {
+-    return 4;
+-  }
+-  unlink(tmpname);
+-  close(fd);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
+-    AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-flock_type=unknown
+-AC_MSG_CHECKING("whether flock struct is linux ordered")
+-AC_TRY_RUN([
+-  #include <fcntl.h>
+-  struct flock lock = { 1, 2, 3, 4, 5 };
+-  int main() { 
+-    if(lock.l_type == 1 && lock.l_whence == 2 && lock.l_start == 3 && lock.l_len == 4) {
+-		return 0;
+-    }
+-    return 1;
+-  } 
+-], [
+-	flock_type=linux
+-    AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
+-    AC_MSG_RESULT("yes")
+-], AC_MSG_RESULT("no") )
++  
++  AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
+ 
+-AC_MSG_CHECKING("whether flock struct is BSD ordered")
+-AC_TRY_RUN([
+-  #include <fcntl.h>
+-  struct flock lock = { 1, 2, 3, 4, 5 };
+-  int main() { 
+-    if(lock.l_start == 1 && lock.l_len == 2 && lock.l_type == 4 && lock.l_whence == 5) {
+-		return 0;
+-    }
+-    return 1;
+-  } 
+-], [
+-	flock_type=bsd
+-    AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type]) 
+-    AC_MSG_RESULT("yes")
+-], AC_MSG_RESULT("no") )
++  flock_type=linux
++  AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
+ 
+ if test "$flock_type" = "unknown"; then
+ 	AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])
+-- 
+2.7.4
+
diff --git a/meta-oe/recipes-devtools/php/php_5.6.35.bb b/meta-oe/recipes-devtools/php/php_5.6.35.bb
index 5ccbfa1..c17c0d6 100644
--- a/meta-oe/recipes-devtools/php/php_5.6.35.bb
+++ b/meta-oe/recipes-devtools/php/php_5.6.35.bb
@@ -12,6 +12,7 @@ SRC_URI += "file://php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
 SRC_URI_append_class-target = " \
                                 file://php5-pear-makefile.patch \
                                 file://php5-phar-makefile.patch \
+                                file://php5-0001-opcache-config.m4-enable-opcache.patch \
                                 "
 
 SRC_URI[md5sum] = "905ae5f586351f3ca29d044c9484d475"
diff --git a/meta-oe/recipes-devtools/php/php_7.2.4.bb b/meta-oe/recipes-devtools/php/php_7.2.4.bb
index 1a9c8ff..04d9b16 100644
--- a/meta-oe/recipes-devtools/php/php_7.2.4.bb
+++ b/meta-oe/recipes-devtools/php/php_7.2.4.bb
@@ -9,6 +9,7 @@ SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
 SRC_URI_append_class-target = " \
                                 file://pear-makefile.patch \
                                 file://phar-makefile.patch \
+                                file://0001-opcache-config.m4-enable-opcache.patch \
                                 "
 
 SRC_URI[md5sum] = "864c64ffd2f1686b035ef8ce6a6d8478"
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [meta-oe][PATCH 5/5] php: enable opcache by default
  2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
                   ` (3 preceding siblings ...)
  2018-04-03  9:50 ` [meta-oe][PATCH 4/5] php: add opcache extension to PACKAGECONFIG Anuj Mittal
@ 2018-04-03  9:50 ` Anuj Mittal
  4 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2018-04-03  9:50 UTC (permalink / raw)
  To: openembedded-devel

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 meta-oe/recipes-devtools/php/php.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta-oe/recipes-devtools/php/php.inc b/meta-oe/recipes-devtools/php/php.inc
index 8ba218c..066b97c 100644
--- a/meta-oe/recipes-devtools/php/php.inc
+++ b/meta-oe/recipes-devtools/php/php.inc
@@ -67,7 +67,7 @@ EXTRA_OECONF_class-native = " \
                 ${COMMON_EXTRA_OECONF} \
 "
 
-PACKAGECONFIG ??= "mysql sqlite3 imap \
+PACKAGECONFIG ??= "mysql sqlite3 imap opcache \
                    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
 "
 PACKAGECONFIG_class-native = ""
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-04-03  9:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-03  9:50 [meta-oe][PATCH 0/5] Upgrade php versions and enable opcache Anuj Mittal
2018-04-03  9:50 ` [meta-oe][PATCH 1/5] php: move patches to a single directory Anuj Mittal
2018-04-03  9:50 ` [meta-oe][PATCH 2/5] php7: upgrade to 7.2.4 Anuj Mittal
2018-04-03  9:50 ` [meta-oe][PATCH 3/5] php5: upgrade to 5.6.35 Anuj Mittal
2018-04-03  9:50 ` [meta-oe][PATCH 4/5] php: add opcache extension to PACKAGECONFIG Anuj Mittal
2018-04-03  9:50 ` [meta-oe][PATCH 5/5] php: enable opcache by default Anuj Mittal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.