From 77d120e92be73a895596c27a32ede91112048914 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 22 Mar 2013 10:04:26 +0100 Subject: [PATCH] - update to 5.5.0beta1 http://fedoraproject.org/wiki/Features/Php55 - new Zend OPcache extension in php-opccache new sub-package - don't display XFAIL tests in report - use xz compressed tarball - build simplexml and xml extensions shared (moved in php-xml) - build bz2, calendar, ctype, exif, ftp, gettext, iconv sockets and tokenizer extensions shared (in php-common) - build gmp extension shared (in php-gmp new sub-package) - build shmop extension shared (moved in php-process) - drop some old compatibility provides (php-api, php-zend-abi, php-pecl-*) --- .gitignore | 1 + opcache.ini | 95 ++ php-5.4.0-easter.patch | 689 ----------- php-5.4.7-libdb.patch | 24 + php-5.5.0-build.patch | 2579 ++++++++++++++++++++++++++++++++++++++++ php.spec | 262 ++-- sources | 2 +- 7 files changed, 2876 insertions(+), 776 deletions(-) create mode 100644 opcache.ini delete mode 100644 php-5.4.0-easter.patch create mode 100644 php-5.5.0-build.patch diff --git a/.gitignore b/.gitignore index 2f3c9a6..0b9cd09 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ php-5.3*.bz2 /php-5.4.12.tar.bz2 /php-5.4.13RC1.tar.bz2 /php-5.4.13.tar.bz2 +/php-5.5.0beta1.tar.xz diff --git a/opcache.ini b/opcache.ini new file mode 100644 index 0000000..fd1d46d --- /dev/null +++ b/opcache.ini @@ -0,0 +1,95 @@ +; Enable Zend OPcache extension module +zend_extension=@EXTPATH@/opcache.so + +; Determines if Zend OPCache is enabled +opcache.enable=1 + +; The OPcache shared memory storage size. +opcache.memory_consumption=128 + +; The amount of memory for interned strings in Mbytes. +opcache.interned_strings_buffer=8 + +; The maximum number of keys (scripts) in the OPcache hash table. +; Only numbers between 200 and 100000 are allowed. +opcache.max_accelerated_files=4000 + +; The maximum percentage of "wasted" memory until a restart is scheduled. +;opcache.max_wasted_percentage=5 + +; When this directive is enabled, the OPcache appends the current working +; directory to the script key, thus eliminating possible collisions between +; files with the same name (basename). Disabling the directive improves +; performance, but may break existing applications. +;opcache.use_cwd=1 + +; When disabled, you must reset the OPcache manually or restart the +; webserver for changes to the filesystem to take effect. +;opcache.validate_timestamps=1 + +; How often (in seconds) to check file timestamps for changes to the shared +; memory storage allocation. ("1" means validate once per second, but only +; once per request. "0" means always validate) +;opcache.revalidate_freq=2 + +; Enables or disables file search in include_path optimization +;opcache.revalidate_path=0 + +; If disabled, all PHPDoc comments are dropped from the code to reduce the + ;size of the optimized code. +;opcache.save_comments=1 + +; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments" +; may be always stored (save_comments=1), but not loaded by applications +; that don't need them anyway. +;opcache.load_comments=1 + +; If enabled, a fast shutdown sequence is used for the accelerated code +opcache.fast_shutdown=1 + +; Allow file existence override (file_exists, etc.) performance feature. +;opcache.enable_file_override=0 + +; A bitmask, where each bit enables or disables the appropriate OPcache +; passes +;opcache.optimization_level=0xffffffff + +;opcache.inherited_hack=1 +;opcache.dups_fix=0 + +; The location of the OPcache blacklist file. +; The OPcache blacklist file is a text file that holds the names of files +; that should not be accelerated. The file format is to add each filename +; to a new line. The filename may be a full path or just a file prefix +; (i.e., /var/www/x blacklists all the files and directories in /var/www +; that start with 'x'). +;opcache.blacklist_filename= + +; Allows exclusion of large files from being cached. By default all files +; are cached. +;opcache.max_file_size=0 + +; Check the cache checksum each N requests. +; The default value of "0" means that the checks are disabled. +;opcache.consistency_checks=0 + +; How long to wait (in seconds) for a scheduled restart to begin if the cache +; is not being accessed. +;opcache.force_restart_timeout=180 + +; OPcache error_log file name. Empty string assumes "stderr". +;opcache.error_log= + +; All OPcache errors go to the Web server log. +; By default, only fatal errors (level 0) or errors (level 1) are logged. +; You can also enable warnings (level 2), info messages (level 3) or +; debug messages (level 4). +;opcache.log_verbosity_level=1 + +; Preferred Shared Memory back-end. Leave empty and let the system decide. +;opcache.preferred_memory_model= + +; Protect the shared memory from unexpected writing during script execution. +; Useful for internal debugging only. +;opcache.protect_memory=0 + diff --git a/php-5.4.0-easter.patch b/php-5.4.0-easter.patch deleted file mode 100644 index 6ca8f92..0000000 --- a/php-5.4.0-easter.patch +++ /dev/null @@ -1,689 +0,0 @@ -diff -up php-5.4.0RC5/ext/standard/basic_functions.c.easter php-5.4.0RC5/ext/standard/basic_functions.c ---- php-5.4.0RC5/ext/standard/basic_functions.c.easter 2012-01-18 17:17:54.016033939 +0100 -+++ php-5.4.0RC5/ext/standard/basic_functions.c 2012-01-18 17:18:54.022036314 +0100 -@@ -1554,9 +1554,6 @@ ZEND_END_ARG_INFO() - ZEND_BEGIN_ARG_INFO(arginfo_php_real_logo_guid, 0) - ZEND_END_ARG_INFO() - --ZEND_BEGIN_ARG_INFO(arginfo_php_egg_logo_guid, 0) --ZEND_END_ARG_INFO() -- - ZEND_BEGIN_ARG_INFO(arginfo_zend_logo_guid, 0) - ZEND_END_ARG_INFO() - -@@ -2719,7 +2716,6 @@ const zend_function_entry basic_function - PHP_FE(phpcredits, arginfo_phpcredits) - PHP_FE(php_logo_guid, arginfo_php_logo_guid) - PHP_FE(php_real_logo_guid, arginfo_php_real_logo_guid) -- PHP_FE(php_egg_logo_guid, arginfo_php_egg_logo_guid) - PHP_FE(zend_logo_guid, arginfo_zend_logo_guid) - PHP_FE(php_sapi_name, arginfo_php_sapi_name) - PHP_FE(php_uname, arginfo_php_uname) -diff -up php-5.4.0RC5/ext/standard/info.c.easter php-5.4.0RC5/ext/standard/info.c ---- php-5.4.0RC5/ext/standard/info.c.easter 2012-01-18 17:17:44.712033203 +0100 -+++ php-5.4.0RC5/ext/standard/info.c 2012-01-18 17:19:58.097039189 +0100 -@@ -1195,21 +1195,7 @@ PHP_FUNCTION(phpcredits) - */ - PHPAPI char *php_logo_guid(void) - { -- char *logo_guid; -- -- time_t the_time; -- struct tm *ta, tmbuf; -- -- the_time = time(NULL); -- ta = php_localtime_r(&the_time, &tmbuf); -- -- if (ta && (ta->tm_mon==3) && (ta->tm_mday==1)) { -- logo_guid = PHP_EGG_LOGO_GUID; -- } else { -- logo_guid = PHP_LOGO_GUID; -- } -- -- return estrdup(logo_guid); -+ return estrdup(PHP_LOGO_GUID); - - } - /* }}} */ -@@ -1238,18 +1224,6 @@ PHP_FUNCTION(php_real_logo_guid) - } - /* }}} */ - --/* {{{ proto string php_egg_logo_guid(void) -- Return the special ID used to request the PHP logo in phpinfo screens*/ --PHP_FUNCTION(php_egg_logo_guid) --{ -- if (zend_parse_parameters_none() == FAILURE) { -- return; -- } -- -- RETURN_STRINGL(PHP_EGG_LOGO_GUID, sizeof(PHP_EGG_LOGO_GUID)-1, 1); --} --/* }}} */ -- - /* {{{ proto string zend_logo_guid(void) - Return the special ID used to request the Zend logo in phpinfo screens*/ - PHP_FUNCTION(zend_logo_guid) -diff -up php-5.4.0RC5/ext/standard/info.h.easter php-5.4.0RC5/ext/standard/info.h ---- php-5.4.0RC5/ext/standard/info.h.easter 2012-01-18 17:17:37.245032832 +0100 -+++ php-5.4.0RC5/ext/standard/info.h 2012-01-18 17:20:17.160040044 +0100 -@@ -51,7 +51,6 @@ - #endif /* HAVE_CREDITS_DEFS */ - - #define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42" --#define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42" - #define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42" - #define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000" - -@@ -62,7 +61,6 @@ PHP_FUNCTION(phpcredits); - PHP_FUNCTION(php_logo_guid); - PHP_FUNCTION(php_real_logo_guid); - PHP_FUNCTION(zend_logo_guid); --PHP_FUNCTION(php_egg_logo_guid); - PHP_FUNCTION(php_sapi_name); - PHP_FUNCTION(php_uname); - PHP_FUNCTION(php_ini_scanned_files); -diff -up php-5.4.0RC5/main/logos.h.easter php-5.4.0RC5/main/logos.h ---- php-5.4.0RC5/main/logos.h.easter 2012-01-18 17:17:27.975032470 +0100 -+++ php-5.4.0RC5/main/logos.h 2012-01-18 17:21:27.036043180 +0100 -@@ -492,589 +492,3 @@ static const unsigned char php_logo[] = - 21, 116, 187, 251, 221, 240, 142, 119, 188, 3, - 1, 0, 59, 0 }; - --static const unsigned char php_egg_logo[] = { -- 71, 73, 70, 56, 57, 97, 120, 0, 67, 0, -- 231, 255, 0, 18, 25, 33, 32, 30, 34, 28, -- 33, 44, 15, 35, 71, 6, 37, 85, 37, 40, -- 47, 34, 41, 53, 41, 40, 43, 9, 47, 109, -- 30, 45, 68, 21, 48, 84, 51, 46, 55, 43, -- 49, 59, 31, 59, 98, 15, 61, 128, 58, 55, -- 69, 50, 57, 74, 0, 66, 144, 56, 58, 60, -- 54, 59, 71, 32, 66, 113, 60, 65, 67, 63, -- 65, 84, 63, 68, 79, 28, 79, 145, 15, 82, -- 162, 75, 72, 98, 68, 78, 86, 74, 77, 88, -- 50, 82, 122, 41, 85, 134, 76, 78, 108, 70, -- 83, 101, 5, 94, 190, 0, 95, 197, 86, 80, -- 101, 28, 92, 159, 80, 84, 96, 83, 83, 115, -- 81, 87, 89, 22, 97, 183, 86, 88, 85, 0, -- 102, 210, 8, 101, 204, 24, 100, 177, 85, 90, -- 127, 35, 101, 169, 42, 100, 159, 88, 92, 103, -- 0, 107, 216, 69, 95, 132, 0, 108, 210, 84, -- 93, 112, 94, 90, 117, 18, 105, 201, 96, 92, -- 105, 89, 96, 98, 94, 93, 135, 94, 94, 126, -- 30, 106, 210, 7, 112, 222, 33, 108, 198, 16, -- 114, 217, 27, 113, 198, 24, 113, 209, 59, 108, -- 159, 96, 100, 138, 0, 120, 229, 44, 112, 180, -- 49, 112, 171, 71, 108, 148, 99, 104, 115, 90, -- 106, 125, 27, 115, 232, 100, 102, 147, 42, 115, -- 192, 86, 110, 137, 9, 123, 239, 106, 108, 105, -- 105, 105, 138, 33, 118, 228, 12, 125, 227, 48, -- 117, 208, 16, 126, 222, 37, 120, 224, 20, 125, -- 235, 35, 123, 213, 50, 121, 190, 43, 123, 206, -- 40, 123, 220, 105, 110, 160, 59, 122, 182, 78, -- 119, 158, 44, 122, 233, 3, 134, 250, 112, 112, -- 151, 73, 123, 175, 113, 118, 114, 51, 128, 205, -- 34, 129, 246, 11, 136, 245, 34, 130, 240, 113, -- 117, 149, 111, 116, 166, 111, 119, 141, 48, 130, -- 221, 38, 132, 235, 53, 130, 215, 97, 124, 146, -- 116, 122, 124, 117, 121, 131, 54, 130, 229, 41, -- 135, 232, 68, 130, 223, 46, 135, 246, 65, 134, -- 202, 42, 137, 241, 75, 131, 205, 124, 121, 161, -- 101, 125, 191, 86, 128, 210, 121, 122, 169, 105, -- 128, 157, 121, 122, 180, 114, 124, 181, 94, 128, -- 201, 81, 134, 185, 46, 138, 252, 76, 135, 195, -- 34, 142, 252, 62, 137, 229, 63, 138, 217, 33, -- 144, 247, 58, 139, 223, 56, 141, 246, 54, 143, -- 234, 57, 143, 241, 102, 135, 193, 129, 130, 176, -- 122, 136, 144, 46, 148, 252, 45, 149, 246, 118, -- 133, 191, 65, 146, 231, 73, 146, 216, 129, 133, -- 185, 135, 135, 156, 69, 148, 226, 44, 153, 255, -- 94, 143, 216, 132, 136, 175, 88, 146, 207, 137, -- 139, 136, 93, 146, 197, 95, 147, 188, 137, 139, -- 150, 104, 146, 178, 122, 143, 172, 135, 139, 191, -- 57, 156, 254, 67, 154, 245, 70, 154, 239, 134, -- 141, 180, 117, 145, 201, 120, 146, 190, 79, 154, -- 233, 140, 141, 188, 129, 144, 194, 142, 142, 176, -- 137, 147, 156, 88, 155, 222, 82, 157, 230, 93, -- 157, 218, 66, 162, 253, 100, 157, 210, 77, 161, -- 247, 55, 168, 255, 81, 162, 241, 148, 148, 195, -- 145, 149, 202, 127, 156, 204, 77, 166, 255, 142, -- 155, 177, 141, 153, 200, 123, 160, 193, 73, 171, -- 255, 93, 167, 240, 96, 167, 234, 152, 158, 160, -- 101, 167, 228, 119, 164, 206, 155, 158, 171, 110, -- 167, 219, 156, 155, 203, 89, 172, 252, 128, 164, -- 219, 151, 163, 174, 81, 178, 255, 158, 162, 202, -- 102, 175, 249, 93, 178, 251, 108, 175, 237, 103, -- 177, 244, 166, 168, 165, 97, 182, 255, 87, 185, -- 255, 149, 174, 216, 125, 181, 235, 110, 185, 252, -- 117, 183, 254, 171, 172, 209, 166, 175, 197, 103, -- 190, 255, 174, 176, 189, 140, 183, 221, 128, 184, -- 248, 120, 187, 249, 179, 180, 184, 115, 193, 253, -- 170, 183, 193, 174, 181, 215, 107, 197, 255, 135, -- 191, 246, 151, 192, 219, 187, 183, 213, 128, 197, -- 253, 121, 202, 255, 147, 198, 239, 188, 191, 219, -- 148, 200, 252, 192, 193, 197, 134, 205, 254, 171, -- 199, 236, 183, 199, 218, 163, 207, 251, 142, 213, -- 255, 158, 211, 253, 195, 205, 217, 166, 211, 245, -- 205, 204, 228, 153, 218, 255, 190, 210, 236, 186, -- 212, 231, 177, 213, 248, 162, 224, 255, 188, 221, -- 250, 214, 219, 221, 214, 219, 233, 174, 229, 254, -- 198, 225, 247, 209, 226, 248, 186, 233, 251, 227, -- 230, 239, 225, 241, 252, 253, 255, 252, 255, 255, -- 255, 33, 249, 4, 1, 10, 0, 255, 0, 44, -- 0, 0, 0, 0, 120, 0, 67, 0, 0, 8, -- 254, 0, 255, 9, 28, 72, 176, 160, 193, 131, -- 8, 19, 42, 92, 200, 176, 161, 195, 135, 16, -- 35, 74, 156, 72, 177, 162, 197, 139, 22, 131, -- 105, 12, 134, 177, 163, 199, 143, 193, 164, 73, -- 227, 38, 141, 28, 56, 112, 228, 76, 146, 20, -- 41, 205, 152, 75, 99, 183, 100, 201, 50, 101, -- 202, 147, 77, 79, 166, 102, 205, 250, 200, 19, -- 100, 73, 114, 239, 238, 221, 123, 71, 148, 104, -- 202, 163, 224, 86, 138, 124, 25, 115, 166, 205, -- 72, 145, 246, 72, 221, 195, 39, 207, 30, 69, -- 158, 118, 246, 220, 202, 208, 24, 184, 160, 252, -- 248, 9, 29, 59, 212, 100, 75, 99, 53, 159, -- 66, 93, 203, 182, 109, 84, 169, 124, 248, 156, -- 57, 163, 165, 174, 150, 60, 138, 76, 113, 221, -- 251, 207, 24, 183, 119, 97, 3, 135, 125, 71, -- 78, 90, 76, 62, 142, 70, 141, 18, 53, 109, -- 170, 227, 199, 144, 35, 75, 157, 91, 87, 137, -- 229, 28, 74, 190, 228, 229, 139, 209, 43, 96, -- 193, 247, 10, 203, 114, 212, 167, 82, 47, 93, -- 197, 138, 81, 163, 166, 173, 19, 47, 201, 176, -- 99, 59, 166, 171, 36, 135, 237, 22, 45, 114, -- 216, 209, 203, 25, 98, 176, 191, 66, 195, 134, -- 54, 230, 233, 150, 179, 100, 197, 106, 181, 90, -- 158, 171, 57, 179, 110, 231, 124, 185, 145, 77, -- 157, 186, 150, 218, 45, 76, 104, 111, 145, 71, -- 86, 239, 133, 198, 200, 254, 145, 189, 199, 205, -- 212, 212, 115, 244, 232, 157, 107, 86, 172, 185, -- 234, 92, 197, 154, 137, 11, 231, 11, 77, 245, -- 251, 178, 207, 40, 201, 254, 225, 131, 134, 39, -- 138, 124, 103, 80, 73, 68, 13, 37, 141, 39, -- 144, 213, 115, 14, 60, 235, 116, 211, 12, 123, -- 197, 136, 67, 141, 106, 226, 156, 51, 78, 16, -- 92, 208, 194, 7, 126, 28, 70, 166, 159, 9, -- 26, 132, 104, 130, 29, 2, 254, 67, 32, 81, -- 224, 200, 18, 91, 56, 240, 208, 35, 78, 51, -- 238, 49, 40, 223, 58, 240, 88, 99, 132, 31, -- 207, 168, 131, 14, 55, 206, 56, 115, 203, 41, -- 167, 172, 229, 73, 36, 158, 196, 133, 216, 83, -- 29, 58, 166, 69, 11, 26, 88, 96, 129, 6, -- 95, 112, 230, 213, 81, 210, 188, 21, 27, 59, -- 208, 208, 179, 14, 123, 205, 81, 227, 96, 55, -- 235, 208, 227, 14, 23, 126, 244, 162, 204, 49, -- 200, 64, 3, 13, 51, 194, 232, 162, 139, 50, -- 105, 106, 131, 13, 54, 225, 132, 227, 205, 157, -- 207, 96, 243, 204, 48, 195, 244, 72, 28, 126, -- 103, 48, 233, 164, 6, 36, 246, 20, 210, 81, -- 198, 224, 87, 143, 48, 12, 78, 8, 75, 43, -- 242, 21, 3, 38, 60, 227, 116, 224, 2, 22, -- 135, 32, 162, 41, 33, 112, 208, 129, 72, 35, -- 135, 8, 242, 72, 40, 163, 150, 82, 202, 42, -- 186, 172, 178, 203, 46, 169, 170, 154, 76, 50, -- 254, 123, 158, 194, 97, 14, 22, 60, 240, 192, -- 7, 188, 117, 228, 23, 74, 198, 88, 41, 219, -- 56, 189, 36, 19, 203, 57, 235, 80, 147, 11, -- 44, 176, 20, 211, 96, 51, 240, 192, 195, 14, -- 5, 36, 88, 129, 8, 33, 116, 200, 81, 198, -- 181, 101, 208, 1, 199, 27, 220, 110, 59, 69, -- 22, 130, 20, 82, 200, 35, 165, 76, 34, 110, -- 33, 147, 64, 162, 174, 42, 192, 200, 122, 223, -- 25, 38, 216, 186, 192, 19, 24, 133, 52, 82, -- 149, 247, 161, 179, 203, 35, 136, 8, 243, 72, -- 57, 244, 80, 179, 220, 39, 185, 192, 163, 77, -- 55, 244, 236, 227, 14, 5, 17, 0, 65, 7, -- 25, 101, 120, 81, 197, 196, 216, 82, 97, 49, -- 21, 81, 68, 145, 69, 22, 105, 116, 236, 113, -- 26, 161, 148, 59, 136, 24, 98, 64, 210, 203, -- 40, 28, 106, 161, 193, 2, 11, 88, 144, 171, -- 68, 246, 74, 163, 226, 125, 207, 156, 105, 8, -- 25, 212, 54, 218, 202, 39, 4, 227, 115, 142, -- 54, 233, 177, 211, 65, 4, 51, 84, 113, 109, -- 21, 77, 52, 1, 69, 23, 19, 15, 1, 197, -- 16, 84, 12, 17, 197, 182, 112, 8, 146, 198, -- 20, 86, 147, 139, 204, 49, 169, 78, 50, 200, -- 32, 144, 56, 210, 97, 14, 15, 176, 28, 37, -- 204, 198, 180, 228, 107, 108, 158, 60, 19, 202, -- 43, 159, 200, 225, 133, 28, 175, 224, 3, 15, -- 50, 176, 80, 2, 75, 254, 51, 94, 34, 140, -- 143, 208, 68, 119, 129, 45, 210, 93, 48, 13, -- 197, 210, 60, 240, 0, 133, 15, 111, 104, 138, -- 8, 28, 27, 79, 1, 199, 35, 163, 234, 18, -- 139, 155, 233, 206, 177, 97, 202, 22, 28, 112, -- 128, 14, 17, 5, 227, 210, 204, 213, 69, 178, -- 11, 40, 160, 16, 194, 8, 33, 134, 52, 17, -- 142, 122, 197, 236, 156, 11, 51, 185, 52, 3, -- 244, 62, 128, 207, 16, 49, 182, 93, 36, 125, -- 120, 23, 135, 67, 193, 131, 15, 112, 148, 147, -- 143, 58, 216, 8, 3, 249, 198, 89, 192, 1, -- 199, 33, 143, 196, 18, 203, 42, 144, 104, 222, -- 33, 31, 26, 120, 62, 194, 67, 162, 255, 121, -- 159, 35, 149, 104, 58, 135, 21, 100, 64, 92, -- 69, 139, 198, 238, 156, 236, 222, 226, 208, 131, -- 207, 56, 13, 56, 80, 116, 19, 215, 54, 81, -- 197, 24, 73, 23, 126, 248, 16, 62, 248, 144, -- 133, 62, 110, 112, 194, 50, 202, 113, 8, 231, -- 101, 193, 7, 64, 152, 220, 184, 30, 129, 42, -- 93, 168, 66, 108, 29, 50, 129, 231, 52, 208, -- 16, 89, 220, 162, 87, 248, 137, 68, 29, 178, -- 160, 6, 53, 188, 225, 5, 85, 176, 86, 21, -- 232, 1, 15, 113, 228, 98, 57, 173, 104, 143, -- 151, 224, 241, 190, 248, 249, 160, 126, 114, 136, -- 161, 181, 202, 16, 53, 167, 13, 97, 120, 105, -- 184, 7, 7, 12, 224, 4, 111, 192, 65, 114, -- 254, 144, 3, 66, 26, 14, 145, 6, 43, 88, -- 1, 11, 107, 128, 196, 42, 86, 1, 65, 14, -- 181, 224, 0, 1, 160, 160, 66, 100, 114, 139, -- 181, 197, 230, 22, 117, 152, 194, 20, 162, 160, -- 134, 42, 144, 64, 10, 248, 163, 67, 122, 214, -- 17, 187, 79, 232, 45, 23, 226, 16, 7, 62, -- 240, 97, 13, 5, 16, 109, 12, 215, 98, 4, -- 207, 64, 193, 51, 77, 53, 66, 83, 84, 240, -- 65, 26, 218, 113, 1, 3, 180, 1, 27, 144, -- 19, 196, 183, 128, 128, 196, 66, 132, 98, 13, -- 63, 72, 228, 15, 176, 32, 134, 68, 52, 241, -- 62, 45, 8, 64, 0, 106, 144, 144, 89, 152, -- 66, 22, 8, 186, 207, 40, 214, 32, 8, 107, -- 216, 194, 5, 67, 144, 218, 15, 134, 208, 5, -- 68, 184, 15, 30, 205, 120, 148, 25, 97, 1, -- 157, 125, 208, 227, 25, 3, 136, 64, 12, 232, -- 215, 136, 121, 200, 35, 31, 249, 168, 71, 61, -- 242, 33, 143, 118, 108, 67, 30, 208, 128, 195, -- 32, 218, 49, 1, 1, 180, 1, 121, 199, 120, -- 197, 35, 136, 184, 134, 102, 146, 11, 137, 88, -- 80, 228, 37, 104, 145, 36, 13, 72, 178, 80, -- 5, 153, 5, 78, 50, 73, 157, 72, 92, 98, -- 13, 135, 208, 135, 63, 252, 129, 132, 40, 116, -- 193, 105, 192, 11, 5, 62, 92, 217, 140, 157, -- 49, 162, 21, 104, 60, 199, 62, 224, 225, 10, -- 2, 68, 128, 10, 114, 254, 32, 196, 49, 178, -- 113, 129, 11, 112, 224, 159, 37, 224, 192, 6, -- 46, 176, 129, 108, 148, 99, 21, 213, 40, 230, -- 1, 78, 128, 3, 55, 240, 34, 29, 216, 8, -- 197, 36, 122, 81, 10, 114, 61, 2, 93, 107, -- 136, 230, 28, 230, 96, 13, 43, 202, 230, 1, -- 1, 56, 128, 119, 10, 146, 150, 251, 240, 65, -- 21, 88, 200, 194, 60, 198, 233, 143, 84, 164, -- 193, 104, 72, 43, 195, 49, 214, 8, 143, 216, -- 49, 226, 157, 197, 208, 70, 251, 216, 193, 5, -- 2, 100, 160, 10, 129, 64, 4, 54, 54, 81, -- 2, 24, 148, 128, 6, 48, 160, 193, 81, 3, -- 202, 0, 115, 120, 99, 19, 19, 40, 128, 1, -- 74, 208, 79, 6, 20, 32, 12, 222, 8, 133, -- 45, 136, 241, 141, 103, 232, 194, 84, 143, 72, -- 195, 15, 196, 112, 9, 87, 248, 226, 22, 28, -- 58, 3, 20, 183, 71, 144, 89, 16, 201, 163, -- 145, 185, 68, 74, 7, 145, 130, 106, 140, 83, -- 15, 136, 40, 131, 181, 154, 48, 6, 111, 140, -- 145, 61, 173, 72, 214, 131, 210, 83, 41, 2, -- 160, 128, 12, 140, 104, 68, 57, 220, 80, 212, -- 106, 224, 50, 151, 250, 248, 69, 9, 24, 208, -- 6, 126, 28, 225, 2, 1, 32, 70, 53, 126, -- 193, 88, 1, 0, 96, 17, 165, 96, 2, 65, -- 113, 16, 6, 76, 96, 98, 27, 202, 16, 43, -- 89, 51, 193, 10, 82, 108, 174, 58, 38, 144, -- 254, 228, 203, 134, 4, 87, 200, 220, 1, 11, -- 64, 160, 66, 16, 12, 80, 128, 118, 216, 195, -- 5, 141, 40, 31, 182, 216, 145, 30, 23, 181, -- 135, 149, 212, 8, 19, 60, 188, 145, 0, 4, -- 100, 225, 19, 59, 155, 7, 13, 78, 80, 130, -- 109, 60, 67, 24, 141, 128, 67, 33, 204, 81, -- 130, 2, 84, 224, 30, 37, 152, 128, 4, 242, -- 113, 167, 121, 216, 162, 152, 39, 120, 6, 8, -- 4, 192, 128, 13, 112, 160, 159, 6, 192, 68, -- 41, 122, 240, 131, 65, 0, 2, 16, 115, 48, -- 171, 51, 238, 3, 69, 41, 254, 195, 173, 181, -- 125, 12, 31, 122, 0, 132, 25, 248, 192, 3, -- 211, 56, 0, 13, 54, 145, 5, 50, 236, 149, -- 126, 236, 104, 17, 60, 186, 113, 44, 73, 73, -- 120, 29, 174, 136, 37, 28, 102, 215, 10, 121, -- 208, 192, 13, 71, 72, 135, 50, 38, 22, 133, -- 66, 164, 163, 187, 12, 216, 6, 7, 24, 112, -- 132, 114, 192, 33, 13, 144, 248, 69, 1, 0, -- 112, 2, 98, 126, 54, 30, 211, 32, 6, 26, -- 120, 11, 12, 32, 244, 64, 12, 115, 240, 195, -- 18, 174, 0, 8, 87, 144, 226, 20, 164, 147, -- 76, 36, 3, 48, 82, 243, 4, 120, 42, 3, -- 182, 193, 10, 86, 48, 3, 18, 20, 32, 0, -- 2, 32, 129, 26, 200, 80, 133, 194, 53, 129, -- 12, 236, 160, 17, 60, 210, 7, 11, 113, 172, -- 227, 204, 225, 144, 129, 254, 97, 65, 33, 12, -- 129, 165, 131, 3, 55, 112, 131, 45, 142, 81, -- 5, 42, 188, 225, 17, 237, 88, 241, 2, 36, -- 107, 128, 69, 196, 66, 13, 130, 120, 6, 26, -- 60, 187, 136, 106, 120, 22, 23, 186, 224, 90, -- 60, 12, 0, 0, 78, 76, 161, 7, 88, 152, -- 67, 16, 92, 176, 4, 34, 92, 97, 11, 91, -- 200, 132, 53, 204, 35, 153, 51, 72, 146, 94, -- 255, 120, 242, 84, 60, 177, 4, 41, 171, 64, -- 5, 59, 0, 2, 5, 18, 128, 1, 56, 220, -- 236, 90, 189, 83, 3, 59, 206, 97, 230, 102, -- 64, 55, 23, 201, 61, 179, 55, 26, 128, 128, -- 52, 188, 162, 24, 204, 128, 196, 52, 56, 0, -- 131, 77, 88, 67, 24, 132, 64, 196, 33, 212, -- 241, 139, 11, 20, 224, 8, 104, 184, 128, 0, -- 170, 129, 8, 53, 100, 193, 25, 16, 0, 0, -- 0, 182, 49, 104, 6, 36, 67, 153, 143, 184, -- 68, 2, 0, 192, 133, 52, 160, 0, 11, 87, -- 120, 129, 11, 88, 192, 110, 18, 144, 128, 8, -- 153, 118, 70, 162, 34, 99, 129, 40, 10, 196, -- 164, 128, 232, 193, 10, 98, 16, 131, 29, 248, -- 27, 8, 133, 224, 32, 33, 132, 123, 173, 70, -- 172, 35, 141, 235, 64, 6, 116, 97, 65, 172, -- 51, 103, 98, 0, 25, 120, 133, 48, 218, 163, -- 138, 84, 252, 51, 27, 232, 160, 6, 51, 160, -- 193, 142, 108, 28, 97, 2, 12, 176, 7, 18, -- 254, 250, 136, 142, 14, 102, 161, 19, 140, 102, -- 64, 59, 178, 189, 1, 109, 188, 34, 20, 133, -- 240, 131, 103, 57, 113, 136, 31, 44, 97, 14, -- 91, 32, 1, 187, 89, 224, 110, 23, 144, 160, -- 8, 96, 240, 3, 46, 146, 44, 149, 15, 4, -- 96, 1, 247, 174, 206, 41, 176, 96, 131, 29, -- 240, 32, 6, 42, 224, 247, 14, 124, 16, 5, -- 58, 88, 221, 193, 85, 240, 2, 51, 194, 113, -- 142, 110, 72, 40, 23, 202, 233, 70, 179, 202, -- 209, 1, 2, 212, 129, 25, 108, 202, 133, 55, -- 208, 192, 129, 18, 152, 227, 30, 230, 216, 6, -- 49, 156, 64, 108, 8, 164, 226, 30, 48, 152, -- 192, 6, 158, 65, 7, 53, 88, 1, 9, 158, -- 61, 194, 52, 102, 76, 12, 109, 8, 35, 22, -- 144, 232, 196, 161, 225, 32, 134, 43, 92, 161, -- 8, 47, 120, 1, 17, 212, 237, 110, 12, 252, -- 28, 211, 156, 128, 140, 18, 36, 41, 144, 215, -- 194, 198, 19, 115, 0, 194, 10, 84, 192, 131, -- 33, 240, 187, 223, 62, 160, 66, 178, 7, 14, -- 49, 50, 208, 233, 96, 231, 152, 16, 123, 230, -- 83, 142, 12, 59, 32, 22, 26, 103, 70, 43, -- 230, 1, 130, 182, 95, 128, 6, 19, 184, 64, -- 240, 139, 234, 134, 120, 84, 99, 197, 109, 240, -- 134, 26, 232, 80, 7, 11, 104, 123, 27, 72, -- 0, 192, 6, 228, 49, 14, 61, 165, 131, 6, -- 0, 144, 0, 43, 4, 254, 49, 136, 43, 16, -- 33, 8, 30, 136, 60, 188, 225, 237, 238, 23, -- 20, 97, 11, 153, 127, 204, 230, 3, 240, 223, -- 234, 140, 2, 11, 83, 142, 58, 15, 202, 80, -- 133, 167, 199, 96, 8, 141, 128, 155, 33, 62, -- 65, 6, 67, 112, 29, 26, 21, 114, 14, 204, -- 144, 83, 212, 112, 14, 222, 80, 118, 98, 128, -- 12, 180, 35, 12, 185, 32, 15, 16, 0, 103, -- 71, 0, 98, 71, 0, 3, 48, 224, 6, 219, -- 48, 15, 143, 32, 9, 28, 48, 1, 188, 80, -- 14, 84, 160, 6, 137, 192, 104, 23, 144, 14, -- 217, 38, 1, 188, 112, 130, 188, 0, 3, 152, -- 149, 10, 230, 50, 8, 150, 22, 4, 50, 0, -- 6, 91, 64, 4, 46, 224, 2, 145, 7, 126, -- 65, 16, 4, 91, 128, 11, 234, 199, 121, 255, -- 16, 23, 178, 81, 7, 82, 32, 2, 168, 22, -- 3, 62, 48, 4, 100, 160, 6, 79, 23, 5, -- 135, 240, 10, 173, 48, 45, 251, 7, 13, 231, -- 160, 38, 102, 118, 14, 117, 82, 39, 126, 0, -- 113, 186, 128, 12, 12, 88, 11, 185, 176, 13, -- 19, 112, 3, 37, 192, 15, 185, 84, 15, 243, -- 16, 15, 234, 112, 12, 136, 80, 10, 237, 64, -- 12, 196, 112, 15, 215, 64, 5, 112, 128, 11, -- 22, 208, 103, 182, 32, 1, 0, 192, 0, 239, -- 5, 80, 23, 208, 6, 207, 80, 8, 96, 3, -- 111, 70, 128, 6, 118, 192, 4, 96, 0, 121, -- 254, 36, 240, 2, 96, 176, 33, 150, 192, 5, -- 92, 224, 43, 235, 39, 16, 103, 224, 121, 144, -- 49, 10, 63, 48, 3, 163, 23, 3, 195, 243, -- 129, 101, 160, 6, 169, 247, 10, 200, 0, 10, -- 204, 209, 10, 194, 16, 14, 201, 195, 34, 7, -- 151, 12, 225, 0, 12, 10, 224, 0, 147, 160, -- 13, 180, 227, 133, 208, 240, 11, 196, 230, 6, -- 253, 112, 12, 159, 208, 119, 86, 103, 8, 214, -- 246, 10, 209, 80, 14, 209, 0, 10, 67, 0, -- 7, 227, 16, 15, 247, 192, 15, 72, 192, 91, -- 246, 176, 13, 169, 176, 8, 110, 144, 10, 214, -- 5, 61, 35, 227, 2, 91, 32, 3, 86, 33, -- 21, 92, 0, 6, 47, 224, 1, 50, 32, 10, -- 176, 17, 137, 63, 72, 137, 142, 113, 10, 98, -- 208, 116, 81, 199, 111, 60, 64, 5, 143, 83, -- 6, 67, 160, 6, 177, 16, 14, 208, 160, 13, -- 106, 194, 12, 200, 160, 12, 218, 112, 12, 82, -- 152, 12, 187, 160, 10, 151, 64, 1, 8, 240, -- 3, 10, 184, 51, 148, 208, 10, 139, 85, 2, -- 37, 176, 9, 253, 32, 12, 134, 80, 6, 251, -- 83, 62, 84, 144, 45, 141, 64, 8, 84, 192, -- 3, 158, 8, 4, 86, 64, 10, 28, 32, 0, -- 56, 224, 13, 194, 176, 11, 222, 80, 14, 202, -- 16, 10, 135, 32, 46, 141, 7, 111, 45, 224, -- 24, 145, 144, 9, 91, 0, 6, 70, 0, 6, -- 112, 101, 116, 72, 247, 254, 15, 123, 112, 6, -- 176, 65, 11, 63, 176, 111, 59, 208, 111, 154, -- 216, 142, 135, 0, 10, 136, 16, 10, 194, 160, -- 13, 201, 160, 13, 117, 34, 14, 208, 128, 12, -- 186, 208, 11, 187, 112, 9, 128, 224, 1, 20, -- 64, 0, 8, 96, 3, 203, 1, 11, 159, 112, -- 83, 175, 80, 15, 52, 208, 118, 196, 144, 15, -- 185, 32, 66, 67, 80, 5, 100, 64, 7, 81, -- 83, 56, 85, 48, 3, 20, 233, 3, 54, 208, -- 3, 157, 192, 0, 0, 64, 12, 208, 0, 10, -- 63, 4, 7, 202, 54, 146, 133, 48, 7, 151, -- 64, 4, 96, 112, 146, 144, 225, 7, 96, 192, -- 5, 226, 40, 21, 245, 38, 69, 158, 48, 23, -- 145, 97, 10, 115, 96, 3, 34, 48, 122, 231, -- 88, 122, 112, 160, 6, 165, 16, 11, 161, 112, -- 12, 202, 112, 9, 151, 16, 14, 226, 32, 143, -- 244, 40, 6, 24, 224, 0, 8, 128, 0, 17, -- 128, 2, 135, 128, 66, 173, 64, 9, 140, 64, -- 9, 185, 208, 15, 196, 144, 10, 191, 192, 15, -- 236, 0, 10, 114, 96, 56, 93, 32, 7, 73, -- 120, 67, 80, 64, 5, 59, 128, 132, 84, 0, -- 4, 107, 48, 104, 5, 240, 13, 194, 0, 10, -- 111, 0, 4, 64, 32, 57, 105, 128, 46, 171, -- 48, 7, 223, 39, 4, 145, 1, 132, 157, 246, -- 105, 2, 49, 11, 115, 33, 142, 167, 240, 3, -- 54, 224, 3, 153, 152, 56, 80, 243, 6, 112, -- 254, 0, 138, 177, 32, 12, 208, 160, 10, 106, -- 130, 13, 0, 24, 14, 197, 128, 148, 107, 208, -- 3, 86, 32, 138, 202, 193, 51, 85, 121, 83, -- 173, 112, 14, 229, 192, 14, 234, 80, 14, 173, -- 160, 87, 101, 0, 60, 33, 148, 132, 112, 32, -- 60, 60, 48, 3, 184, 233, 3, 170, 224, 75, -- 237, 128, 13, 79, 72, 5, 84, 246, 45, 83, -- 0, 136, 221, 71, 4, 50, 64, 147, 29, 178, -- 100, 35, 37, 147, 132, 249, 24, 137, 128, 152, -- 43, 224, 111, 57, 121, 132, 92, 4, 7, 161, -- 160, 12, 111, 162, 11, 115, 32, 153, 199, 176, -- 117, 63, 83, 158, 244, 8, 10, 148, 48, 144, -- 237, 25, 8, 44, 26, 8, 114, 16, 8, 169, -- 193, 8, 11, 41, 56, 133, 195, 3, 244, 99, -- 117, 84, 80, 5, 80, 192, 111, 244, 195, 63, -- 64, 16, 10, 186, 32, 12, 5, 234, 3, 49, -- 48, 3, 195, 153, 6, 88, 48, 50, 240, 246, -- 1, 73, 178, 7, 253, 213, 86, 90, 224, 160, -- 142, 33, 6, 33, 48, 101, 254, 118, 67, 169, -- 39, 8, 175, 208, 132, 210, 179, 11, 189, 176, -- 5, 202, 160, 12, 107, 194, 117, 83, 216, 10, -- 180, 83, 149, 44, 234, 5, 99, 224, 5, 127, -- 224, 5, 110, 58, 6, 178, 89, 6, 74, 51, -- 49, 80, 192, 144, 246, 83, 6, 159, 210, 119, -- 166, 55, 75, 12, 57, 3, 213, 201, 132, 160, -- 160, 6, 81, 48, 4, 254, 51, 48, 3, 89, -- 96, 68, 73, 234, 125, 65, 96, 2, 73, 18, -- 91, 1, 240, 50, 255, 160, 8, 81, 234, 24, -- 142, 176, 4, 33, 32, 2, 137, 57, 3, 84, -- 0, 5, 29, 84, 53, 64, 154, 42, 170, 144, -- 9, 92, 112, 9, 165, 16, 143, 196, 98, 133, -- 12, 184, 51, 104, 170, 166, 99, 176, 166, 115, -- 227, 162, 173, 154, 52, 247, 217, 101, 89, 87, -- 6, 132, 208, 8, 62, 89, 5, 67, 144, 147, -- 19, 195, 3, 43, 96, 3, 81, 240, 10, 141, -- 160, 6, 95, 217, 159, 126, 106, 3, 71, 36, -- 6, 68, 80, 4, 50, 144, 36, 106, 21, 0, -- 108, 5, 165, 147, 42, 21, 166, 96, 169, 83, -- 214, 111, 137, 83, 5, 206, 3, 10, 161, 48, -- 61, 170, 224, 7, 32, 0, 1, 50, 0, 9, -- 186, 64, 39, 86, 104, 120, 202, 161, 170, 140, -- 224, 166, 106, 250, 7, 109, 234, 166, 49, 228, -- 5, 134, 224, 5, 73, 67, 63, 114, 80, 5, -- 183, 154, 58, 55, 164, 2, 177, 73, 6, 80, -- 96, 164, 108, 214, 10, 92, 198, 63, 51, 16, -- 2, 6, 75, 95, 138, 42, 165, 248, 1, 82, -- 34, 117, 16, 166, 80, 23, 155, 115, 11, 87, -- 96, 161, 51, 192, 111, 156, 170, 108, 160, 32, -- 61, 171, 192, 10, 32, 16, 124, 48, 208, 9, -- 189, 128, 148, 208, 16, 14, 176, 72, 59, 55, -- 69, 154, 129, 192, 166, 127, 176, 166, 114, 163, -- 254, 166, 94, 0, 49, 77, 192, 3, 73, 208, -- 4, 115, 67, 6, 160, 128, 171, 132, 160, 6, -- 60, 10, 49, 60, 96, 3, 112, 112, 179, 100, -- 16, 8, 236, 8, 4, 54, 96, 176, 33, 128, -- 2, 40, 192, 2, 68, 160, 4, 213, 116, 77, -- 9, 33, 169, 90, 48, 21, 115, 160, 111, 153, -- 184, 3, 114, 136, 58, 135, 208, 173, 171, 224, -- 10, 253, 132, 6, 81, 113, 10, 172, 240, 38, -- 216, 160, 13, 242, 40, 164, 104, 250, 7, 129, -- 224, 174, 129, 192, 8, 114, 208, 166, 134, 128, -- 63, 17, 147, 56, 77, 32, 155, 132, 32, 138, -- 136, 80, 5, 58, 11, 5, 47, 219, 5, 253, -- 9, 7, 46, 74, 8, 236, 232, 3, 244, 133, -- 2, 71, 139, 180, 44, 16, 4, 73, 178, 100, -- 148, 164, 16, 121, 80, 23, 82, 225, 10, 55, -- 153, 137, 70, 168, 6, 136, 32, 8, 47, 86, -- 8, 165, 160, 9, 19, 96, 6, 142, 193, 7, -- 163, 176, 11, 202, 192, 117, 242, 232, 78, 108, -- 235, 174, 238, 58, 6, 104, 203, 170, 73, 227, -- 5, 73, 48, 179, 65, 139, 171, 175, 80, 109, -- 84, 80, 52, 178, 217, 4, 187, 58, 4, 217, -- 82, 5, 83, 99, 5, 61, 128, 180, 190, 203, -- 2, 46, 192, 180, 78, 36, 73, 254, 197, 184, -- 117, 145, 7, 180, 192, 116, 138, 201, 111, 133, -- 74, 117, 89, 112, 8, 186, 160, 9, 23, 16, -- 25, 159, 171, 83, 240, 254, 120, 66, 104, 58, -- 6, 129, 176, 166, 174, 10, 167, 100, 80, 175, -- 245, 138, 51, 160, 144, 11, 112, 153, 71, 47, -- 84, 62, 49, 91, 122, 116, 0, 60, 81, 0, -- 4, 152, 122, 180, 75, 144, 1, 25, 112, 184, -- 17, 68, 188, 15, 209, 184, 90, 80, 173, 54, -- 80, 168, 167, 39, 60, 22, 243, 6, 208, 43, -- 189, 146, 49, 10, 218, 112, 174, 19, 119, 44, -- 60, 67, 186, 45, 234, 162, 114, 80, 175, 93, -- 86, 6, 159, 0, 10, 177, 11, 7, 81, 112, -- 132, 47, 75, 175, 78, 99, 52, 60, 160, 2, -- 86, 90, 168, 54, 176, 4, 46, 144, 1, 87, -- 112, 141, 213, 113, 6, 245, 102, 111, 16, 33, -- 169, 138, 48, 177, 152, 184, 147, 19, 153, 122, -- 28, 154, 12, 156, 48, 189, 146, 241, 12, 87, -- 8, 13, 26, 215, 30, 237, 89, 11, 200, 128, -- 12, 178, 3, 93, 235, 234, 5, 101, 144, 132, -- 208, 149, 41, 21, 252, 144, 220, 27, 60, 117, -- 250, 116, 161, 228, 163, 132, 116, 5, 46, 144, -- 8, 248, 161, 4, 11, 32, 73, 139, 27, 17, -- 166, 240, 5, 144, 208, 3, 251, 187, 111, 165, -- 39, 135, 136, 240, 10, 146, 41, 192, 146, 113, -- 10, 231, 96, 133, 212, 32, 12, 112, 195, 162, -- 104, 27, 8, 173, 0, 55, 183, 214, 10, 55, -- 85, 149, 79, 200, 173, 144, 99, 96, 170, 35, -- 92, 192, 51, 4, 116, 64, 127, 161, 244, 129, -- 254, 83, 80, 156, 147, 16, 100, 222, 8, 91, -- 80, 116, 0, 103, 51, 17, 193, 192, 10, 145, -- 123, 161, 6, 118, 181, 175, 240, 38, 153, 64, -- 195, 53, 76, 178, 218, 128, 12, 185, 80, 149, -- 109, 251, 7, 132, 32, 7, 134, 240, 7, 49, -- 180, 182, 107, 11, 187, 91, 122, 8, 82, 96, -- 3, 89, 128, 8, 173, 208, 8, 154, 92, 6, -- 141, 208, 8, 129, 96, 8, 3, 103, 117, 207, -- 35, 81, 27, 203, 131, 212, 161, 4, 32, 21, -- 0, 18, 0, 169, 18, 49, 14, 107, 128, 137, -- 251, 150, 122, 87, 43, 12, 245, 8, 12, 27, -- 240, 151, 82, 241, 12, 218, 64, 13, 56, 44, -- 12, 181, 192, 8, 105, 123, 83, 210, 44, 55, -- 160, 204, 162, 148, 64, 48, 185, 16, 10, 161, -- 80, 68, 105, 48, 190, 114, 76, 205, 55, 149, -- 79, 172, 71, 45, 112, 208, 8, 163, 178, 10, -- 201, 128, 203, 176, 161, 5, 39, 60, 73, 30, -- 49, 8, 82, 230, 197, 95, 169, 202, 109, 162, -- 12, 192, 64, 3, 150, 0, 27, 201, 35, 12, -- 108, 34, 12, 210, 220, 162, 55, 229, 162, 110, -- 26, 203, 238, 249, 198, 177, 160, 12, 144, 48, -- 8, 177, 112, 12, 194, 0, 148, 205, 1, 55, -- 210, 44, 205, 229, 67, 7, 201, 6, 42, 12, -- 148, 12, 190, 0, 27, 124, 240, 1, 80, 20, -- 0, 46, 243, 17, 170, 96, 5, 133, 122, 155, -- 31, 168, 202, 14, 141, 254, 12, 189, 128, 4, -- 146, 32, 25, 124, 160, 13, 171, 44, 144, 45, -- 106, 8, 134, 240, 162, 11, 188, 182, 208, 149, -- 66, 229, 169, 13, 151, 160, 10, 247, 88, 10, -- 68, 89, 182, 85, 233, 96, 194, 101, 209, 81, -- 160, 108, 151, 211, 11, 192, 240, 24, 168, 192, -- 7, 42, 243, 209, 11, 144, 200, 30, 145, 12, -- 105, 80, 168, 205, 171, 6, 231, 252, 10, 151, -- 179, 11, 156, 112, 4, 252, 188, 198, 100, 112, -- 205, 46, 26, 208, 114, 243, 162, 238, 233, 133, -- 104, 87, 143, 47, 192, 10, 202, 80, 10, 200, -- 64, 148, 225, 160, 198, 104, 26, 8, 179, 137, -- 183, 114, 120, 8, 166, 162, 212, 190, 66, 43, -- 158, 115, 0, 243, 194, 21, 127, 232, 167, 51, -- 224, 111, 84, 87, 203, 165, 176, 11, 154, 0, -- 3, 220, 244, 24, 189, 16, 206, 14, 214, 182, -- 11, 108, 8, 105, 107, 211, 239, 36, 12, 150, -- 29, 39, 30, 176, 5, 172, 208, 11, 14, 205, -- 12, 218, 80, 11, 235, 73, 9, 44, 42, 155, -- 134, 128, 49, 181, 60, 9, 170, 48, 10, 230, -- 161, 5, 31, 240, 0, 125, 253, 0, 160, 182, -- 23, 147, 64, 180, 23, 58, 117, 84, 23, 5, -- 130, 112, 42, 174, 0, 3, 150, 240, 151, 171, -- 144, 58, 1, 205, 174, 114, 80, 205, 160, 108, -- 214, 3, 25, 209, 185, 160, 13, 202, 208, 0, -- 3, 224, 1, 151, 32, 166, 152, 57, 48, 134, -- 254, 112, 83, 16, 115, 45, 114, 184, 6, 125, -- 112, 7, 123, 160, 5, 241, 178, 0, 125, 61, -- 2, 216, 196, 23, 144, 80, 96, 21, 91, 177, -- 253, 19, 5, 83, 112, 216, 192, 80, 2, 95, -- 96, 23, 82, 234, 9, 165, 128, 8, 65, 27, -- 180, 110, 74, 8, 163, 221, 182, 54, 157, 205, -- 181, 192, 128, 185, 240, 10, 208, 160, 11, 13, -- 160, 0, 24, 0, 6, 208, 32, 158, 208, 208, -- 30, 234, 42, 223, 85, 144, 5, 216, 45, 23, -- 57, 208, 218, 44, 227, 221, 22, 240, 4, 90, -- 241, 29, 170, 64, 157, 215, 170, 147, 196, 147, -- 208, 201, 128, 4, 102, 96, 25, 32, 94, 23, -- 147, 120, 7, 125, 176, 6, 113, 160, 6, 214, -- 60, 55, 106, 122, 223, 114, 4, 79, 39, 148, -- 11, 255, 77, 1, 20, 112, 5, 170, 48, 182, -- 205, 12, 205, 159, 64, 57, 120, 144, 221, 219, -- 157, 3, 38, 80, 43, 101, 195, 50, 19, 238, -- 203, 189, 1, 185, 243, 188, 188, 62, 48, 5, -- 202, 128, 13, 201, 192, 6, 110, 224, 86, 121, -- 0, 226, 82, 174, 4, 34, 126, 6, 36, 222, -- 7, 120, 96, 226, 220, 226, 56, 17, 44, 154, -- 151, 227, 148, 118, 201, 10, 124, 50, 10, 142, -- 176, 33, 215, 225, 227, 77, 2, 228, 182, 242, -- 0, 53, 240, 5, 68, 94, 34, 229, 120, 169, -- 137, 169, 2, 6, 150, 5, 229, 186, 206, 48, -- 64, 16, 166, 160, 8, 192, 81, 62, 229, 32, -- 142, 25, 84, 238, 222, 115, 49, 232, 132, 110, -- 23, 215, 113, 25, 218, 17, 34, 78, 178, 232, -- 181, 98, 1, 109, 30, 32, 37, 162, 16, 151, -- 64, 184, 152, 26, 127, 73, 94, 10, 73, 9, -- 12, 56, 128, 16, 218, 148, 7, 121, 240, 5, -- 182, 17, 234, 162, 158, 3, 184, 129, 27, 218, -- 113, 234, 218, 209, 31, 253, 17, 34, 172, 206, -- 232, 38, 160, 3, 0, 82, 225, 145, 206, 16, -- 148, 142, 169, 116, 126, 164, 186, 144, 12, 187, -- 237, 16, 150, 20, 9, 118, 96, 7, 95, 240, -- 5, 216, 145, 29, 168, 158, 234, 170, 174, 1, -- 31, 160, 3, 184, 17, 236, 120, 33, 235, 179, -- 254, 16, 144, 75, 184, 136, 153, 106, 22, 185, -- 6, 147, 192, 10, 174, 176, 1, 60, 65, 19, -- 145, 240, 230, 207, 222, 17, 128, 64, 184, 33, -- 96, 164, 86, 144, 6, 225, 226, 165, 154, 32, -- 1, 223, 190, 238, 21, 225, 10, 75, 128, 2, -- 54, 240, 3, 66, 148, 6, 228, 178, 11, 192, -- 192, 4, 236, 158, 239, 2, 17, 16, 0, 59}; -- -diff -up php-5.4.0RC5/main/php_logos.c.easter php-5.4.0RC5/main/php_logos.c ---- php-5.4.0RC5/main/php_logos.c.easter 2012-01-18 17:17:17.895031787 +0100 -+++ php-5.4.0RC5/main/php_logos.c 2012-01-18 17:21:46.877044070 +0100 -@@ -56,7 +56,6 @@ int php_init_info_logos(void) - return FAILURE; - - php_register_info_logo(PHP_LOGO_GUID , "image/gif", php_logo , sizeof(php_logo)); -- php_register_info_logo(PHP_EGG_LOGO_GUID, "image/gif", php_egg_logo, sizeof(php_egg_logo)); - php_register_info_logo(ZEND_LOGO_GUID , "image/gif", zend_logo , sizeof(zend_logo)); - - return SUCCESS; diff --git a/php-5.4.7-libdb.patch b/php-5.4.7-libdb.patch index 0b1e305..bc4e1fc 100644 --- a/php-5.4.7-libdb.patch +++ b/php-5.4.7-libdb.patch @@ -60,3 +60,27 @@ fi PHP_DBA_STD_RESULT(db4,Berkeley DB4) +--- php-5.4.7/ext/dba/dba.c.old 2012-09-19 14:55:23.868456900 +0200 ++++ php-5.4.7/ext/dba/dba.c 2012-09-19 15:02:42.796009320 +0200 +@@ -52,6 +52,10 @@ + #include "php_qdbm.h" + #include "php_tcadb.h" + ++#ifdef DB4_INCLUDE_FILE ++#include DB4_INCLUDE_FILE ++#endif ++ + /* {{{ arginfo */ + ZEND_BEGIN_ARG_INFO_EX(arginfo_dba_popen, 0, 0, 2) + ZEND_ARG_INFO(0, path) +@@ -522,6 +526,10 @@ + + php_info_print_table_start(); + php_info_print_table_row(2, "DBA support", "enabled"); ++#ifdef DB_VERSION_STRING ++ php_info_print_table_row(2, "libdb header version", DB_VERSION_STRING); ++ php_info_print_table_row(2, "libdb library version", db_version(NULL, NULL, NULL)); ++#endif + if (handlers.c) { + smart_str_0(&handlers); + php_info_print_table_row(2, "Supported handlers", handlers.c); diff --git a/php-5.5.0-build.patch b/php-5.5.0-build.patch new file mode 100644 index 0000000..27a16da --- /dev/null +++ b/php-5.5.0-build.patch @@ -0,0 +1,2579 @@ +diff -ru php-5.5.0beta1/Zend/zend_ini_parser.c php5.5-201303201430/Zend/zend_ini_parser.c +--- php-5.5.0beta1/Zend/zend_ini_parser.c 2013-03-20 15:26:53.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_ini_parser.c 2013-03-20 15:37:18.000000000 +0100 +@@ -1,8 +1,10 @@ +-/* A Bison parser, made by GNU Bison 2.6.1. */ + +-/* Bison implementation for Yacc-like parsers in C ++/* A Bison parser, made by GNU Bison 2.4.1. */ ++ ++/* Skeleton implementation for Bison's Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. ++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++ Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -44,7 +46,7 @@ + #define YYBISON 1 + + /* Bison version. */ +-#define YYBISON_VERSION "2.6.1" ++#define YYBISON_VERSION "2.4.1" + + /* Skeleton name. */ + #define YYSKELETON_NAME "yacc.c" +@@ -58,6 +60,8 @@ + /* Pull parsers. */ + #define YYPULL 1 + ++/* Using locations. */ ++#define YYLSP_NEEDED 0 + + /* Substitute the variable and function names. */ + #define yyparse ini_parse +@@ -68,6 +72,7 @@ + #define yydebug ini_debug + #define yynerrs ini_nerrs + ++ + /* Copy the first part of user declarations. */ + + +@@ -319,13 +324,10 @@ + + + +-# ifndef YY_NULL +-# if defined __cplusplus && 201103L <= __cplusplus +-# define YY_NULL nullptr +-# else +-# define YY_NULL 0 +-# endif +-# endif ++/* Enabling traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif + + /* Enabling verbose error messages. */ + #ifdef YYERROR_VERBOSE +@@ -335,18 +337,12 @@ + # define YYERROR_VERBOSE 0 + #endif + +-/* In a future release of Bison, this section will be replaced +- by #include "zend_ini_parser.h". */ +-#ifndef INI_ZEND_ZEND_INI_PARSER_H +-# define INI_ZEND_ZEND_INI_PARSER_H +-/* Enabling traces. */ +-#ifndef YYDEBUG +-# define YYDEBUG 0 +-#endif +-#if YYDEBUG +-extern int ini_debug; ++/* Enabling the token table. */ ++#ifndef YYTOKEN_TABLE ++# define YYTOKEN_TABLE 0 + #endif + ++ + /* Tokens. */ + #ifndef YYTOKENTYPE + # define YYTOKENTYPE +@@ -387,6 +383,7 @@ + + + ++ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef int YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 +@@ -395,22 +392,6 @@ + #endif + + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int ini_parse (void *YYPARSE_PARAM); +-#else +-int ini_parse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus +-int ini_parse (void); +-#else +-int ini_parse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ +- +-#endif /* !INI_ZEND_ZEND_INI_PARSER_H */ +- + /* Copy the second part of user declarations. */ + + +@@ -463,7 +444,7 @@ + #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + + #ifndef YY_ +-# if defined YYENABLE_NLS && YYENABLE_NLS ++# if YYENABLE_NLS + # if ENABLE_NLS + # include /* INFRINGES ON USER NAME SPACE */ + # define YY_(msgid) dgettext ("bison-runtime", msgid) +@@ -516,12 +497,11 @@ + # define alloca _alloca + # else + # define YYSTACK_ALLOC alloca +-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + # include /* INFRINGES ON USER NAME SPACE */ +- /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +-# ifndef EXIT_SUCCESS +-# define EXIT_SUCCESS 0 ++# ifndef _STDLIB_H ++# define _STDLIB_H 1 + # endif + # endif + # endif +@@ -544,24 +524,24 @@ + # ifndef YYSTACK_ALLOC_MAXIMUM + # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM + # endif +-# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) + # include /* INFRINGES ON USER NAME SPACE */ +-# ifndef EXIT_SUCCESS +-# define EXIT_SUCCESS 0 ++# ifndef _STDLIB_H ++# define _STDLIB_H 1 + # endif + # endif + # ifndef YYMALLOC + # define YYMALLOC malloc +-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE + # define YYFREE free +-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + void free (void *); /* INFRINGES ON USER NAME SPACE */ + # endif +@@ -590,7 +570,23 @@ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +-# define YYCOPY_NEEDED 1 ++/* Copy COUNT objects from FROM to TO. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(To, From, Count) \ ++ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) ++# else ++# define YYCOPY(To, From, Count) \ ++ do \ ++ { \ ++ YYSIZE_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (To)[yyi] = (From)[yyi]; \ ++ } \ ++ while (YYID (0)) ++# endif ++# endif + + /* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of +@@ -610,26 +606,6 @@ + + #endif + +-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +-/* Copy COUNT objects from SRC to DST. The source and destination do +- not overlap. */ +-# ifndef YYCOPY +-# if defined __GNUC__ && 1 < __GNUC__ +-# define YYCOPY(Dst, Src, Count) \ +- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +-# else +-# define YYCOPY(Dst, Src, Count) \ +- do \ +- { \ +- YYSIZE_T yyi; \ +- for (yyi = 0; yyi < (Count); yyi++) \ +- (Dst)[yyi] = (Src)[yyi]; \ +- } \ +- while (YYID (0)) +-# endif +-# endif +-#endif /* !YYCOPY_NEEDED */ +- + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 2 + /* YYLAST -- Last index in YYTABLE. */ +@@ -725,7 +701,7 @@ + }; + #endif + +-#if YYDEBUG || YYERROR_VERBOSE || 0 ++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ + static const char *const yytname[] = +@@ -739,7 +715,7 @@ + "$accept", "statement_list", "statement", "section_string_or_value", + "string_or_value", "option_offset", "encapsed_list", + "var_string_list_section", "var_string_list", "expr", "cfg_var_ref", +- "constant_literal", "constant_string", YY_NULL ++ "constant_literal", "constant_string", 0 + }; + #endif + +@@ -776,8 +752,8 @@ + 1, 1, 1, 1, 1, 1, 1, 1, 1 + }; + +-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. +- Performed when YYTABLE doesn't specify something else to do. Zero ++/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state ++ STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ + static const yytype_uint8 yydefact[] = + { +@@ -820,7 +796,8 @@ + + /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which +- number is the opposite. If YYTABLE_NINF, syntax error. */ ++ number is the opposite. If zero, do what YYDEFACT says. ++ If YYTABLE_NINF, syntax error. */ + #define YYTABLE_NINF -1 + static const yytype_uint8 yytable[] = + { +@@ -837,12 +814,6 @@ + 0, 0, 4, 5, 0, 47, 0, 68, 0, 6 + }; + +-#define yypact_value_is_default(yystate) \ +- ((yystate) == (-36)) +- +-#define yytable_value_is_error(yytable_value) \ +- YYID (0) +- + static const yytype_int8 yycheck[] = + { + 3, 25, 37, 38, 4, 5, 6, 7, 8, 33, +@@ -883,33 +854,24 @@ + + /* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. +- Once GCC version 2 has supplanted version 1, this can go. However, +- YYFAIL appears to be in use. Nevertheless, it is formally deprecated +- in Bison 2.4.2's NEWS entry, where a plan to phase it out is +- discussed. */ ++ Once GCC version 2 has supplanted version 1, this can go. */ + + #define YYFAIL goto yyerrlab +-#if defined YYFAIL +- /* This is here to suppress warnings from the GCC cpp's +- -Wunused-macros. Normally we don't worry about that warning, but +- some users do, and we want to make it easy for users to remove +- YYFAIL uses, which will produce warnings from Bison 2.5. */ +-#endif + + #define YYRECOVERING() (!!yyerrstatus) + +-#define YYBACKUP(Token, Value) \ +-do \ +- if (yychar == YYEMPTY) \ +- { \ +- yychar = (Token); \ +- yylval = (Value); \ +- YYPOPSTACK (yylen); \ +- yystate = *yyssp; \ +- goto yybackup; \ +- } \ +- else \ +- { \ ++#define YYBACKUP(Token, Value) \ ++do \ ++ if (yychar == YYEMPTY && yylen == 1) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ yytoken = YYTRANSLATE (yychar); \ ++ YYPOPSTACK (1); \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +@@ -919,38 +881,46 @@ + #define YYTERROR 1 + #define YYERRCODE 256 + ++ + /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + ++#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + #ifndef YYLLOC_DEFAULT +-# define YYLLOC_DEFAULT(Current, Rhs, N) \ +- do \ +- if (YYID (N)) \ +- { \ +- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ +- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ +- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ +- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ +- } \ +- else \ +- { \ +- (Current).first_line = (Current).last_line = \ +- YYRHSLOC (Rhs, 0).last_line; \ +- (Current).first_column = (Current).last_column = \ +- YYRHSLOC (Rhs, 0).last_column; \ +- } \ ++# define YYLLOC_DEFAULT(Current, Rhs, N) \ ++ do \ ++ if (YYID (N)) \ ++ { \ ++ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ ++ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ ++ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ ++ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ ++ } \ ++ else \ ++ { \ ++ (Current).first_line = (Current).last_line = \ ++ YYRHSLOC (Rhs, 0).last_line; \ ++ (Current).first_column = (Current).last_column = \ ++ YYRHSLOC (Rhs, 0).last_column; \ ++ } \ + while (YYID (0)) + #endif + +-#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + +- +- +-/* This macro is provided for backward compatibility. */ ++/* YY_LOCATION_PRINT -- Print the location on the stream. ++ This macro was not mandated originally: define only if we know ++ we won't break user code: when these are the locations we know. */ + + #ifndef YY_LOCATION_PRINT +-# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# if YYLTYPE_IS_TRIVIAL ++# define YY_LOCATION_PRINT(File, Loc) \ ++ fprintf (File, "%d.%d-%d.%d", \ ++ (Loc).first_line, (Loc).first_column, \ ++ (Loc).last_line, (Loc).last_column) ++# else ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# endif + #endif + + +@@ -1005,8 +975,6 @@ + YYSTYPE const * const yyvaluep; + #endif + { +- FILE *yyo = yyoutput; +- YYUSE (yyo); + if (!yyvaluep) + return; + # ifdef YYPRINT +@@ -1144,6 +1112,7 @@ + # define YYMAXDEPTH 10000 + #endif + ++ + + #if YYERROR_VERBOSE + +@@ -1246,142 +1215,115 @@ + } + # endif + +-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message +- about the unexpected token YYTOKEN for the state stack whose top is +- YYSSP. +- +- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is +- not large enough to hold the message. In that case, also set +- *YYMSG_ALLOC to the required number of bytes. Return 2 if the +- required number of bytes is too large to store. */ +-static int +-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, +- yytype_int16 *yyssp, int yytoken) ++/* Copy into YYRESULT an error message about the unexpected token ++ YYCHAR while in state YYSTATE. Return the number of bytes copied, ++ including the terminating null byte. If YYRESULT is null, do not ++ copy anything; just return the number of bytes that would be ++ copied. As a special case, return 0 if an ordinary "syntax error" ++ message will do. Return YYSIZE_MAXIMUM if overflow occurs during ++ size calculation. */ ++static YYSIZE_T ++yysyntax_error (char *yyresult, int yystate, int yychar) + { +- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); +- YYSIZE_T yysize = yysize0; +- YYSIZE_T yysize1; +- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; +- /* Internationalized format string. */ +- const char *yyformat = YY_NULL; +- /* Arguments of yyformat. */ +- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; +- /* Number of reported tokens (one for the "unexpected", one per +- "expected"). */ +- int yycount = 0; +- +- /* There are many possibilities here to consider: +- - Assume YYFAIL is not used. It's too flawed to consider. See +- +- for details. YYERROR is fine as it does not invoke this +- function. +- - If this state is a consistent state with a default action, then +- the only way this function was invoked is if the default action +- is an error action. In that case, don't check for expected +- tokens because there are none. +- - The only way there can be no lookahead present (in yychar) is if +- this state is a consistent state with a default action. Thus, +- detecting the absence of a lookahead is sufficient to determine +- that there is no unexpected or expected token to report. In that +- case, just report a simple "syntax error". +- - Don't assume there isn't a lookahead just because this state is a +- consistent state with a default action. There might have been a +- previous inconsistent state, consistent state with a non-default +- action, or user semantic action that manipulated yychar. +- - Of course, the expected token list depends on states to have +- correct lookahead information, and it depends on the parser not +- to perform extra reductions after fetching a lookahead from the +- scanner and before detecting a syntax error. Thus, state merging +- (from LALR or IELR) and default reductions corrupt the expected +- token list. However, the list is correct for canonical LR with +- one exception: it will still contain any token that will not be +- accepted due to an error action in a later state. +- */ +- if (yytoken != YYEMPTY) +- { +- int yyn = yypact[*yyssp]; +- yyarg[yycount++] = yytname[yytoken]; +- if (!yypact_value_is_default (yyn)) +- { +- /* Start YYX at -YYN if negative to avoid negative indexes in +- YYCHECK. In other words, skip the first -YYN actions for +- this state because they are default actions. */ +- int yyxbegin = yyn < 0 ? -yyn : 0; +- /* Stay within bounds of both yycheck and yytname. */ +- int yychecklim = YYLAST - yyn + 1; +- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; +- int yyx; +- +- for (yyx = yyxbegin; yyx < yyxend; ++yyx) +- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR +- && !yytable_value_is_error (yytable[yyx + yyn])) +- { +- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) +- { +- yycount = 1; +- yysize = yysize0; +- break; +- } +- yyarg[yycount++] = yytname[yyx]; +- yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); +- if (! (yysize <= yysize1 +- && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) +- return 2; +- yysize = yysize1; +- } +- } +- } ++ int yyn = yypact[yystate]; + +- switch (yycount) ++ if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) ++ return 0; ++ else + { +-# define YYCASE_(N, S) \ +- case N: \ +- yyformat = S; \ +- break +- YYCASE_(0, YY_("syntax error")); +- YYCASE_(1, YY_("syntax error, unexpected %s")); +- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); +- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); +- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); +- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +-# undef YYCASE_ +- } ++ int yytype = YYTRANSLATE (yychar); ++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); ++ YYSIZE_T yysize = yysize0; ++ YYSIZE_T yysize1; ++ int yysize_overflow = 0; ++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; ++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; ++ int yyx; ++ ++# if 0 ++ /* This is so xgettext sees the translatable formats that are ++ constructed on the fly. */ ++ YY_("syntax error, unexpected %s"); ++ YY_("syntax error, unexpected %s, expecting %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s or %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); ++# endif ++ char *yyfmt; ++ char const *yyf; ++ static char const yyunexpected[] = "syntax error, unexpected %s"; ++ static char const yyexpecting[] = ", expecting %s"; ++ static char const yyor[] = " or %s"; ++ char yyformat[sizeof yyunexpected ++ + sizeof yyexpecting - 1 ++ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) ++ * (sizeof yyor - 1))]; ++ char const *yyprefix = yyexpecting; ++ ++ /* Start YYX at -YYN if negative to avoid negative indexes in ++ YYCHECK. */ ++ int yyxbegin = yyn < 0 ? -yyn : 0; ++ ++ /* Stay within bounds of both yycheck and yytname. */ ++ int yychecklim = YYLAST - yyn + 1; ++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; ++ int yycount = 1; + +- yysize1 = yysize + yystrlen (yyformat); +- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) +- return 2; +- yysize = yysize1; ++ yyarg[0] = yytname[yytype]; ++ yyfmt = yystpcpy (yyformat, yyunexpected); + +- if (*yymsg_alloc < yysize) +- { +- *yymsg_alloc = 2 * yysize; +- if (! (yysize <= *yymsg_alloc +- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) +- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; +- return 1; +- } ++ for (yyx = yyxbegin; yyx < yyxend; ++yyx) ++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) ++ { ++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) ++ { ++ yycount = 1; ++ yysize = yysize0; ++ yyformat[sizeof yyunexpected - 1] = '\0'; ++ break; ++ } ++ yyarg[yycount++] = yytname[yyx]; ++ yysize1 = yysize + yytnamerr (0, yytname[yyx]); ++ yysize_overflow |= (yysize1 < yysize); ++ yysize = yysize1; ++ yyfmt = yystpcpy (yyfmt, yyprefix); ++ yyprefix = yyor; ++ } + +- /* Avoid sprintf, as that infringes on the user's name space. +- Don't have undefined behavior even if the translation +- produced a string with the wrong number of "%s"s. */ +- { +- char *yyp = *yymsg; +- int yyi = 0; +- while ((*yyp = *yyformat) != '\0') +- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) +- { +- yyp += yytnamerr (yyp, yyarg[yyi++]); +- yyformat += 2; +- } +- else +- { +- yyp++; +- yyformat++; +- } +- } +- return 0; ++ yyf = YY_(yyformat); ++ yysize1 = yysize + yystrlen (yyf); ++ yysize_overflow |= (yysize1 < yysize); ++ yysize = yysize1; ++ ++ if (yysize_overflow) ++ return YYSIZE_MAXIMUM; ++ ++ if (yyresult) ++ { ++ /* Avoid sprintf, as that infringes on the user's name space. ++ Don't have undefined behavior even if the translation ++ produced a string with the wrong number of "%s"s. */ ++ char *yyp = yyresult; ++ int yyi = 0; ++ while ((*yyp = *yyf) != '\0') ++ { ++ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) ++ { ++ yyp += yytnamerr (yyp, yyarg[yyi++]); ++ yyf += 2; ++ } ++ else ++ { ++ yyp++; ++ yyf++; ++ } ++ } ++ } ++ return yysize; ++ } + } + #endif /* YYERROR_VERBOSE */ ++ + + /*-----------------------------------------------. + | Release the memory associated to this symbol. | +@@ -1414,12 +1356,28 @@ + } + } + ++/* Prevent warnings from -Wmissing-prototypes. */ ++#ifdef YYPARSE_PARAM ++#if defined __STDC__ || defined __cplusplus ++int yyparse (void *YYPARSE_PARAM); ++#else ++int yyparse (); ++#endif ++#else /* ! YYPARSE_PARAM */ ++#if defined __STDC__ || defined __cplusplus ++int yyparse (void); ++#else ++int yyparse (); ++#endif ++#endif /* ! YYPARSE_PARAM */ ++ ++ + + + +-/*----------. +-| yyparse. | +-`----------*/ ++/*-------------------------. ++| yyparse or yypush_parse. | ++`-------------------------*/ + + #ifdef YYPARSE_PARAM + #if (defined __STDC__ || defined __C99__FUNC__ \ +@@ -1460,7 +1418,7 @@ + `yyss': related to states. + `yyvs': related to semantic values. + +- Refer to the stacks through separate pointers, to allow yyoverflow ++ Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ +@@ -1514,6 +1472,7 @@ + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; ++ + goto yysetstate; + + /*------------------------------------------------------------. +@@ -1605,7 +1564,7 @@ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; +- if (yypact_value_is_default (yyn)) ++ if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ +@@ -1636,8 +1595,8 @@ + yyn = yytable[yyn]; + if (yyn <= 0) + { +- if (yytable_value_is_error (yyn)) +- goto yyerrlab; ++ if (yyn == 0 || yyn == YYTABLE_NINF) ++ goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } +@@ -1935,17 +1894,6 @@ + + default: break; + } +- /* User semantic actions sometimes alter yychar, and that requires +- that yytoken be updated with the new translation. We take the +- approach of translating immediately before every use of yytoken. +- One alternative is translating here after every semantic action, +- but that translation would be missed if the semantic action invokes +- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or +- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an +- incorrect destructor might then be invoked immediately. In the +- case of YYERROR or YYBACKUP, subsequent parser actions might lead +- to an incorrect destructor call or verbose syntax error message +- before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); +@@ -1973,10 +1921,6 @@ + | yyerrlab -- here on detecting error | + `------------------------------------*/ + yyerrlab: +- /* Make sure we have latest lookahead translation. See comments at +- user semantic actions for why this is necessary. */ +- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); +- + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { +@@ -1984,36 +1928,37 @@ + #if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); + #else +-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ +- yyssp, yytoken) + { +- char const *yymsgp = YY_("syntax error"); +- int yysyntax_error_status; +- yysyntax_error_status = YYSYNTAX_ERROR; +- if (yysyntax_error_status == 0) +- yymsgp = yymsg; +- else if (yysyntax_error_status == 1) +- { +- if (yymsg != yymsgbuf) +- YYSTACK_FREE (yymsg); +- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); +- if (!yymsg) +- { +- yymsg = yymsgbuf; +- yymsg_alloc = sizeof yymsgbuf; +- yysyntax_error_status = 2; +- } +- else +- { +- yysyntax_error_status = YYSYNTAX_ERROR; +- yymsgp = yymsg; +- } +- } +- yyerror (yymsgp); +- if (yysyntax_error_status == 2) +- goto yyexhaustedlab; ++ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); ++ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) ++ { ++ YYSIZE_T yyalloc = 2 * yysize; ++ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) ++ yyalloc = YYSTACK_ALLOC_MAXIMUM; ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++ yymsg = (char *) YYSTACK_ALLOC (yyalloc); ++ if (yymsg) ++ yymsg_alloc = yyalloc; ++ else ++ { ++ yymsg = yymsgbuf; ++ yymsg_alloc = sizeof yymsgbuf; ++ } ++ } ++ ++ if (0 < yysize && yysize <= yymsg_alloc) ++ { ++ (void) yysyntax_error (yymsg, yystate, yychar); ++ yyerror (yymsg); ++ } ++ else ++ { ++ yyerror (YY_("syntax error")); ++ if (yysize != 0) ++ goto yyexhaustedlab; ++ } + } +-# undef YYSYNTAX_ERROR + #endif + } + +@@ -2072,7 +2017,7 @@ + for (;;) + { + yyn = yypact[yystate]; +- if (!yypact_value_is_default (yyn)) ++ if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) +@@ -2119,7 +2064,7 @@ + yyresult = 1; + goto yyreturn; + +-#if !defined yyoverflow || YYERROR_VERBOSE ++#if !defined(yyoverflow) || YYERROR_VERBOSE + /*-------------------------------------------------. + | yyexhaustedlab -- memory exhaustion comes here. | + `-------------------------------------------------*/ +@@ -2131,13 +2076,8 @@ + + yyreturn: + if (yychar != YYEMPTY) +- { +- /* Make sure we have latest lookahead translation. See comments at +- user semantic actions for why this is necessary. */ +- yytoken = YYTRANSLATE (yychar); +- yydestruct ("Cleanup: discarding lookahead", +- yytoken, &yylval); +- } ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); +diff -ru php-5.5.0beta1/Zend/zend_ini_parser.h php5.5-201303201430/Zend/zend_ini_parser.h +--- php-5.5.0beta1/Zend/zend_ini_parser.h 2013-03-20 15:26:53.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_ini_parser.h 2013-03-20 15:37:18.000000000 +0100 +@@ -1,8 +1,10 @@ +-/* A Bison parser, made by GNU Bison 2.6.1. */ + +-/* Bison interface for Yacc-like parsers in C ++/* A Bison parser, made by GNU Bison 2.4.1. */ ++ ++/* Skeleton interface for Bison's Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. ++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++ Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -30,15 +32,6 @@ + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +-#ifndef INI_ZEND_ZEND_INI_PARSER_H +-# define INI_ZEND_ZEND_INI_PARSER_H +-/* Enabling traces. */ +-#ifndef YYDEBUG +-# define YYDEBUG 0 +-#endif +-#if YYDEBUG +-extern int ini_debug; +-#endif + + /* Tokens. */ + #ifndef YYTOKENTYPE +@@ -80,6 +73,7 @@ + + + ++ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef int YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 +@@ -88,18 +82,5 @@ + #endif + + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int ini_parse (void *YYPARSE_PARAM); +-#else +-int ini_parse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus +-int ini_parse (void); +-#else +-int ini_parse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ + +-#endif /* !INI_ZEND_ZEND_INI_PARSER_H */ ++ +diff -ru php-5.5.0beta1/Zend/zend_ini_scanner.c php5.5-201303201430/Zend/zend_ini_scanner.c +--- php-5.5.0beta1/Zend/zend_ini_scanner.c 2013-03-20 15:09:27.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_ini_scanner.c 2013-03-20 15:37:18.000000000 +0100 +@@ -1,5 +1,4 @@ + /* Generated by re2c 0.13.5 */ +-#line 1 "Zend/zend_ini_scanner.l" + /* + +----------------------------------------------------------------------+ + | Zend Engine | +@@ -333,7 +332,6 @@ + } + } + +-#line 337 "Zend/zend_ini_scanner.c" + { + YYCTYPE yych; + unsigned int yyaccept = 0; +@@ -462,7 +460,6 @@ + yy3: + YYDEBUG(3, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 429 "Zend/zend_ini_scanner.l" + { /* Get option name */ + /* Eat leading whitespace */ + EAT_LEADING_WHITESPACE(); +@@ -472,7 +469,6 @@ + + RETURN_TOKEN(TC_LABEL, yytext, yyleng); + } +-#line 476 "Zend/zend_ini_scanner.c" + yy4: + YYDEBUG(4, *YYCURSOR); + yyaccept = 0; +@@ -481,24 +477,20 @@ + yy5: + YYDEBUG(5, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 575 "Zend/zend_ini_scanner.l" + { + /* eat whitespace */ + goto restart; + } +-#line 490 "Zend/zend_ini_scanner.c" + yy6: + YYDEBUG(6, *YYCURSOR); + ++YYCURSOR; + yy7: + YYDEBUG(7, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 580 "Zend/zend_ini_scanner.l" + { + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 502 "Zend/zend_ini_scanner.c" + yy8: + YYDEBUG(8, *YYCURSOR); + yych = *++YYCURSOR; +@@ -533,11 +525,9 @@ + ++YYCURSOR; + YYDEBUG(11, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 503 "Zend/zend_ini_scanner.l" + { /* Disallow these chars outside option values */ + return yytext[0]; + } +-#line 541 "Zend/zend_ini_scanner.c" + yy12: + YYDEBUG(12, *YYCURSOR); + yyaccept = 1; +@@ -554,11 +544,9 @@ + goto yy54; + YYDEBUG(15, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 603 "Zend/zend_ini_scanner.l" + { + return 0; + } +-#line 562 "Zend/zend_ini_scanner.c" + yy16: + YYDEBUG(16, *YYCURSOR); + ++YYCURSOR; +@@ -567,7 +555,6 @@ + yy17: + YYDEBUG(17, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 439 "Zend/zend_ini_scanner.l" + { /* Start option value */ + if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { + yy_push_state(ST_RAW TSRMLS_CC); +@@ -576,7 +563,6 @@ + } + return '='; + } +-#line 580 "Zend/zend_ini_scanner.c" + yy18: + YYDEBUG(18, *YYCURSOR); + yych = *++YYCURSOR; +@@ -632,7 +618,6 @@ + ++YYCURSOR; + YYDEBUG(24, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 358 "Zend/zend_ini_scanner.l" + { /* Section start */ + /* Enter section data lookup state */ + if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { +@@ -642,7 +627,6 @@ + } + return TC_SECTION; + } +-#line 646 "Zend/zend_ini_scanner.c" + yy25: + YYDEBUG(25, *YYCURSOR); + ++YYCURSOR; +@@ -672,7 +656,6 @@ + } + YYDEBUG(30, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 383 "Zend/zend_ini_scanner.l" + { /* Start of option with offset */ + /* Eat leading whitespace */ + EAT_LEADING_WHITESPACE(); +@@ -685,7 +668,6 @@ + + RETURN_TOKEN(TC_OFFSET, yytext, yyleng); + } +-#line 689 "Zend/zend_ini_scanner.c" + yy31: + YYDEBUG(31, *YYCURSOR); + ++YYCURSOR; +@@ -733,11 +715,9 @@ + yy33: + YYDEBUG(33, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 421 "Zend/zend_ini_scanner.l" + { /* TRUE value (when used outside option value/offset this causes parse error!) */ + RETURN_TOKEN(BOOL_TRUE, "1", 1); + } +-#line 741 "Zend/zend_ini_scanner.c" + yy34: + YYDEBUG(34, *YYCURSOR); + ++YYCURSOR; +@@ -807,11 +787,9 @@ + yy41: + YYDEBUG(41, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 425 "Zend/zend_ini_scanner.l" + { /* FALSE value (when used outside option value/offset this causes parse error!)*/ + RETURN_TOKEN(BOOL_FALSE, "", 0); + } +-#line 815 "Zend/zend_ini_scanner.c" + yy42: + YYDEBUG(42, *YYCURSOR); + ++YYCURSOR; +@@ -926,13 +904,11 @@ + yy56: + YYDEBUG(56, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 585 "Zend/zend_ini_scanner.l" + { /* Comment */ + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 936 "Zend/zend_ini_scanner.c" + yy57: + YYDEBUG(57, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1012,14 +988,12 @@ + yy65: + YYDEBUG(65, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 591 "Zend/zend_ini_scanner.l" + { /* #Comment */ + zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno)); + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 1023 "Zend/zend_ini_scanner.c" + yy66: + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1159,7 +1133,6 @@ + yy76: + YYDEBUG(76, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 535 "Zend/zend_ini_scanner.l" + { /* Escape double quoted string contents */ + if (YYCURSOR > YYLIMIT) { + return 0; +@@ -1195,7 +1168,6 @@ + zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC); + return TC_QUOTED_STRING; + } +-#line 1199 "Zend/zend_ini_scanner.c" + yy77: + YYDEBUG(77, *YYCURSOR); + ++YYCURSOR; +@@ -1204,12 +1176,10 @@ + yy78: + YYDEBUG(78, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 530 "Zend/zend_ini_scanner.l" + { /* Double quoted '"' string ends */ + yy_pop_state(TSRMLS_C); + return '"'; + } +-#line 1213 "Zend/zend_ini_scanner.c" + yy79: + YYDEBUG(79, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1218,12 +1188,10 @@ + ++YYCURSOR; + YYDEBUG(81, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 401 "Zend/zend_ini_scanner.l" + { /* Variable start */ + yy_push_state(ST_VARNAME TSRMLS_CC); + return TC_DOLLAR_CURLY; + } +-#line 1227 "Zend/zend_ini_scanner.c" + yy82: + YYDEBUG(82, *YYCURSOR); + ++YYCURSOR; +@@ -1323,11 +1291,9 @@ + yy87: + YYDEBUG(87, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 521 "Zend/zend_ini_scanner.l" + { /* Get rest as section/offset value */ + RETURN_TOKEN(TC_STRING, yytext, yyleng); + } +-#line 1331 "Zend/zend_ini_scanner.c" + yy88: + YYDEBUG(88, *YYCURSOR); + yyaccept = 0; +@@ -1344,23 +1310,19 @@ + yy90: + YYDEBUG(90, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 603 "Zend/zend_ini_scanner.l" + { + return 0; + } +-#line 1352 "Zend/zend_ini_scanner.c" + yy91: + YYDEBUG(91, *YYCURSOR); + ++YYCURSOR; + yy92: + YYDEBUG(92, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 525 "Zend/zend_ini_scanner.l" + { /* Double quoted '"' string start */ + yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); + return '"'; + } +-#line 1364 "Zend/zend_ini_scanner.c" + yy93: + YYDEBUG(93, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1422,11 +1384,9 @@ + yy98: + YYDEBUG(98, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 499 "Zend/zend_ini_scanner.l" + { /* Get number option value as string */ + RETURN_TOKEN(TC_NUMBER, yytext, yyleng); + } +-#line 1430 "Zend/zend_ini_scanner.c" + yy99: + YYDEBUG(99, *YYCURSOR); + yyaccept = 3; +@@ -1452,11 +1412,9 @@ + yy100: + YYDEBUG(100, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 495 "Zend/zend_ini_scanner.l" + { /* Get constant option value */ + RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); + } +-#line 1460 "Zend/zend_ini_scanner.c" + yy101: + YYDEBUG(101, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1467,12 +1425,10 @@ + yy103: + YYDEBUG(103, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 396 "Zend/zend_ini_scanner.l" + { /* End of section or an option offset */ + BEGIN(INITIAL); + return ']'; + } +-#line 1476 "Zend/zend_ini_scanner.c" + yy104: + YYDEBUG(104, *YYCURSOR); + yyaccept = 0; +@@ -1762,7 +1718,6 @@ + ++YYCURSOR; + YYDEBUG(128, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 368 "Zend/zend_ini_scanner.l" + { /* Raw string */ + /* Eat leading and trailing single quotes */ + if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { +@@ -1771,18 +1726,15 @@ + } + RETURN_TOKEN(TC_RAW, yytext, yyleng); + } +-#line 1775 "Zend/zend_ini_scanner.c" + yy129: + YYDEBUG(129, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(130, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 401 "Zend/zend_ini_scanner.l" + { /* Variable start */ + yy_push_state(ST_VARNAME TSRMLS_CC); + return TC_DOLLAR_CURLY; + } +-#line 1786 "Zend/zend_ini_scanner.c" + yy131: + YYDEBUG(131, *YYCURSOR); + yyaccept = 0; +@@ -1887,19 +1839,16 @@ + ++YYCURSOR; + YYDEBUG(138, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 598 "Zend/zend_ini_scanner.l" + { /* End of option value (if EOF is reached before EOL */ + BEGIN(INITIAL); + return END_OF_LINE; + } +-#line 1896 "Zend/zend_ini_scanner.c" + yy139: + YYDEBUG(139, *YYCURSOR); + ++YYCURSOR; + yy140: + YYDEBUG(140, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 448 "Zend/zend_ini_scanner.l" + { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ + char *sc = NULL; + while (YYCURSOR < YYLIMIT) { +@@ -1936,7 +1885,6 @@ + } + RETURN_TOKEN(TC_RAW, yytext, yyleng); + } +-#line 1940 "Zend/zend_ini_scanner.c" + yy141: + YYDEBUG(141, *YYCURSOR); + yyaccept = 0; +@@ -1961,13 +1909,11 @@ + yy143: + YYDEBUG(143, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 489 "Zend/zend_ini_scanner.l" + { /* End of option value */ + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 1971 "Zend/zend_ini_scanner.c" + yy144: + YYDEBUG(144, *YYCURSOR); + yych = *++YYCURSOR; +@@ -1995,13 +1941,11 @@ + yy149: + YYDEBUG(149, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 585 "Zend/zend_ini_scanner.l" + { /* Comment */ + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 2005 "Zend/zend_ini_scanner.c" + yy150: + YYDEBUG(150, *YYCURSOR); + yych = *++YYCURSOR; +@@ -2030,12 +1974,10 @@ + } + YYDEBUG(154, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 575 "Zend/zend_ini_scanner.l" + { + /* eat whitespace */ + goto restart; + } +-#line 2039 "Zend/zend_ini_scanner.c" + yy155: + YYDEBUG(155, *YYCURSOR); + ++YYCURSOR; +@@ -2095,21 +2037,17 @@ + yy159: + YYDEBUG(159, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 485 "Zend/zend_ini_scanner.l" + { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ + RETURN_TOKEN(TC_RAW, yytext, yyleng); + } +-#line 2103 "Zend/zend_ini_scanner.c" + yy160: + YYDEBUG(160, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(161, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 603 "Zend/zend_ini_scanner.l" + { + return 0; + } +-#line 2113 "Zend/zend_ini_scanner.c" + yy162: + YYDEBUG(162, *YYCURSOR); + ++YYCURSOR; +@@ -2118,13 +2056,11 @@ + yy163: + YYDEBUG(163, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 377 "Zend/zend_ini_scanner.l" + { /* End of section */ + BEGIN(INITIAL); + SCNG(lineno)++; + return ']'; + } +-#line 2128 "Zend/zend_ini_scanner.c" + yy164: + YYDEBUG(164, *YYCURSOR); + ++YYCURSOR; +@@ -2246,11 +2182,9 @@ + yy173: + YYDEBUG(173, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 521 "Zend/zend_ini_scanner.l" + { /* Get rest as section/offset value */ + RETURN_TOKEN(TC_STRING, yytext, yyleng); + } +-#line 2254 "Zend/zend_ini_scanner.c" + yy174: + YYDEBUG(174, *YYCURSOR); + yyaccept = 0; +@@ -2269,23 +2203,19 @@ + yy176: + YYDEBUG(176, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 603 "Zend/zend_ini_scanner.l" + { + return 0; + } +-#line 2277 "Zend/zend_ini_scanner.c" + yy177: + YYDEBUG(177, *YYCURSOR); + ++YYCURSOR; + yy178: + YYDEBUG(178, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 525 "Zend/zend_ini_scanner.l" + { /* Double quoted '"' string start */ + yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); + return '"'; + } +-#line 2289 "Zend/zend_ini_scanner.c" + yy179: + YYDEBUG(179, *YYCURSOR); + yych = *++YYCURSOR; +@@ -2347,11 +2277,9 @@ + yy184: + YYDEBUG(184, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 499 "Zend/zend_ini_scanner.l" + { /* Get number option value as string */ + RETURN_TOKEN(TC_NUMBER, yytext, yyleng); + } +-#line 2355 "Zend/zend_ini_scanner.c" + yy185: + YYDEBUG(185, *YYCURSOR); + yyaccept = 3; +@@ -2377,11 +2305,9 @@ + yy186: + YYDEBUG(186, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 495 "Zend/zend_ini_scanner.l" + { /* Get constant option value */ + RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); + } +-#line 2385 "Zend/zend_ini_scanner.c" + yy187: + YYDEBUG(187, *YYCURSOR); + yych = *++YYCURSOR; +@@ -2394,13 +2320,11 @@ + yy189: + YYDEBUG(189, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 377 "Zend/zend_ini_scanner.l" + { /* End of section */ + BEGIN(INITIAL); + SCNG(lineno)++; + return ']'; + } +-#line 2404 "Zend/zend_ini_scanner.c" + yy190: + YYDEBUG(190, *YYCURSOR); + ++YYCURSOR; +@@ -2712,7 +2636,6 @@ + ++YYCURSOR; + YYDEBUG(218, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 368 "Zend/zend_ini_scanner.l" + { /* Raw string */ + /* Eat leading and trailing single quotes */ + if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { +@@ -2721,18 +2644,15 @@ + } + RETURN_TOKEN(TC_RAW, yytext, yyleng); + } +-#line 2725 "Zend/zend_ini_scanner.c" + yy219: + YYDEBUG(219, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(220, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 401 "Zend/zend_ini_scanner.l" + { /* Variable start */ + yy_push_state(ST_VARNAME TSRMLS_CC); + return TC_DOLLAR_CURLY; + } +-#line 2736 "Zend/zend_ini_scanner.c" + yy221: + YYDEBUG(221, *YYCURSOR); + yyaccept = 0; +@@ -2912,12 +2832,10 @@ + yy227: + YYDEBUG(227, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 598 "Zend/zend_ini_scanner.l" + { /* End of option value (if EOF is reached before EOL */ + BEGIN(INITIAL); + return END_OF_LINE; + } +-#line 2921 "Zend/zend_ini_scanner.c" + yy228: + YYDEBUG(228, *YYCURSOR); + yyaccept = 0; +@@ -2926,11 +2844,9 @@ + yy229: + YYDEBUG(229, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 517 "Zend/zend_ini_scanner.l" + { /* Get everything else as option/offset value */ + RETURN_TOKEN(TC_STRING, yytext, yyleng); + } +-#line 2934 "Zend/zend_ini_scanner.c" + yy230: + YYDEBUG(230, *YYCURSOR); + yyaccept = 1; +@@ -2939,24 +2855,20 @@ + yy231: + YYDEBUG(231, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 571 "Zend/zend_ini_scanner.l" + { + RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng); + } +-#line 2947 "Zend/zend_ini_scanner.c" + yy232: + YYDEBUG(232, *YYCURSOR); + ++YYCURSOR; + yy233: + YYDEBUG(233, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 489 "Zend/zend_ini_scanner.l" + { /* End of option value */ + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 2960 "Zend/zend_ini_scanner.c" + yy234: + YYDEBUG(234, *YYCURSOR); + yych = *++YYCURSOR; +@@ -2970,23 +2882,19 @@ + yy236: + YYDEBUG(236, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 507 "Zend/zend_ini_scanner.l" + { /* Boolean operators */ + return yytext[0]; + } +-#line 2978 "Zend/zend_ini_scanner.c" + yy237: + YYDEBUG(237, *YYCURSOR); + ++YYCURSOR; + yy238: + YYDEBUG(238, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 525 "Zend/zend_ini_scanner.l" + { /* Double quoted '"' string start */ + yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); + return '"'; + } +-#line 2990 "Zend/zend_ini_scanner.c" + yy239: + YYDEBUG(239, *YYCURSOR); + yych = *++YYCURSOR; +@@ -3062,11 +2970,9 @@ + yy244: + YYDEBUG(244, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 499 "Zend/zend_ini_scanner.l" + { /* Get number option value as string */ + RETURN_TOKEN(TC_NUMBER, yytext, yyleng); + } +-#line 3070 "Zend/zend_ini_scanner.c" + yy245: + YYDEBUG(245, *YYCURSOR); + yyaccept = 2; +@@ -3077,13 +2983,11 @@ + ++YYCURSOR; + YYDEBUG(247, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 511 "Zend/zend_ini_scanner.l" + { /* Make = used in option value to trigger error */ + yyless(0); + BEGIN(INITIAL); + return END_OF_LINE; + } +-#line 3087 "Zend/zend_ini_scanner.c" + yy248: + YYDEBUG(248, *YYCURSOR); + yyaccept = 4; +@@ -3119,11 +3023,9 @@ + yy249: + YYDEBUG(249, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 495 "Zend/zend_ini_scanner.l" + { /* Get constant option value */ + RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); + } +-#line 3127 "Zend/zend_ini_scanner.c" + yy250: + YYDEBUG(250, *YYCURSOR); + yyaccept = 4; +@@ -3615,11 +3517,9 @@ + yy266: + YYDEBUG(266, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 421 "Zend/zend_ini_scanner.l" + { /* TRUE value (when used outside option value/offset this causes parse error!) */ + RETURN_TOKEN(BOOL_TRUE, "1", 1); + } +-#line 3623 "Zend/zend_ini_scanner.c" + yy267: + YYDEBUG(267, *YYCURSOR); + ++YYCURSOR; +@@ -3819,11 +3719,9 @@ + yy273: + YYDEBUG(273, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 425 "Zend/zend_ini_scanner.l" + { /* FALSE value (when used outside option value/offset this causes parse error!)*/ + RETURN_TOKEN(BOOL_FALSE, "", 0); + } +-#line 3827 "Zend/zend_ini_scanner.c" + yy274: + YYDEBUG(274, *YYCURSOR); + ++YYCURSOR; +@@ -4199,13 +4097,11 @@ + yy286: + YYDEBUG(286, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 585 "Zend/zend_ini_scanner.l" + { /* Comment */ + BEGIN(INITIAL); + SCNG(lineno)++; + return END_OF_LINE; + } +-#line 4209 "Zend/zend_ini_scanner.c" + yy287: + YYDEBUG(287, *YYCURSOR); + yych = *++YYCURSOR; +@@ -4417,7 +4313,6 @@ + ++YYCURSOR; + YYDEBUG(299, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 368 "Zend/zend_ini_scanner.l" + { /* Raw string */ + /* Eat leading and trailing single quotes */ + if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { +@@ -4426,18 +4321,15 @@ + } + RETURN_TOKEN(TC_RAW, yytext, yyleng); + } +-#line 4430 "Zend/zend_ini_scanner.c" + yy300: + YYDEBUG(300, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(301, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 401 "Zend/zend_ini_scanner.l" + { /* Variable start */ + yy_push_state(ST_VARNAME TSRMLS_CC); + return TC_DOLLAR_CURLY; + } +-#line 4441 "Zend/zend_ini_scanner.c" + yy302: + YYDEBUG(302, *YYCURSOR); + ++YYCURSOR; +@@ -4566,7 +4458,6 @@ + yy312: + YYDEBUG(312, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 406 "Zend/zend_ini_scanner.l" + { /* Variable name */ + /* Eat leading whitespace */ + EAT_LEADING_WHITESPACE(); +@@ -4576,28 +4467,23 @@ + + RETURN_TOKEN(TC_VARNAME, yytext, yyleng); + } +-#line 4580 "Zend/zend_ini_scanner.c" + yy313: + YYDEBUG(313, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(314, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 603 "Zend/zend_ini_scanner.l" + { + return 0; + } +-#line 4590 "Zend/zend_ini_scanner.c" + yy315: + YYDEBUG(315, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(316, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +-#line 416 "Zend/zend_ini_scanner.l" + { /* Variable end */ + yy_pop_state(TSRMLS_C); + return '}'; + } +-#line 4601 "Zend/zend_ini_scanner.c" + yy317: + YYDEBUG(317, *YYCURSOR); + ++YYCURSOR; +@@ -4611,6 +4497,5 @@ + goto yy312; + } + } +-#line 607 "Zend/zend_ini_scanner.l" + + } +diff -ru php-5.5.0beta1/Zend/zend_ini_scanner_defs.h php5.5-201303201430/Zend/zend_ini_scanner_defs.h +--- php-5.5.0beta1/Zend/zend_ini_scanner_defs.h 2013-03-20 15:09:27.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_ini_scanner_defs.h 2013-03-20 15:37:18.000000000 +0100 +@@ -1,5 +1,4 @@ + /* Generated by re2c 0.13.5 */ +-#line 3 "Zend/zend_ini_scanner_defs.h" + + enum YYCONDTYPE { + yycINITIAL, +diff -ru php-5.5.0beta1/Zend/zend_language_parser.c php5.5-201303201430/Zend/zend_language_parser.c +--- php-5.5.0beta1/Zend/zend_language_parser.c 2013-03-20 15:26:53.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_language_parser.c 2013-03-20 15:37:18.000000000 +0100 +@@ -1,8 +1,10 @@ +-/* A Bison parser, made by GNU Bison 2.6.1. */ + +-/* Bison implementation for Yacc-like parsers in C ++/* A Bison parser, made by GNU Bison 2.4.1. */ ++ ++/* Skeleton implementation for Bison's Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. ++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++ Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -44,7 +46,7 @@ + #define YYBISON 1 + + /* Bison version. */ +-#define YYBISON_VERSION "2.6.1" ++#define YYBISON_VERSION "2.4.1" + + /* Skeleton name. */ + #define YYSKELETON_NAME "yacc.c" +@@ -58,6 +60,8 @@ + /* Pull parsers. */ + #define YYPULL 1 + ++/* Using locations. */ ++#define YYLSP_NEEDED 0 + + /* Substitute the variable and function names. */ + #define yyparse zendparse +@@ -68,6 +72,7 @@ + #define yydebug zenddebug + #define yynerrs zendnerrs + ++ + /* Copy the first part of user declarations. */ + + +@@ -122,13 +127,10 @@ + + + +-# ifndef YY_NULL +-# if defined __cplusplus && 201103L <= __cplusplus +-# define YY_NULL nullptr +-# else +-# define YY_NULL 0 +-# endif +-# endif ++/* Enabling traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif + + /* Enabling verbose error messages. */ + #ifdef YYERROR_VERBOSE +@@ -138,18 +140,12 @@ + # define YYERROR_VERBOSE 0 + #endif + +-/* In a future release of Bison, this section will be replaced +- by #include "zend_language_parser.h". */ +-#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +-# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +-/* Enabling traces. */ +-#ifndef YYDEBUG +-# define YYDEBUG 0 +-#endif +-#if YYDEBUG +-extern int zenddebug; ++/* Enabling the token table. */ ++#ifndef YYTOKEN_TABLE ++# define YYTOKEN_TABLE 0 + #endif + ++ + /* Tokens. */ + #ifndef YYTOKENTYPE + # define YYTOKENTYPE +@@ -422,6 +418,7 @@ + + + ++ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef int YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 +@@ -430,22 +427,6 @@ + #endif + + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int zendparse (void *YYPARSE_PARAM); +-#else +-int zendparse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus +-int zendparse (void); +-#else +-int zendparse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ +- +-#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */ +- + /* Copy the second part of user declarations. */ + + +@@ -498,7 +479,7 @@ + #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + + #ifndef YY_ +-# if defined YYENABLE_NLS && YYENABLE_NLS ++# if YYENABLE_NLS + # if ENABLE_NLS + # include /* INFRINGES ON USER NAME SPACE */ + # define YY_(msgid) dgettext ("bison-runtime", msgid) +@@ -551,12 +532,11 @@ + # define alloca _alloca + # else + # define YYSTACK_ALLOC alloca +-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + # include /* INFRINGES ON USER NAME SPACE */ +- /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +-# ifndef EXIT_SUCCESS +-# define EXIT_SUCCESS 0 ++# ifndef _STDLIB_H ++# define _STDLIB_H 1 + # endif + # endif + # endif +@@ -579,24 +559,24 @@ + # ifndef YYSTACK_ALLOC_MAXIMUM + # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM + # endif +-# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) + # include /* INFRINGES ON USER NAME SPACE */ +-# ifndef EXIT_SUCCESS +-# define EXIT_SUCCESS 0 ++# ifndef _STDLIB_H ++# define _STDLIB_H 1 + # endif + # endif + # ifndef YYMALLOC + # define YYMALLOC malloc +-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE + # define YYFREE free +-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ ++# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) + void free (void *); /* INFRINGES ON USER NAME SPACE */ + # endif +@@ -625,7 +605,23 @@ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +-# define YYCOPY_NEEDED 1 ++/* Copy COUNT objects from FROM to TO. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(To, From, Count) \ ++ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) ++# else ++# define YYCOPY(To, From, Count) \ ++ do \ ++ { \ ++ YYSIZE_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (To)[yyi] = (From)[yyi]; \ ++ } \ ++ while (YYID (0)) ++# endif ++# endif + + /* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of +@@ -645,26 +641,6 @@ + + #endif + +-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +-/* Copy COUNT objects from SRC to DST. The source and destination do +- not overlap. */ +-# ifndef YYCOPY +-# if defined __GNUC__ && 1 < __GNUC__ +-# define YYCOPY(Dst, Src, Count) \ +- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +-# else +-# define YYCOPY(Dst, Src, Count) \ +- do \ +- { \ +- YYSIZE_T yyi; \ +- for (yyi = 0; yyi < (Count); yyi++) \ +- (Dst)[yyi] = (Src)[yyi]; \ +- } \ +- while (YYID (0)) +-# endif +-# endif +-#endif /* !YYCOPY_NEEDED */ +- + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 3 + /* YYLAST -- Last index in YYTABLE. */ +@@ -1032,7 +1008,7 @@ + }; + #endif + +-#if YYDEBUG || YYERROR_VERBOSE || 0 ++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ + static const char *const yytname[] = +@@ -1157,7 +1133,7 @@ + "non_empty_array_pair_list", "encaps_list", "encaps_var", "$@75", + "encaps_var_offset", "internal_functions_in_yacc", "isset_variables", + "$@76", "isset_variable", "class_constant", "static_class_name_scalar", +- "class_name_scalar", YY_NULL ++ "class_name_scalar", 0 + }; + #endif + +@@ -1305,8 +1281,8 @@ + 1, 1, 3, 3, 3, 3 + }; + +-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. +- Performed when YYTABLE doesn't specify something else to do. Zero ++/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state ++ STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ + static const yytype_uint16 yydefact[] = + { +@@ -1577,7 +1553,8 @@ + + /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which +- number is the opposite. If YYTABLE_NINF, syntax error. */ ++ number is the opposite. If zero, do what YYDEFACT says. ++ If YYTABLE_NINF, syntax error. */ + #define YYTABLE_NINF -542 + static const yytype_int16 yytable[] = + { +@@ -2096,12 +2073,6 @@ + 272, 273, 274, 275, 276, 0, 277 + }; + +-#define yypact_value_is_default(yystate) \ +- ((yystate) == (-770)) +- +-#define yytable_value_is_error(yytable_value) \ +- ((yytable_value) == (-542)) +- + static const yytype_int16 yycheck[] = + { + 24, 25, 4, 126, 28, 24, 25, 4, 11, 28, +@@ -2738,33 +2709,24 @@ + + /* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. +- Once GCC version 2 has supplanted version 1, this can go. However, +- YYFAIL appears to be in use. Nevertheless, it is formally deprecated +- in Bison 2.4.2's NEWS entry, where a plan to phase it out is +- discussed. */ ++ Once GCC version 2 has supplanted version 1, this can go. */ + + #define YYFAIL goto yyerrlab +-#if defined YYFAIL +- /* This is here to suppress warnings from the GCC cpp's +- -Wunused-macros. Normally we don't worry about that warning, but +- some users do, and we want to make it easy for users to remove +- YYFAIL uses, which will produce warnings from Bison 2.5. */ +-#endif + + #define YYRECOVERING() (!!yyerrstatus) + +-#define YYBACKUP(Token, Value) \ +-do \ +- if (yychar == YYEMPTY) \ +- { \ +- yychar = (Token); \ +- yylval = (Value); \ +- YYPOPSTACK (yylen); \ +- yystate = *yyssp; \ +- goto yybackup; \ +- } \ +- else \ +- { \ ++#define YYBACKUP(Token, Value) \ ++do \ ++ if (yychar == YYEMPTY && yylen == 1) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ yytoken = YYTRANSLATE (yychar); \ ++ YYPOPSTACK (1); \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +@@ -2774,38 +2736,46 @@ + #define YYTERROR 1 + #define YYERRCODE 256 + ++ + /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + ++#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + #ifndef YYLLOC_DEFAULT +-# define YYLLOC_DEFAULT(Current, Rhs, N) \ +- do \ +- if (YYID (N)) \ +- { \ +- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ +- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ +- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ +- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ +- } \ +- else \ +- { \ +- (Current).first_line = (Current).last_line = \ +- YYRHSLOC (Rhs, 0).last_line; \ +- (Current).first_column = (Current).last_column = \ +- YYRHSLOC (Rhs, 0).last_column; \ +- } \ ++# define YYLLOC_DEFAULT(Current, Rhs, N) \ ++ do \ ++ if (YYID (N)) \ ++ { \ ++ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ ++ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ ++ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ ++ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ ++ } \ ++ else \ ++ { \ ++ (Current).first_line = (Current).last_line = \ ++ YYRHSLOC (Rhs, 0).last_line; \ ++ (Current).first_column = (Current).last_column = \ ++ YYRHSLOC (Rhs, 0).last_column; \ ++ } \ + while (YYID (0)) + #endif + +-#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +- +- + +-/* This macro is provided for backward compatibility. */ ++/* YY_LOCATION_PRINT -- Print the location on the stream. ++ This macro was not mandated originally: define only if we know ++ we won't break user code: when these are the locations we know. */ + + #ifndef YY_LOCATION_PRINT +-# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# if YYLTYPE_IS_TRIVIAL ++# define YY_LOCATION_PRINT(File, Loc) \ ++ fprintf (File, "%d.%d-%d.%d", \ ++ (Loc).first_line, (Loc).first_column, \ ++ (Loc).last_line, (Loc).last_column) ++# else ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# endif + #endif + + +@@ -2860,8 +2830,6 @@ + YYSTYPE const * const yyvaluep; + #endif + { +- FILE *yyo = yyoutput; +- YYUSE (yyo); + if (!yyvaluep) + return; + # ifdef YYPRINT +@@ -2999,6 +2967,7 @@ + # define YYMAXDEPTH 10000 + #endif + ++ + + #if YYERROR_VERBOSE + +@@ -3101,142 +3070,115 @@ + } + # endif + +-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message +- about the unexpected token YYTOKEN for the state stack whose top is +- YYSSP. +- +- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is +- not large enough to hold the message. In that case, also set +- *YYMSG_ALLOC to the required number of bytes. Return 2 if the +- required number of bytes is too large to store. */ +-static int +-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, +- yytype_int16 *yyssp, int yytoken) ++/* Copy into YYRESULT an error message about the unexpected token ++ YYCHAR while in state YYSTATE. Return the number of bytes copied, ++ including the terminating null byte. If YYRESULT is null, do not ++ copy anything; just return the number of bytes that would be ++ copied. As a special case, return 0 if an ordinary "syntax error" ++ message will do. Return YYSIZE_MAXIMUM if overflow occurs during ++ size calculation. */ ++static YYSIZE_T ++yysyntax_error (char *yyresult, int yystate, int yychar) + { +- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); +- YYSIZE_T yysize = yysize0; +- YYSIZE_T yysize1; +- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; +- /* Internationalized format string. */ +- const char *yyformat = YY_NULL; +- /* Arguments of yyformat. */ +- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; +- /* Number of reported tokens (one for the "unexpected", one per +- "expected"). */ +- int yycount = 0; +- +- /* There are many possibilities here to consider: +- - Assume YYFAIL is not used. It's too flawed to consider. See +- +- for details. YYERROR is fine as it does not invoke this +- function. +- - If this state is a consistent state with a default action, then +- the only way this function was invoked is if the default action +- is an error action. In that case, don't check for expected +- tokens because there are none. +- - The only way there can be no lookahead present (in yychar) is if +- this state is a consistent state with a default action. Thus, +- detecting the absence of a lookahead is sufficient to determine +- that there is no unexpected or expected token to report. In that +- case, just report a simple "syntax error". +- - Don't assume there isn't a lookahead just because this state is a +- consistent state with a default action. There might have been a +- previous inconsistent state, consistent state with a non-default +- action, or user semantic action that manipulated yychar. +- - Of course, the expected token list depends on states to have +- correct lookahead information, and it depends on the parser not +- to perform extra reductions after fetching a lookahead from the +- scanner and before detecting a syntax error. Thus, state merging +- (from LALR or IELR) and default reductions corrupt the expected +- token list. However, the list is correct for canonical LR with +- one exception: it will still contain any token that will not be +- accepted due to an error action in a later state. +- */ +- if (yytoken != YYEMPTY) +- { +- int yyn = yypact[*yyssp]; +- yyarg[yycount++] = yytname[yytoken]; +- if (!yypact_value_is_default (yyn)) +- { +- /* Start YYX at -YYN if negative to avoid negative indexes in +- YYCHECK. In other words, skip the first -YYN actions for +- this state because they are default actions. */ +- int yyxbegin = yyn < 0 ? -yyn : 0; +- /* Stay within bounds of both yycheck and yytname. */ +- int yychecklim = YYLAST - yyn + 1; +- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; +- int yyx; +- +- for (yyx = yyxbegin; yyx < yyxend; ++yyx) +- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR +- && !yytable_value_is_error (yytable[yyx + yyn])) +- { +- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) +- { +- yycount = 1; +- yysize = yysize0; +- break; +- } +- yyarg[yycount++] = yytname[yyx]; +- yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); +- if (! (yysize <= yysize1 +- && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) +- return 2; +- yysize = yysize1; +- } +- } +- } ++ int yyn = yypact[yystate]; + +- switch (yycount) ++ if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) ++ return 0; ++ else + { +-# define YYCASE_(N, S) \ +- case N: \ +- yyformat = S; \ +- break +- YYCASE_(0, YY_("syntax error")); +- YYCASE_(1, YY_("syntax error, unexpected %s")); +- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); +- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); +- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); +- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +-# undef YYCASE_ +- } ++ int yytype = YYTRANSLATE (yychar); ++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); ++ YYSIZE_T yysize = yysize0; ++ YYSIZE_T yysize1; ++ int yysize_overflow = 0; ++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; ++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; ++ int yyx; ++ ++# if 0 ++ /* This is so xgettext sees the translatable formats that are ++ constructed on the fly. */ ++ YY_("syntax error, unexpected %s"); ++ YY_("syntax error, unexpected %s, expecting %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s or %s"); ++ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); ++# endif ++ char *yyfmt; ++ char const *yyf; ++ static char const yyunexpected[] = "syntax error, unexpected %s"; ++ static char const yyexpecting[] = ", expecting %s"; ++ static char const yyor[] = " or %s"; ++ char yyformat[sizeof yyunexpected ++ + sizeof yyexpecting - 1 ++ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) ++ * (sizeof yyor - 1))]; ++ char const *yyprefix = yyexpecting; ++ ++ /* Start YYX at -YYN if negative to avoid negative indexes in ++ YYCHECK. */ ++ int yyxbegin = yyn < 0 ? -yyn : 0; ++ ++ /* Stay within bounds of both yycheck and yytname. */ ++ int yychecklim = YYLAST - yyn + 1; ++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; ++ int yycount = 1; + +- yysize1 = yysize + yystrlen (yyformat); +- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) +- return 2; +- yysize = yysize1; ++ yyarg[0] = yytname[yytype]; ++ yyfmt = yystpcpy (yyformat, yyunexpected); + +- if (*yymsg_alloc < yysize) +- { +- *yymsg_alloc = 2 * yysize; +- if (! (yysize <= *yymsg_alloc +- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) +- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; +- return 1; +- } ++ for (yyx = yyxbegin; yyx < yyxend; ++yyx) ++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) ++ { ++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) ++ { ++ yycount = 1; ++ yysize = yysize0; ++ yyformat[sizeof yyunexpected - 1] = '\0'; ++ break; ++ } ++ yyarg[yycount++] = yytname[yyx]; ++ yysize1 = yysize + yytnamerr (0, yytname[yyx]); ++ yysize_overflow |= (yysize1 < yysize); ++ yysize = yysize1; ++ yyfmt = yystpcpy (yyfmt, yyprefix); ++ yyprefix = yyor; ++ } + +- /* Avoid sprintf, as that infringes on the user's name space. +- Don't have undefined behavior even if the translation +- produced a string with the wrong number of "%s"s. */ +- { +- char *yyp = *yymsg; +- int yyi = 0; +- while ((*yyp = *yyformat) != '\0') +- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) +- { +- yyp += yytnamerr (yyp, yyarg[yyi++]); +- yyformat += 2; +- } +- else +- { +- yyp++; +- yyformat++; +- } +- } +- return 0; ++ yyf = YY_(yyformat); ++ yysize1 = yysize + yystrlen (yyf); ++ yysize_overflow |= (yysize1 < yysize); ++ yysize = yysize1; ++ ++ if (yysize_overflow) ++ return YYSIZE_MAXIMUM; ++ ++ if (yyresult) ++ { ++ /* Avoid sprintf, as that infringes on the user's name space. ++ Don't have undefined behavior even if the translation ++ produced a string with the wrong number of "%s"s. */ ++ char *yyp = yyresult; ++ int yyi = 0; ++ while ((*yyp = *yyf) != '\0') ++ { ++ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) ++ { ++ yyp += yytnamerr (yyp, yyarg[yyi++]); ++ yyf += 2; ++ } ++ else ++ { ++ yyp++; ++ yyf++; ++ } ++ } ++ } ++ return yysize; ++ } + } + #endif /* YYERROR_VERBOSE */ ++ + + /*-----------------------------------------------. + | Release the memory associated to this symbol. | +@@ -3269,12 +3211,28 @@ + } + } + ++/* Prevent warnings from -Wmissing-prototypes. */ ++#ifdef YYPARSE_PARAM ++#if defined __STDC__ || defined __cplusplus ++int yyparse (void *YYPARSE_PARAM); ++#else ++int yyparse (); ++#endif ++#else /* ! YYPARSE_PARAM */ ++#if defined __STDC__ || defined __cplusplus ++int yyparse (void); ++#else ++int yyparse (); ++#endif ++#endif /* ! YYPARSE_PARAM */ ++ ++ + + + +-/*----------. +-| yyparse. | +-`----------*/ ++/*-------------------------. ++| yyparse or yypush_parse. | ++`-------------------------*/ + + #ifdef YYPARSE_PARAM + #if (defined __STDC__ || defined __C99__FUNC__ \ +@@ -3315,7 +3273,7 @@ + `yyss': related to states. + `yyvs': related to semantic values. + +- Refer to the stacks through separate pointers, to allow yyoverflow ++ Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ +@@ -3369,6 +3327,7 @@ + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; ++ + goto yysetstate; + + /*------------------------------------------------------------. +@@ -3460,7 +3419,7 @@ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; +- if (yypact_value_is_default (yyn)) ++ if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ +@@ -3491,8 +3450,8 @@ + yyn = yytable[yyn]; + if (yyn <= 0) + { +- if (yytable_value_is_error (yyn)) +- goto yyerrlab; ++ if (yyn == 0 || yyn == YYTABLE_NINF) ++ goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } +@@ -5976,17 +5935,6 @@ + + default: break; + } +- /* User semantic actions sometimes alter yychar, and that requires +- that yytoken be updated with the new translation. We take the +- approach of translating immediately before every use of yytoken. +- One alternative is translating here after every semantic action, +- but that translation would be missed if the semantic action invokes +- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or +- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an +- incorrect destructor might then be invoked immediately. In the +- case of YYERROR or YYBACKUP, subsequent parser actions might lead +- to an incorrect destructor call or verbose syntax error message +- before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); +@@ -6014,10 +5962,6 @@ + | yyerrlab -- here on detecting error | + `------------------------------------*/ + yyerrlab: +- /* Make sure we have latest lookahead translation. See comments at +- user semantic actions for why this is necessary. */ +- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); +- + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { +@@ -6025,36 +5969,37 @@ + #if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); + #else +-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ +- yyssp, yytoken) + { +- char const *yymsgp = YY_("syntax error"); +- int yysyntax_error_status; +- yysyntax_error_status = YYSYNTAX_ERROR; +- if (yysyntax_error_status == 0) +- yymsgp = yymsg; +- else if (yysyntax_error_status == 1) +- { +- if (yymsg != yymsgbuf) +- YYSTACK_FREE (yymsg); +- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); +- if (!yymsg) +- { +- yymsg = yymsgbuf; +- yymsg_alloc = sizeof yymsgbuf; +- yysyntax_error_status = 2; +- } +- else +- { +- yysyntax_error_status = YYSYNTAX_ERROR; +- yymsgp = yymsg; +- } +- } +- yyerror (yymsgp); +- if (yysyntax_error_status == 2) +- goto yyexhaustedlab; ++ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); ++ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) ++ { ++ YYSIZE_T yyalloc = 2 * yysize; ++ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) ++ yyalloc = YYSTACK_ALLOC_MAXIMUM; ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++ yymsg = (char *) YYSTACK_ALLOC (yyalloc); ++ if (yymsg) ++ yymsg_alloc = yyalloc; ++ else ++ { ++ yymsg = yymsgbuf; ++ yymsg_alloc = sizeof yymsgbuf; ++ } ++ } ++ ++ if (0 < yysize && yysize <= yymsg_alloc) ++ { ++ (void) yysyntax_error (yymsg, yystate, yychar); ++ yyerror (yymsg); ++ } ++ else ++ { ++ yyerror (YY_("syntax error")); ++ if (yysize != 0) ++ goto yyexhaustedlab; ++ } + } +-# undef YYSYNTAX_ERROR + #endif + } + +@@ -6113,7 +6058,7 @@ + for (;;) + { + yyn = yypact[yystate]; +- if (!yypact_value_is_default (yyn)) ++ if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) +@@ -6160,7 +6105,7 @@ + yyresult = 1; + goto yyreturn; + +-#if !defined yyoverflow || YYERROR_VERBOSE ++#if !defined(yyoverflow) || YYERROR_VERBOSE + /*-------------------------------------------------. + | yyexhaustedlab -- memory exhaustion comes here. | + `-------------------------------------------------*/ +@@ -6172,13 +6117,8 @@ + + yyreturn: + if (yychar != YYEMPTY) +- { +- /* Make sure we have latest lookahead translation. See comments at +- user semantic actions for why this is necessary. */ +- yytoken = YYTRANSLATE (yychar); +- yydestruct ("Cleanup: discarding lookahead", +- yytoken, &yylval); +- } ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); +diff -ru php-5.5.0beta1/Zend/zend_language_parser.h php5.5-201303201430/Zend/zend_language_parser.h +--- php-5.5.0beta1/Zend/zend_language_parser.h 2013-03-20 15:26:53.000000000 +0100 ++++ php5.5-201303201430/Zend/zend_language_parser.h 2013-03-20 15:37:18.000000000 +0100 +@@ -1,8 +1,10 @@ +-/* A Bison parser, made by GNU Bison 2.6.1. */ + +-/* Bison interface for Yacc-like parsers in C ++/* A Bison parser, made by GNU Bison 2.4.1. */ ++ ++/* Skeleton interface for Bison's Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. ++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++ Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -30,15 +32,6 @@ + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +-#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +-# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +-/* Enabling traces. */ +-#ifndef YYDEBUG +-# define YYDEBUG 0 +-#endif +-#if YYDEBUG +-extern int zenddebug; +-#endif + + /* Tokens. */ + #ifndef YYTOKENTYPE +@@ -312,6 +305,7 @@ + + + ++ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef int YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 +@@ -320,18 +314,5 @@ + #endif + + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int zendparse (void *YYPARSE_PARAM); +-#else +-int zendparse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus +-int zendparse (void); +-#else +-int zendparse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ + +-#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */ ++ diff --git a/php.spec b/php.spec index 6c45861..8da93b7 100644 --- a/php.spec +++ b/php.spec @@ -1,18 +1,15 @@ # API/ABI check -%global apiver 20100412 -%global zendver 20100525 +%global apiver 20121113 +%global zendver 20121212 %global pdover 20080721 # Extension version -%global fileinfover 1.0.5 -%global pharver 2.0.1 -%global zipver 1.11.0 -%global jsonver 1.2.1 +%global opcachever 7.0.1-dev # Adds -z now to the linker flags %global _hardened_build 1 # version used for php embedded library soname -%global embed_version 5.4 +%global embed_version 5.5 %global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock) @@ -23,16 +20,16 @@ # arch detection heuristic used by bindir/mysql_config. %global mysql_config %{_libdir}/mysql/mysql_config -%global with_fpm 1 +%global with_fpm 1 # Build mysql/mysqli/pdo extensions using libmysqlclient or only mysqlnd %global with_libmysql 0 # Build ZTS extension or only NTS -%global with_zts 1 +%global with_zts 1 -%if 0%{?__isa:1} -%global isasuffix -%{__isa} +%if 0%{?__isa_bits:1} +%global isasuffix -%{__isa_bits} %else %global isasuffix %nil %endif @@ -46,6 +43,8 @@ %{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} %{!?_httpd_contentdir: %{expand: %%global _httpd_contentdir /var/www}} +%global with_dtrace 1 + %if 0%{?fedora} < 17 && 0%{?rhel} < 7 %global with_zip 0 %global with_libzip 0 @@ -62,12 +61,12 @@ %global db_devel libdb-devel %endif -#global rcver RC1 +%global rcver beta1 Summary: PHP scripting language for creating dynamic web sites Name: php -Version: 5.4.13 -Release: 1%{?dist} +Version: 5.5.0 +Release: 0.1.%{rcver}%{?dist} # All files licensed under PHP version 3.01, except # Zend is licensed under Zend # TSRM is licensed under BSD @@ -75,7 +74,7 @@ License: PHP and Zend and BSD Group: Development/Languages URL: http://www.php.net/ -Source0: http://www.php.net/distributions/php-%{version}%{?rcver}.tar.bz2 +Source0: http://www.php.net/distributions/php-%{version}%{?rcver}.tar.xz Source1: php.conf Source2: php.ini Source3: macros.php @@ -86,12 +85,16 @@ Source7: php-fpm.logrotate Source8: php-fpm.sysconfig Source9: php.modconf Source10: php.ztsmodconf +# Configuration files for some extensions +Source50: opcache.ini # Build fixes Patch5: php-5.2.0-includedir.patch Patch6: php-5.2.4-embed.patch Patch7: php-5.3.0-recode.patch Patch8: php-5.4.7-libdb.patch +# revert to bison 2.4 generated parser +Patch9: php-5.5.0-build.patch # Fixes for extension modules # https://bugs.php.net/63171 no odbc call during timeout @@ -99,7 +102,6 @@ Patch21: php-5.4.7-odbctimer.patch # Functional changes Patch40: php-5.4.0-dlopen.patch -Patch41: php-5.4.0-easter.patch Patch42: php-5.3.1-systzdata-v10.patch # See http://bugs.php.net/53436 Patch43: php-5.4.0-phpize.patch @@ -116,7 +118,7 @@ Patch47: php-5.4.9-phpinfo.patch # Fixes for tests -BuildRequires: bzip2-devel, curl-devel >= 7.9, gmp-devel +BuildRequires: bzip2-devel, curl-devel >= 7.9 BuildRequires: httpd-devel >= 2.0.46-1, pam-devel BuildRequires: libstdc++-devel, openssl-devel BuildRequires: sqlite-devel >= 3.6.0 @@ -127,6 +129,9 @@ BuildRequires: libtool-ltdl-devel %if %{with_libzip} BuildRequires: libzip-devel >= 0.10 %endif +%if %{with_dtrace} +BuildRequires: systemtap-sdt-devel +%endif Obsoletes: php-dbg, php3, phpfi, stronghold-php %if %{with_zts} @@ -184,9 +189,9 @@ Summary: PHP FastCGI Process Manager # TSRM and fpm are licensed under BSD License: PHP and Zend and BSD Requires: php-common%{?_isa} = %{version}-%{release} +Requires(pre): /usr/sbin/useradd BuildRequires: systemd-units Requires: systemd-units -Requires(pre): /usr/sbin/useradd Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units @@ -209,8 +214,8 @@ Summary: Common files for PHP # regex, libmagic are licensed under BSD License: PHP and BSD # ABI/API check - Arch specific -Provides: php-api = %{apiver}%{isasuffix}, php-zend-abi = %{zendver}%{isasuffix} -Provides: php(api) = %{apiver}%{isasuffix}, php(zend-abi) = %{zendver}%{isasuffix} +Provides: php(api) = %{apiver}%{isasuffix} +Provides: php(zend-abi) = %{zendver}%{isasuffix} Provides: php(language) = %{version}, php(language)%{?_isa} = %{version} # Provides for all builtin/shared modules: Provides: php-bz2, php-bz2%{?_isa} @@ -222,36 +227,25 @@ Provides: php-date, php-date%{?_isa} Provides: php-ereg, php-ereg%{?_isa} Provides: php-exif, php-exif%{?_isa} Provides: php-fileinfo, php-fileinfo%{?_isa} -Provides: php-pecl-Fileinfo = %{fileinfover}, php-pecl-Fileinfo%{?_isa} = %{fileinfover} -Provides: php-pecl(Fileinfo) = %{fileinfover}, php-pecl(Fileinfo)%{?_isa} = %{fileinfover} Provides: php-filter, php-filter%{?_isa} Provides: php-ftp, php-ftp%{?_isa} Provides: php-gettext, php-gettext%{?_isa} -Provides: php-gmp, php-gmp%{?_isa} Provides: php-hash, php-hash%{?_isa} Provides: php-mhash = %{version}, php-mhash%{?_isa} = %{version} Provides: php-iconv, php-iconv%{?_isa} Provides: php-json, php-json%{?_isa} -Provides: php-pecl-json = %{jsonver}, php-pecl-json%{?_isa} = %{jsonver} -Provides: php-pecl(json) = %{jsonver}, php-pecl(json)%{?_isa} = %{jsonver} Provides: php-libxml, php-libxml%{?_isa} Provides: php-openssl, php-openssl%{?_isa} -Provides: php-pecl-phar = %{pharver}, php-pecl-phar%{?_isa} = %{pharver} -Provides: php-pecl(phar) = %{pharver}, php-pecl(phar)%{?_isa} = %{pharver} Provides: php-phar, php-phar%{?_isa} Provides: php-pcre, php-pcre%{?_isa} Provides: php-reflection, php-reflection%{?_isa} Provides: php-session, php-session%{?_isa} -Provides: php-shmop, php-shmop%{?_isa} -Provides: php-simplexml, php-simplexml%{?_isa} Provides: php-sockets, php-sockets%{?_isa} Provides: php-spl, php-spl%{?_isa} Provides: php-standard = %{version}, php-standard%{?_isa} = %{version} Provides: php-tokenizer, php-tokenizer%{?_isa} %if %{with_zip} Provides: php-zip, php-zip%{?_isa} -Provides: php-pecl-zip = %{zipver}, php-pecl-zip%{?_isa} = %{zipver} -Provides: php-pecl(zip) = %{zipver}, php-pecl(zip)%{?_isa} = %{zipver} Obsoletes: php-pecl-zip %endif Provides: php-zlib, php-zlib%{?_isa} @@ -278,6 +272,28 @@ The php-devel package contains the files needed for building PHP extensions. If you need to compile your own PHP extensions, you will need to install this package. +%package opcache +Summary: The Zend Optimizer+ +Group: Development/Languages +License: PHP +Requires: php-common%{?_isa} = %{version}-%{release} +Obsoletes: php-pecl-zendoptimizerplus +Provides: php-pecl-zendoptimizerplus = %{opcachever} +Provides: php-pecl-zendoptimizerplus%{?_isa} = %{opcachever} +Provides: php-pecl(opcache) = %{opcachever} +Provides: php-pecl(opcache)%{?_isa} = %{opcachever} +# Only one opcode cache could be enabled +Conflicts: php-xcache +# APC 3.1.15 offer an option to disable opcache +Conflicts: php-pecl-apc < 3.1.15 + +%description opcache +The Zend Optimizer+ provides faster PHP execution through opcode caching and +optimization. It improves PHP performance by storing precompiled script +bytecode in the shared memory. This eliminates the stages of reading code from +the disk and compiling it on future access. In addition, it applies a few +bytecode optimization patterns that make code execution faster. + %package imap Summary: A module for PHP applications that use IMAP Group: Development/Languages @@ -406,6 +422,7 @@ Group: Development/Languages License: PHP Requires: php-common%{?_isa} = %{version}-%{release} Provides: php-posix, php-posix%{?_isa} +Provides: php-shmop, php-shmop%{?_isa} Provides: php-sysvsem, php-sysvsem%{?_isa} Provides: php-sysvshm, php-sysvshm%{?_isa} Provides: php-sysvmsg, php-sysvmsg%{?_isa} @@ -494,11 +511,12 @@ License: PHP Requires: php-common%{?_isa} = %{version}-%{release} Obsoletes: php-domxml, php-dom Provides: php-dom, php-dom%{?_isa} -Provides: php-xsl, php-xsl%{?_isa} Provides: php-domxml, php-domxml%{?_isa} +Provides: php-simplexml, php-simplexml%{?_isa} Provides: php-wddx, php-wddx%{?_isa} Provides: php-xmlreader, php-xmlreader%{?_isa} Provides: php-xmlwriter, php-xmlwriter%{?_isa} +Provides: php-xsl, php-xsl%{?_isa} BuildRequires: libxslt-devel >= 1.0.18-1, libxml2-devel >= 2.4.14-1 %description xml @@ -559,6 +577,18 @@ Requires: php-common%{?_isa} = %{version}-%{release} The php-bcmath package contains a dynamic shared object that will add support for using the bcmath library to PHP. +%package gmp +Summary: A module for PHP applications for using the GNU MP library +Group: Development/Languages +# All files licensed under PHP version 3.01 +License: PHP +BuildRequires: gmp-devel +Requires: php-common%{?_isa} = %{version}-%{release} + +%description gmp +These functions allow you to work with arbitrary-length integers +using the GNU MP library. + %package dba Summary: A database abstraction layer module for PHP applications Group: Development/Languages @@ -652,7 +682,7 @@ Group: System Environment/Libraries # All files licensed under PHP version 3.01 License: PHP Requires: php-common%{?_isa} = %{version}-%{release} -BuildRequires: libicu-devel >= 3.6 +BuildRequires: libicu-devel >= 4.0 %description intl The php-intl package contains a dynamic shared object that will add @@ -678,11 +708,11 @@ support for using the enchant library to PHP. %patch6 -p1 -b .embed %patch7 -p1 -b .recode %patch8 -p1 -b .libdb +%patch9 -p1 -b .build %patch21 -p1 -b .odbctimer %patch40 -p1 -b .dlopen -%patch41 -p1 -b .easter %patch42 -p1 -b .systzdata %patch43 -p1 -b .headers %if %{with_libzip} @@ -718,8 +748,6 @@ mkdir build-cgi build-apache build-embedded \ %endif # ----- Manage known as failed test ------- -# php_egg_logo_guid() removed by patch41 -rm -f tests/basic/php_egg_logo_guid.phpt # affected by systzdata patch rm -f ext/date/tests/timezone_location_get.phpt # fails sometime @@ -756,28 +784,10 @@ if test "x${vpdo}" != "x%{pdover}"; then fi # Check for some extension version -ver=$(sed -n '/#define PHP_FILEINFO_VERSION /{s/.* "//;s/".*$//;p}' ext/fileinfo/php_fileinfo.h) -if test "$ver" != "%{fileinfover}"; then - : Error: Upstream FILEINFO version is now ${ver}, expecting %{fileinfover}. - : Update the fileinfover macro and rebuild. - exit 1 -fi -ver=$(sed -n '/#define PHP_PHAR_VERSION /{s/.* "//;s/".*$//;p}' ext/phar/php_phar.h) -if test "$ver" != "%{pharver}"; then - : Error: Upstream PHAR version is now ${ver}, expecting %{pharver}. - : Update the pharver macro and rebuild. - exit 1 -fi -ver=$(sed -n '/#define PHP_ZIP_VERSION_STRING /{s/.* "//;s/".*$//;p}' ext/zip/php_zip.h) -if test "$ver" != "%{zipver}"; then - : Error: Upstream ZIP version is now ${ver}, expecting %{zipver}. - : Update the zipver macro and rebuild. - exit 1 -fi -ver=$(sed -n '/#define PHP_JSON_VERSION /{s/.* "//;s/".*$//;p}' ext/json/php_json.h) -if test "$ver" != "%{jsonver}"; then - : Error: Upstream JSON version is now ${ver}, expecting %{jsonver}. - : Update the jsonver macro and rebuild. +ver=$(sed -n '/#define ACCELERATOR_VERSION /{s/.* "//;s/".*$//;p}' ext/opcache/ZendAccelerator.h) +if test "$ver" != "%{opcachever}"; then + : Error: Upstream PHAR version is now ${ver}, expecting %{opcachever}. + : Update the opcachever macro and rebuild. exit 1 fi @@ -799,6 +809,9 @@ chmod 644 README.* # php-fpm configuration files for tmpfiles.d echo "d /run/php-fpm 755 root root" >php-fpm.tmpfiles +# Some extensions have their own configuration file +cp %{SOURCE50} . + %build # aclocal workaround - to be improved @@ -828,17 +841,27 @@ build() { # Old/recent bison version seems to produce a broken parser; # upstream uses GNU Bison 2.3. Workaround: mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend + +# Always static: +# date, filter, libxml, reflection, spl: not supported +# ereg: build options vary per SAPI +# hash: for PHAR_SIG_SHA256 and PHAR_SIG_SHA512 +# session: dep on hash, used by soap and wddx +# pcre: used by filter, zip +# pcntl, readline: only used by CLI sapi +# openssl: for PHAR_SIG_OPENSSL +# zlib: used by image + ln -sf ../configure %configure \ --cache-file=../config.cache \ - --with-libdir=%{_lib} \ + --with-libdir=%{_lib} \ --with-config-file-path=%{_sysconfdir} \ --with-config-file-scan-dir=%{_sysconfdir}/php.d \ --disable-debug \ --with-pic \ --disable-rpath \ --without-pear \ - --with-bz2 \ --with-exec-dir=%{_bindir} \ --with-freetype-dir=%{_prefix} \ --with-png-dir=%{_prefix} \ @@ -846,27 +869,21 @@ ln -sf ../configure --enable-gd-native-ttf \ --with-t1lib=%{_prefix} \ --without-gdbm \ - --with-gettext \ - --with-gmp \ - --with-iconv \ --with-jpeg-dir=%{_prefix} \ --with-openssl \ - --with-pcre-regex=%{_prefix} \ + --with-pcre-regex=%{_prefix} \ --with-zlib \ --with-layout=GNU \ - --enable-exif \ - --enable-ftp \ --enable-magic-quotes \ - --enable-sockets \ --with-kerberos \ --enable-ucd-snmp-hack \ - --enable-shmop \ - --enable-calendar \ - --with-libxml-dir=%{_prefix} \ - --enable-xml \ - --with-system-tzdata \ + --with-libxml-dir=%{_prefix} \ + --with-system-tzdata \ --with-mhash \ - $* +%if %{with_dtrace} + --enable-dtrace \ +%endif + $* if test $? != 0; then tail -500 config.log : configure failed @@ -882,13 +899,24 @@ pushd build-cgi build --enable-force-cgi-redirect \ --libdir=%{_libdir}/php \ --enable-pcntl \ + --enable-opcache \ --with-imap=shared --with-imap-ssl \ --enable-mbstring=shared \ --enable-mbregex \ --with-gd=shared \ + --with-gmp=shared \ + --enable-calendar=shared \ --enable-bcmath=shared \ + --with-bz2=shared \ + --enable-ctype=shared \ --enable-dba=shared --with-db4=%{_prefix} \ --with-tcadb=%{_prefix} \ + --enable-exif=shared \ + --enable-ftp=shared \ + --with-gettext=shared \ + --with-iconv=shared \ + --enable-sockets=shared \ + --enable-tokenizer=shared \ --with-xmlrpc=shared \ --with-ldap=shared --with-ldap-sasl \ --enable-mysqlnd=shared \ @@ -899,6 +927,8 @@ build --enable-force-cgi-redirect \ --with-pdo-firebird=shared,%{_libdir}/firebird \ --enable-dom=shared \ --with-pgsql=shared \ + --enable-simplexml=shared \ + --enable-xml=shared \ --enable-wddx=shared \ --with-snmp=shared,%{_prefix} \ --enable-soap=shared \ @@ -928,6 +958,7 @@ build --enable-force-cgi-redirect \ --with-tidy=shared,%{_prefix} \ --with-mssql=shared,%{_prefix} \ --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ + --enable-shmop=shared \ --enable-posix=shared \ --with-unixODBC=shared,%{_prefix} \ --enable-fileinfo=shared \ @@ -939,10 +970,14 @@ popd without_shared="--without-gd \ --disable-dom --disable-dba --without-unixODBC \ + --disable-opcache \ --disable-xmlreader --disable-xmlwriter \ --without-sqlite3 --disable-phar --disable-fileinfo \ --disable-json --without-pspell --disable-wddx \ - --without-curl --disable-posix \ + --without-curl --disable-posix --disable-xml \ + --disable-simplexml --disable-exif --without-gettext \ + --without-iconv --disable-ftp --without-bz2 --disable-ctype \ + --disable-shmop --disable-sockets --disable-tokenizer \ --disable-sysvmsg --disable-sysvshm --disable-sysvsem" # Build Apache module, and the CLI SAPI, /usr/bin/php @@ -992,13 +1027,24 @@ build --enable-force-cgi-redirect \ --enable-maintainer-zts \ --with-config-file-scan-dir=%{_sysconfdir}/php-zts.d \ --enable-pcntl \ + --enable-opcache \ --with-imap=shared --with-imap-ssl \ --enable-mbstring=shared \ --enable-mbregex \ --with-gd=shared \ + --with-gmp=shared \ + --enable-calendar=shared \ --enable-bcmath=shared \ + --with-bz2=shared \ + --enable-ctype=shared \ --enable-dba=shared --with-db4=%{_prefix} \ --with-tcadb=%{_prefix} \ + --with-gettext=shared \ + --with-iconv=shared \ + --enable-sockets=shared \ + --enable-tokenizer=shared \ + --enable-exif=shared \ + --enable-ftp=shared \ --with-xmlrpc=shared \ --with-ldap=shared --with-ldap-sasl \ --enable-mysqlnd=shared \ @@ -1010,6 +1056,8 @@ build --enable-force-cgi-redirect \ --with-pdo-firebird=shared,%{_libdir}/firebird \ --enable-dom=shared \ --with-pgsql=shared \ + --enable-simplexml=shared \ + --enable-xml=shared \ --enable-wddx=shared \ --with-snmp=shared,%{_prefix} \ --enable-soap=shared \ @@ -1039,6 +1087,7 @@ build --enable-force-cgi-redirect \ --with-tidy=shared,%{_prefix} \ --with-mssql=shared,%{_prefix} \ --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ + --enable-shmop=shared \ --enable-posix=shared \ --with-unixODBC=shared,%{_prefix} \ --enable-fileinfo=shared \ @@ -1075,6 +1124,10 @@ popd %check %if %runselftest + +# Double stack size (required by bug54268.phpt) +ulimit -s 16384 + cd build-apache # Run tests, using the CLI SAPI export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 @@ -1082,10 +1135,13 @@ export SKIP_ONLINE_TESTS=1 unset TZ LANG LC_ALL if ! make test; then set +x - for f in `find .. -name \*.diff -type f -print`; do - echo "TEST FAILURE: $f --" - cat "$f" - echo "-- $f result ends." + for f in $(find .. -name \*.diff -type f -print); do + if ! grep -q XFAIL "${f/.diff/.phpt}" + then + echo "TEST FAILURE: $f --" + cat "$f" + echo -e "\n-- $f result ends." + fi done set -x #exit 1 @@ -1220,37 +1276,53 @@ install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/php-fpm for mod in pgsql odbc ldap snmp xmlrpc imap \ mysqlnd mysqlnd_mysql mysqlnd_mysqli pdo_mysqlnd \ mbstring gd dom xsl soap bcmath dba xmlreader xmlwriter \ + simplexml bz2 calendar ctype exif ftp gettext gmp iconv \ + sockets tokenizer opcache \ pdo pdo_pgsql pdo_odbc pdo_sqlite json %{zipmod} \ sqlite3 interbase pdo_firebird \ enchant phar fileinfo intl \ mcrypt tidy pdo_dblib mssql pspell curl wddx \ - posix sysvshm sysvsem sysvmsg recode \ + posix shmop sysvshm sysvsem sysvmsg recode xml \ %if %{with_libmysql} mysql mysqli pdo_mysql \ %endif ; do - cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${mod}.ini <$RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} + sed -e 's:@EXTPATH@:%{_libdir}/php-zts/modules:' \ + ${ini} >$RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini} + else + cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} < $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${mod}.ini < $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini} < files.${mod} < files.xml +cat files.dom files.xsl files.xml{reader,writer} files.wddx \ + files.simplexml >> files.xml # The mysql and mysqli modules are both packaged in php-mysql %if %{with_libmysql} @@ -1271,7 +1343,7 @@ cat files.pdo_odbc >> files.odbc cat files.pdo_firebird >> files.interbase # sysv* and posix in packaged in php-process -cat files.sysv* files.posix > files.process +cat files.shmop files.sysv* files.posix > files.process # Package sqlite3 and pdo_sqlite with pdo; isolating the sqlite dependency # isn't useful at this time since rpm itself requires sqlite. @@ -1279,7 +1351,10 @@ cat files.pdo_sqlite >> files.pdo cat files.sqlite3 >> files.pdo # Package json, zip, curl, phar and fileinfo in -common. -cat files.json files.curl files.phar files.fileinfo > files.common +cat files.json files.curl files.phar files.fileinfo \ + files.exif files.gettext files.iconv files.calendar \ + files.ftp files.bz2 files.ctype files.sockets \ + files.tokenizer > files.common %if %{with_zip} cat files.zip >> files.common %endif @@ -1468,6 +1543,7 @@ fi %files soap -f files.soap %files bcmath -f files.bcmath %doc libbcmath_COPYING +%files gmp -f files.gmp %files dba -f files.dba %files pdo -f files.pdo %files mcrypt -f files.mcrypt @@ -1480,9 +1556,23 @@ fi %files interbase -f files.interbase %files enchant -f files.enchant %files mysqlnd -f files.mysqlnd +%files opcache -f files.opcache %changelog +* Fri Mar 22 2013 Remi Collet 5.5.0-0.1.beta1 +- update to 5.5.0beta1 + http://fedoraproject.org/wiki/Features/Php55 +- new Zend OPcache extension in php-opccache new sub-package +- don't display XFAIL tests in report +- use xz compressed tarball +- build simplexml and xml extensions shared (moved in php-xml) +- build bz2, calendar, ctype, exif, ftp, gettext, iconv + sockets and tokenizer extensions shared (in php-common) +- build gmp extension shared (in php-gmp new sub-package) +- build shmop extension shared (moved in php-process) +- drop some old compatibility provides (php-api, php-zend-abi, php-pecl-*) + * Thu Mar 14 2013 Remi Collet 5.4.13-1 - update to 5.4.13 - security fix for CVE-2013-1643 diff --git a/sources b/sources index df4340a..cd5682e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -cacd308e978b7cf9ba4993196612ccf7 php-5.4.13.tar.bz2 +19b4558c63660ecb9c2fc71c4eb0e0f5 php-5.5.0beta1.tar.xz