summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS102
-rw-r--r--README.GIT-RULES6
-rw-r--r--UPGRADING10
-rw-r--r--Zend/tests/bug67938.phpt27
-rw-r--r--Zend/tests/bug67985.phpt16
-rw-r--r--Zend/zend.c14
-rw-r--r--Zend/zend_compile.c2
-rw-r--r--Zend/zend_compile.h2
-rw-r--r--Zend/zend_execute_API.c4
-rw-r--r--Zend/zend_globals.h2
-rw-r--r--Zend/zend_ini_parser.c297
-rw-r--r--Zend/zend_ini_parser.h6
-rw-r--r--Zend/zend_ini_parser.output629
-rw-r--r--Zend/zend_ini_parser.y6
-rw-r--r--Zend/zend_ini_scanner.c9490
-rw-r--r--Zend/zend_ini_scanner.h1
-rw-r--r--Zend/zend_ini_scanner.l61
-rw-r--r--Zend/zend_variables.c1
-rw-r--r--acinclude.m42
-rw-r--r--aclocal.m414
-rw-r--r--build/libtool.m412
-rw-r--r--config.guess6
-rwxr-xr-xconfigure124
-rw-r--r--configure.in32
-rw-r--r--ext/date/lib/parse_date.c52
-rw-r--r--ext/date/lib/parse_date.re50
-rw-r--r--ext/date/lib/timezonedb.h1319
-rw-r--r--ext/date/php_date.c6
-rw-r--r--ext/date/tests/bug66985.phpt175
-rw-r--r--ext/date/tests/bug67109.phpt14
-rw-r--r--ext/dom/attr.c9
-rw-r--r--ext/dom/characterdata.c9
-rw-r--r--ext/dom/document.c83
-rw-r--r--ext/dom/node.c35
-rw-r--r--ext/dom/php_dom.c2
-rw-r--r--ext/dom/php_dom.h14
-rw-r--r--ext/dom/tests/node_textcontent.phpt29
-rw-r--r--ext/ereg/tests/eregi_basic.phpt2
-rw-r--r--ext/fileinfo/libmagic/funcs.c9
-rw-r--r--ext/fileinfo/tests/finfo_buffer_basic.phpt2
-rw-r--r--ext/fileinfo/tests/finfo_buffer_variation1.phpt2
-rw-r--r--ext/gd/libgd/gdft.c6
-rw-r--r--ext/gd/tests/bug48801_1.phpt5
-rw-r--r--ext/gd/tests/bug48801_2.phpt25
-rw-r--r--ext/gmp/bug67917.phpt17
-rw-r--r--ext/gmp/gmp.c221
-rw-r--r--ext/gmp/php_gmp.h2
-rw-r--r--ext/gmp/tests/001.phpt21
-rw-r--r--ext/gmp/tests/bug50175.phpt18
-rw-r--r--ext/gmp/tests/gmp_abs.phpt (renamed from ext/gmp/tests/013.phpt)0
-rw-r--r--ext/gmp/tests/gmp_and.phpt (renamed from ext/gmp/tests/029.phpt)0
-rw-r--r--ext/gmp/tests/gmp_clrbit.phpt (renamed from ext/gmp/tests/034.phpt)0
-rw-r--r--ext/gmp/tests/gmp_cmp.phpt (renamed from ext/gmp/tests/026.phpt)0
-rw-r--r--ext/gmp/tests/gmp_com.phpt (renamed from ext/gmp/tests/031.phpt)0
-rw-r--r--ext/gmp/tests/gmp_div_q.phpt (renamed from ext/gmp/tests/009.phpt)0
-rw-r--r--ext/gmp/tests/gmp_div_qr.phpt (renamed from ext/gmp/tests/007.phpt)17
-rw-r--r--ext/gmp/tests/gmp_div_r.phpt (renamed from ext/gmp/tests/008.phpt)0
-rw-r--r--ext/gmp/tests/gmp_divexact.phpt (renamed from ext/gmp/tests/011.phpt)0
-rw-r--r--ext/gmp/tests/gmp_export.phpt80
-rw-r--r--ext/gmp/tests/gmp_fact.phpt (renamed from ext/gmp/tests/014.phpt)0
-rw-r--r--ext/gmp/tests/gmp_gcd.phpt (renamed from ext/gmp/tests/021.phpt)0
-rw-r--r--ext/gmp/tests/gmp_gcdext.phpt (renamed from ext/gmp/tests/022.phpt)0
-rw-r--r--ext/gmp/tests/gmp_hamdist.phpt (renamed from ext/gmp/tests/036.phpt)0
-rw-r--r--ext/gmp/tests/gmp_import.phpt91
-rw-r--r--ext/gmp/tests/gmp_init.phpt (renamed from ext/gmp/tests/040.phpt)0
-rw-r--r--ext/gmp/tests/gmp_intval.phpt (renamed from ext/gmp/tests/004.phpt)0
-rw-r--r--ext/gmp/tests/gmp_invert.phpt (renamed from ext/gmp/tests/023.phpt)0
-rw-r--r--ext/gmp/tests/gmp_jacobi.phpt (renamed from ext/gmp/tests/024.phpt)0
-rw-r--r--ext/gmp/tests/gmp_legendre.phpt (renamed from ext/gmp/tests/025.phpt)0
-rw-r--r--ext/gmp/tests/gmp_mod.phpt (renamed from ext/gmp/tests/010.phpt)0
-rw-r--r--ext/gmp/tests/gmp_neg.phpt (renamed from ext/gmp/tests/012.phpt)0
-rw-r--r--ext/gmp/tests/gmp_or.phpt (renamed from ext/gmp/tests/030.phpt)0
-rw-r--r--ext/gmp/tests/gmp_perfect_square.phpt (renamed from ext/gmp/tests/019.phpt)0
-rw-r--r--ext/gmp/tests/gmp_popcount.phpt (renamed from ext/gmp/tests/035.phpt)0
-rw-r--r--ext/gmp/tests/gmp_pow.phpt (renamed from ext/gmp/tests/015.phpt)0
-rw-r--r--ext/gmp/tests/gmp_pown.phpt (renamed from ext/gmp/tests/016.phpt)9
-rw-r--r--ext/gmp/tests/gmp_prob_prime.phpt (renamed from ext/gmp/tests/020.phpt)0
-rw-r--r--ext/gmp/tests/gmp_random.phpt (renamed from ext/gmp/tests/028.phpt)0
-rw-r--r--ext/gmp/tests/gmp_remroot.phpt (renamed from ext/gmp/tests/041.phpt)49
-rw-r--r--ext/gmp/tests/gmp_root.phpt58
-rw-r--r--ext/gmp/tests/gmp_scan0.phpt (renamed from ext/gmp/tests/037.phpt)0
-rw-r--r--ext/gmp/tests/gmp_scan1.phpt (renamed from ext/gmp/tests/038.phpt)0
-rw-r--r--ext/gmp/tests/gmp_setbit.phpt (renamed from ext/gmp/tests/033.phpt)0
-rw-r--r--ext/gmp/tests/gmp_sign.phpt (renamed from ext/gmp/tests/027.phpt)0
-rw-r--r--ext/gmp/tests/gmp_sqrt.phpt (renamed from ext/gmp/tests/017.phpt)0
-rw-r--r--ext/gmp/tests/gmp_sqrtrem.phpt (renamed from ext/gmp/tests/018.phpt)0
-rw-r--r--ext/gmp/tests/gmp_strval.phpt (renamed from ext/gmp/tests/005.phpt)0
-rw-r--r--ext/gmp/tests/gmp_sub.phpt (renamed from ext/gmp/tests/006.phpt)0
-rw-r--r--ext/gmp/tests/gmp_testbit.phpt (renamed from ext/gmp/tests/039.phpt)5
-rw-r--r--ext/gmp/tests/gmp_xor.phpt (renamed from ext/gmp/tests/032.phpt)0
-rw-r--r--ext/gmp/tests/overloading.phpt60
-rw-r--r--ext/mbstring/mb_gpc.c2
-rw-r--r--ext/mysqli/tests/010.phpt12
-rw-r--r--ext/mysqli/tests/011.phpt4
-rw-r--r--ext/mysqli/tests/012.phpt4
-rw-r--r--ext/mysqli/tests/bug67839.phpt58
-rw-r--r--ext/mysqli/tests/mysqli_change_user.phpt28
-rw-r--r--ext/mysqli/tests/mysqli_change_user_old.phpt10
-rw-r--r--ext/mysqli/tests/mysqli_change_user_oo.phpt7
-rw-r--r--ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt2
-rw-r--r--ext/mysqli/tests/table.inc7
-rw-r--r--ext/mysqlnd/config9.m426
-rw-r--r--ext/mysqlnd/mysqlnd_net.c2
-rw-r--r--ext/mysqlnd/mysqlnd_ps_codec.c59
-rw-r--r--ext/mysqlnd/mysqlnd_result.c2
-rw-r--r--ext/openssl/xp_ssl.c11
-rw-r--r--ext/pcre/pcrelib/ChangeLog2
-rw-r--r--ext/session/mod_user_class.c2
-rw-r--r--ext/session/tests/bug67972.phpt10
-rw-r--r--ext/simplexml/tests/bug62328.phpt (renamed from ext/xml/tests/bug62328.phpt)4
-rw-r--r--ext/soap/interop/client_round2_interop.php2
-rw-r--r--ext/soap/php_http.c2
-rw-r--r--ext/spl/php_spl.c2
-rw-r--r--ext/standard/basic_functions.c1
-rw-r--r--ext/standard/tests/general_functions/parse_ini_string_003.phpt40
-rw-r--r--ext/standard/tests/strings/dirname_basic.phpt2
-rw-r--r--ext/standard/url.c2
-rw-r--r--ext/sysvsem/sysvsem.c18
-rw-r--r--ext/sysvsem/tests/nowait.phpt103
-rw-r--r--ext/sysvsem/tests/sysv.phpt4
-rw-r--r--ext/zlib/tests/bug67724.gz.gzbin0 -> 171 bytes
-rw-r--r--ext/zlib/tests/bug67724.phpt26
-rw-r--r--ext/zlib/zlib_filter.c2
-rw-r--r--main/php_config.h.in3
-rw-r--r--main/php_variables.c12
-rw-r--r--main/php_version.h6
-rw-r--r--php.ini-development2
-rw-r--r--php.ini-production2
-rw-r--r--sapi/cli/php.1.in34
-rw-r--r--sapi/litespeed/lsapi_main.c69
-rw-r--r--sapi/litespeed/lsapilib.c6
-rw-r--r--sapi/phpdbg/phpdbg.c10
-rw-r--r--scripts/dev/find_tested.php2
-rw-r--r--scripts/man1/php-config.1.in14
-rw-r--r--scripts/man1/phpize.1.in14
-rwxr-xr-xserver-tests-config.php2
-rw-r--r--win32/build/confutils.js2
-rw-r--r--win32/php_stdint.h4
-rw-r--r--win32/sendmail.h2
139 files changed, 7731 insertions, 6271 deletions
diff --git a/NEWS b/NEWS
index 384512428..8755e5e61 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,57 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+02 Oct 2014, PHP 5.6.1
+
+- Core:
+ . Implemented FR #38409 (parse_ini_file() looses the type of booleans). (Tjerk)
+ . Fixed bug #65463 (SIGSEGV during zend_shutdown()). (Keyur Govande)
+ . Fixed bug #66036 (Crash on SIGTERM in apache process). (Keyur Govande)
+ . Fixed bug #67878 (program_prefix not honoured in man pages). (Remi)
+ . Fixed bug #67938 (Segfault when extending interface method with variadic).
+ (Nikita)
+ . Fixed bug #67985 (Incorrect last used array index copied to new array after
+ unset). (Tjerk)
+ . Fixed bug #68088 (New Posthandler Potential Illegal efree() vulnerability).
+ (Mike) (CVE-2014-3622)
+
+- DOM:
+ . Made DOMNode::textContent writeable. (Tjerk)
+
+- Fileinfo:
+ . Fixed bug #67731 (finfo::file() returns invalid mime type
+ for binary files). (Anatol)
+
+- GD:
+ . Made fontFetch's path parser thread-safe. (Sara)
+
+- GMP:
+ . Fixed bug #67917 (Using GMP objects with overloaded operators can cause
+ memory exhaustion). (Nikita)
+ . Fixed bug #50175 (gmp_init() results 0 on given base and number starting
+ with 0x or 0b). (Nikita)
+ . Implemented gmp_import() and gmp_export(). (Leigh, Nikita)
+
+- MySQLi:
+ . Fixed bug #67839 (mysqli does not handle 4-byte floats correctly). (Keyur)
+
+- OpenSSL:
+ . Fixed bug #67850 (extension won't build if openssl compiled without SSLv3).
+ (Daniel Lowrey)
+
+- phpdbg:
+ . Fixed issue krakjoe/phpdbg#111 (compile error without ZEND_SIGNALS). (Bob)
+
+- SOAP:
+ . Fixed bug #67955 (SoapClient prepends 0-byte to cookie names). (Philip Hofstetter)
+
+- Session:
+ . Fixed bug #67972 (SessionHandler Invalid memory read create_sid()). (Adam)
+
+- Sysvsem:
+ . Implemented FR #67990 (Add optional nowait argument to sem_acquire).
+ (Matteo)
+
28 Aug 2014, PHP 5.6.0
- Apache2 Handler SAPI:
@@ -25,6 +77,7 @@ PHP NEWS
. Fixed bug #66431 (Special Character via COM Interface (CP_UTF8)). (Anatol)
- Core:
+ . Improved phpinfo() stylesheets. (Colin Viebrock)
. Fixed bug #67693 (incorrect push to the empty array). (Tjerk)
. Removed inconsistency regarding behaviour of array in constants at
run-time. (Bob)
@@ -133,6 +186,8 @@ PHP NEWS
(Freek Lijten)
- Date:
+ . Fixed bug #66060 (Heap buffer over-read in DateInterval). (CVE-2013-6712)
+ (Remi)
. Fixed bug #66091 (memory leaks in DateTime constructor) (Tjerk).
. Fixed bug #67308 (Serialize of DateTime truncates fractions of second).
(Adam)
@@ -158,24 +213,26 @@ PHP NEWS
. Fixed bug #67705 (extensive backtracking in rule regular expression).
(CVE-2014-3538) (Remi)
. Fixed bug #67327 (fileinfo: CDF infinite loop in nelements DoS).
+ (CVE-2014-0238)
. Fixed bug #67328 (fileinfo: fileinfo: numerous file_printf calls resulting in
- performance degradation).
+ performance degradation). (CVE-2014-0237)
. Fixed bug #67326 (fileinfo: cdf_read_short_sector insufficient boundary check).
+ (CVE-2014-0207)
. Fixed bug #67329 (fileinfo: NULL pointer deference flaw by processing certain
- CDF files).
+ CDF files). (CVE-2014-0236)
. Fixed bug #67410 (fileinfo: mconvert incorrect handling of truncated pascal
- string size). (Francisco Alonso, Jan Kaluza, Remi)
+ string size). (CVE-2014-3478) (Francisco Alonso, Jan Kaluza, Remi)
. Fixed bug #67411 (fileinfo: cdf_check_stream_offset insufficient boundary
- check). (Francisco Alonso, Jan Kaluza, Remi)
+ check). (CVE-2014-3479) (Francisco Alonso, Jan Kaluza, Remi)
. Fixed bug #67412 (fileinfo: cdf_count_chain insufficient boundary check).
- (Francisco Alonso, Jan Kaluza, Remi)
+ (CVE-2014-3480) (Francisco Alonso, Jan Kaluza, Remi)
. Fixed bug #67413 (fileinfo: cdf_read_property_info insufficient boundary
- check). (Francisco Alonso, Jan Kaluza, Remi)
+ check). (CVE-2014-3487) (Francisco Alonso, Jan Kaluza, Remi)
. Upgraded to libmagic-5.17 (Anatol)
. Fixed bug #66731 (file: infinite recursion). (CVE-2014-1943) (Remi)
- . Fixed bug #66820 (out-of-bounds memory access in fileinfo)
+ . Fixed bug #66820 (out-of-bounds memory access in fileinfo).
(CVE-2014-2270). (Remi)
- . Fixed bug #66946i (fileinfo: extensive backtracking in awk rule regular
+ . Fixed bug #66946 (fileinfo: extensive backtracking in awk rule regular
expression). (CVE-2013-7345) (Remi)
. Fixed bug #66987 (Memory corruption in fileinfo ext / bigendian).
(Remi)
@@ -184,12 +241,12 @@ PHP NEWS
. Fixed bug #66307 (Fileinfo crashes with powerpoint files). (Anatol)
- FPM:
- . Fix bug #67606 (revised fix 67541, broke mod_fastcgi BC). (David Zuelke)
+ . Fixed bug #67606 (revised fix 67541, broke mod_fastcgi BC). (David Zuelke)
. Fixed bug #67530 (error_log=syslog ignored). (Remi)
. Fixed bug #67635 (php links to systemd libraries without using pkg-config).
(pacho@gentoo.org, Remi)
- . Fix bug #67531 (syslog cannot be set in pool configuration). (Remi)
- . Fix bug #67541 (Fix Apache 2.4.10+ SetHandler proxy:fcgi://
+ . Fixed bug #67531 (syslog cannot be set in pool configuration). (Remi)
+ . Fixed bug #67541 (Fix Apache 2.4.10+ SetHandler proxy:fcgi://
incompatibilities). (David Zuelke)
. Included apparmor support in fpm
(RFC: https://wiki.php.net/rfc/fpm_change_hat). (Gernot Vormayr)
@@ -209,10 +266,11 @@ PHP NEWS
. Fixed bug #67248 (imageaffinematrixget missing check of parameters). (Stas)
. Fixed imagettftext to load the correct character map rather than the last one.
(Scott)
- . Fixed bug #66714 ( imageconvolution breakage). (Brad Daily)
- . Fixed bug #66815 (imagecrop(): insufficient fix for NULL defer
- CVE-2013-7327). (Tomas Hoger, Remi).
- . Fixed #66869 (Invalid 2nd argument crashes imageaffinematrixget) (Pierre)
+ . Fixed bug #66356 (Heap Overflow Vulnerability in imagecrop()).
+ (CVE-2013-7226)
+ . Fixed bug #66815 (imagecrop(): insufficient fix for NULL defer).
+ (CVE-2013-7327). (Tomas Hoger, Remi).
+ . Fixed bug #66869 (Invalid 2nd argument crashes imageaffinematrixget) (Pierre)
. Fixed bug #66887 (imagescale - poor quality of scaled image). (Remi)
. Fixed bug #66890 (imagescale segfault). (Remi)
. Fixed bug #66893 (imagescale ignore method argument). (Remi)
@@ -305,6 +363,8 @@ PHP NEWS
fields). (Keyur Govande)
- OpenSSL:
+ . Fixed bug #41631 (socket timeouts not honored in blocking SSL reads)
+ (Daniel Lowrey).
. Fixed missing type checks in OpenSSL options (Yussuf Khalil, Stas).
. Fixed bug #67609 (TLS connections fail behind HTTP proxy). (Daniel Lowrey)
. Fixed broken build against OpenSSL older than 0.9.8 where ECDH unavailable.
@@ -385,9 +445,9 @@ PHP NEWS
. Encrypted TLS servers now support the server name indication TLS extension
via the new "SNI_server_certs" SSL context option. (Daniel Lowrey)
. Fixed bug #66833 (Default disgest algo is still MD5, switch to SHA1). (Remi)
- . Fix bug #66942 (memory leak in openssl_seal()). (Chuan Ma)
- . Fix bug #66952 (memory leak in openssl_open()). (Chuan Ma)
- . Fix bug #66840 (Fix broken build when extension built separately).
+ . Fixed bug #66942 (memory leak in openssl_seal()). (Chuan Ma)
+ . Fixed bug #66952 (memory leak in openssl_open()). (Chuan Ma)
+ . Fixed bug #66840 (Fix broken build when extension built separately).
(Daniel Lowrey)
- OPcache:
@@ -410,7 +470,7 @@ PHP NEWS
. Added support for (*MARK) backtracking verbs. (Nikita)
- pgsql:
- . Fix bug #67550 (Error in code "form" instead of "from", pgsql.c, line 756),
+ . Fixed bug #67550 (Error in code "form" instead of "from", pgsql.c, line 756),
which affected builds against libpq < 7.3. (Adam)
. pg_insert()/pg_select()/pg_update()/pg_delete() are no longer EXPERIMENTAL.
(Yasuo)
@@ -438,7 +498,7 @@ PHP NEWS
- phpdbg
. Fixed bug #67575 (Compilation fails for phpdbg when the
build directory != src directory). (Andy Thompson)
- . Fix Bug #67499 (readline feature not enabled when build with libedit). (Remi)
+ . Fixed Bug #67499 (readline feature not enabled when build with libedit). (Remi)
. Fix issue krakjoe/phpdbg#94 (List behavior is inconsistent). (Bob)
. Fix issue krakjoe/phpdbg#97 (The prompt should always ensure it is on a
newline). (Bob)
@@ -482,7 +542,7 @@ PHP NEWS
. Fixed Bug #66071 (memory corruption in error handling) (Popa)
- Phar:
- . Fix bug #64498 ($phar->buildFromDirectory can't compress file with an accent
+ . Fixed bug #64498 ($phar->buildFromDirectory can't compress file with an accent
in its name). (PR #588)
. Fixed bug #67587 (Redirection loop on nginx with FPM). (Christian Weiske)
diff --git a/README.GIT-RULES b/README.GIT-RULES
index 6376d5abd..843c61ea6 100644
--- a/README.GIT-RULES
+++ b/README.GIT-RULES
@@ -54,9 +54,7 @@ Currently we have the following branches in use::
PHP-5.4 Is used to release the PHP 5.4.x series. This is a current
stable version and is open for bugfixes only.
- PHP-5.3 Is used to release the PHP 5.3.x series. This is currently
- in extended support and open forsecurity fixes only. Triaged
- via security@php.net
+ PHP-5.3 This branch is closed.
PHP-5.2 This branch is closed.
@@ -69,7 +67,7 @@ Currently we have the following branches in use::
The next few rules are more of a technical nature::
- 1. All changes should first go to the lowest branch (i.e. 5.3) and then
+ 1. All changes should first go to the lowest branch (i.e. 5.4) and then
get merged up to all other branches. If a change is not needed for
later branches (i.e. fixes for features which where dropped from later
branches) an empty merge should be done.
diff --git a/UPGRADING b/UPGRADING
index 4729205a6..d4dd30335 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -256,12 +256,19 @@ PHP 5.6 UPGRADE NOTES
Manipulated serialization strings for objects implementing Serializable by
replacing "C:" with "O:" at the start will now produce an error.
+- parse_ini_file():
+- parse_ini_string():
+ Added scanner mode INI_SCANNER_TYPED to yield typed .ini values.
+ For PHP >= 5.6.1
+
========================================
6. New Functions
========================================
- GMP:
Added gmp_root($a, $nth) and gmp_rootrem($a, $nth) for calculating nth roots.
+ Added gmp_import($data, $word_size = 1, $options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN) in PHP 5.6.1.
+ Added gmp_export($gmpnumber, $word_size = 1, $options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN) in PHP 5.6.1.
- Hash
Added hash_equals($known_string, $user_string)
@@ -369,6 +376,9 @@ PHP 5.6 UPGRADE NOTES
- Added LISTEN/NOTIFY support via PDO::pgsqlGetNotify / PDO::pgsqlGetPid()
as described in https://bugs.php.net/bug.php?id=42614.
+- DOM:
+ - DOMNode::textContent is now a writeable property. (>= 5.6.1)
+
========================================
10. New Global Constants
========================================
diff --git a/Zend/tests/bug67938.phpt b/Zend/tests/bug67938.phpt
new file mode 100644
index 000000000..6597c4895
--- /dev/null
+++ b/Zend/tests/bug67938.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #67938: Segfault when extending interface method with variadic
+--FILE--
+<?php
+
+interface TestInterface {
+ public function foo();
+ public function bar(array $bar);
+}
+
+class Test implements TestInterface {
+ public function foo(...$args) {
+ echo __METHOD__, "\n";
+ }
+ public function bar(array $bar, ...$args) {
+ echo __METHOD__, "\n";
+ }
+}
+
+$obj = new Test;
+$obj->foo();
+$obj->bar([]);
+
+?>
+--EXPECT--
+Test::foo
+Test::bar
diff --git a/Zend/tests/bug67985.phpt b/Zend/tests/bug67985.phpt
new file mode 100644
index 000000000..6f032643f
--- /dev/null
+++ b/Zend/tests/bug67985.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Bug #67985 - Last used array index not copied to new array at assignment
+--FILE--
+<?php
+
+$a = ['zero', 'one', 'two'];
+unset($a[2]);
+$b = $a;
+$a[] = 'three';
+$b[] = 'three';
+
+var_dump($a === $b);
+
+?>
+--EXPECT--
+bool(true)
diff --git a/Zend/zend.c b/Zend/zend.c
index 34dcc7546..891928359 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -822,6 +822,20 @@ void zend_shutdown(TSRMLS_D) /* {{{ */
zend_shutdown_timeout_thread();
#endif
zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
+
+ if (EG(active))
+ {
+ /*
+ * The order of destruction is important here.
+ * See bugs #65463 and 66036.
+ */
+ zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
+ zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) zend_cleanup_user_class_data TSRMLS_CC);
+ zend_cleanup_internal_classes(TSRMLS_C);
+ zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) clean_non_persistent_function_full TSRMLS_CC);
+ zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) clean_non_persistent_class_full TSRMLS_CC);
+ }
+
zend_destroy_modules();
virtual_cwd_deactivate(TSRMLS_C);
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 7c979d56b..54b01a845 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3258,7 +3258,7 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
* go through all the parameters of the function and not just those present in the
* prototype. */
num_args = proto->common.num_args;
- if ((fe->common.fn_flags & ZEND_ACC_VARIADIC)
+ if ((proto->common.fn_flags & ZEND_ACC_VARIADIC)
&& fe->common.num_args > proto->common.num_args) {
num_args = fe->common.num_args;
}
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index f86a41ae2..876e8ec5f 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -686,6 +686,8 @@ ZEND_API void zend_cleanup_internal_class_data(zend_class_entry *ce TSRMLS_DC);
ZEND_API void zend_cleanup_internal_classes(TSRMLS_D);
ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC);
ZEND_API int zend_cleanup_function_data_full(zend_function *function TSRMLS_DC);
+ZEND_API int clean_non_persistent_function_full(zend_function *function TSRMLS_DC);
+ZEND_API int clean_non_persistent_class_full(zend_class_entry **ce TSRMLS_DC);
ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC);
ZEND_API void zend_function_dtor(zend_function *function);
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index af32e91f2..243da3fde 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -109,7 +109,7 @@ static int clean_non_persistent_function(zend_function *function TSRMLS_DC) /* {
}
/* }}} */
-static int clean_non_persistent_function_full(zend_function *function TSRMLS_DC) /* {{{ */
+ZEND_API int clean_non_persistent_function_full(zend_function *function TSRMLS_DC) /* {{{ */
{
return (function->type == ZEND_INTERNAL_FUNCTION) ? ZEND_HASH_APPLY_KEEP : ZEND_HASH_APPLY_REMOVE;
}
@@ -121,7 +121,7 @@ static int clean_non_persistent_class(zend_class_entry **ce TSRMLS_DC) /* {{{ */
}
/* }}} */
-static int clean_non_persistent_class_full(zend_class_entry **ce TSRMLS_DC) /* {{{ */
+ZEND_API int clean_non_persistent_class_full(zend_class_entry **ce TSRMLS_DC) /* {{{ */
{
return ((*ce)->type == ZEND_INTERNAL_CLASS) ? ZEND_HASH_APPLY_KEEP : ZEND_HASH_APPLY_REMOVE;
}
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 31dd9af61..f78d404da 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -283,7 +283,7 @@ struct _zend_ini_scanner_globals {
char *filename;
int lineno;
- /* Modes are: ZEND_INI_SCANNER_NORMAL, ZEND_INI_SCANNER_RAW */
+ /* Modes are: ZEND_INI_SCANNER_NORMAL, ZEND_INI_SCANNER_RAW, ZEND_INI_SCANNER_TYPED */
int scanner_mode;
};
diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c
index c9d3b3893..f0d0128b0 100644
--- a/Zend/zend_ini_parser.c
+++ b/Zend/zend_ini_parser.c
@@ -365,7 +365,8 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
TC_QUOTED_STRING = 268,
BOOL_TRUE = 269,
BOOL_FALSE = 270,
- END_OF_LINE = 271
+ NULL_NULL = 271,
+ END_OF_LINE = 272
};
#endif
/* Tokens. */
@@ -382,7 +383,8 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
#define TC_QUOTED_STRING 268
#define BOOL_TRUE 269
#define BOOL_FALSE 270
-#define END_OF_LINE 271
+#define NULL_NULL 271
+#define END_OF_LINE 272
@@ -612,20 +614,20 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 121
+#define YYLAST 123
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 43
+#define YYNTOKENS 44
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 13
/* YYNRULES -- Number of rules. */
-#define YYNRULES 49
+#define YYNRULES 50
/* YYNRULES -- Number of states. */
-#define YYNSTATES 71
+#define YYNSTATES 72
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 271
+#define YYMAXUTOK 272
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -636,16 +638,16 @@ static const yytype_uint8 yytranslate[] =
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 39, 21, 2, 29, 28, 38, 22,
- 41, 42, 27, 24, 19, 25, 20, 26, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 18, 2,
- 31, 17, 32, 33, 34, 2, 2, 2, 2, 2,
+ 2, 2, 2, 40, 22, 2, 30, 29, 39, 23,
+ 42, 43, 28, 25, 20, 26, 21, 27, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 19, 2,
+ 32, 18, 33, 34, 35, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 40, 23, 2, 2, 2, 2, 2,
+ 2, 2, 2, 41, 24, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 35, 37, 36, 30, 2, 2, 2,
+ 2, 2, 2, 36, 38, 37, 31, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -660,7 +662,7 @@ static const yytype_uint8 yytranslate[] =
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16
+ 15, 16, 17
};
#if YYDEBUG
@@ -669,39 +671,41 @@ static const yytype_uint8 yytranslate[] =
static const yytype_uint8 yyprhs[] =
{
0, 0, 3, 6, 7, 11, 15, 21, 23, 25,
- 27, 28, 30, 32, 34, 36, 38, 39, 42, 45,
- 46, 48, 50, 54, 57, 60, 65, 67, 69, 73,
- 76, 79, 84, 86, 90, 94, 98, 101, 104, 108,
- 112, 114, 116, 118, 120, 122, 124, 126, 128, 130
+ 27, 28, 30, 32, 34, 36, 38, 40, 41, 44,
+ 47, 48, 50, 52, 56, 59, 62, 67, 69, 71,
+ 75, 78, 81, 86, 88, 92, 96, 100, 103, 106,
+ 110, 114, 116, 118, 120, 122, 124, 126, 128, 130,
+ 132
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
- 44, 0, -1, 44, 45, -1, -1, 3, 46, 40,
- -1, 9, 17, 47, -1, 10, 48, 40, 17, 47,
- -1, 9, -1, 16, -1, 50, -1, -1, 52, -1,
- 14, -1, 15, -1, 16, -1, 51, -1, -1, 49,
- 53, -1, 49, 13, -1, -1, 53, -1, 54, -1,
- 21, 49, 21, -1, 50, 53, -1, 50, 54, -1,
- 50, 21, 49, 21, -1, 53, -1, 55, -1, 21,
- 49, 21, -1, 51, 53, -1, 51, 55, -1, 51,
- 21, 49, 21, -1, 51, -1, 52, 37, 52, -1,
- 52, 38, 52, -1, 52, 23, 52, -1, 30, 52,
- -1, 39, 52, -1, 41, 52, 42, -1, 11, 12,
- 36, -1, 5, -1, 4, -1, 6, -1, 7, -1,
- 8, -1, 5, -1, 4, -1, 6, -1, 7, -1,
- 8, -1
+ 45, 0, -1, 45, 46, -1, -1, 3, 47, 41,
+ -1, 9, 18, 48, -1, 10, 49, 41, 18, 48,
+ -1, 9, -1, 17, -1, 51, -1, -1, 53, -1,
+ 14, -1, 15, -1, 16, -1, 17, -1, 52, -1,
+ -1, 50, 54, -1, 50, 13, -1, -1, 54, -1,
+ 55, -1, 22, 50, 22, -1, 51, 54, -1, 51,
+ 55, -1, 51, 22, 50, 22, -1, 54, -1, 56,
+ -1, 22, 50, 22, -1, 52, 54, -1, 52, 56,
+ -1, 52, 22, 50, 22, -1, 52, -1, 53, 38,
+ 53, -1, 53, 39, 53, -1, 53, 24, 53, -1,
+ 31, 53, -1, 40, 53, -1, 42, 53, 43, -1,
+ 11, 12, 37, -1, 5, -1, 4, -1, 6, -1,
+ 7, -1, 8, -1, 5, -1, 4, -1, 6, -1,
+ 7, -1, 8, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 276, 276, 277, 281, 288, 296, 305, 306, 310,
- 311, 315, 316, 317, 318, 322, 323, 327, 328, 329,
- 333, 334, 335, 336, 337, 338, 342, 343, 344, 345,
- 346, 347, 351, 352, 353, 354, 355, 356, 357, 361,
- 365, 366, 367, 368, 369, 373, 374, 375, 376, 377
+ 0, 277, 277, 278, 282, 289, 297, 306, 307, 311,
+ 312, 316, 317, 318, 319, 320, 324, 325, 329, 330,
+ 331, 335, 336, 337, 338, 339, 340, 344, 345, 346,
+ 347, 348, 349, 353, 354, 355, 356, 357, 358, 359,
+ 363, 367, 368, 369, 370, 371, 375, 376, 377, 378,
+ 379
};
#endif
@@ -713,13 +717,13 @@ static const char *const yytname[] =
"$end", "error", "$undefined", "TC_SECTION", "TC_RAW", "TC_CONSTANT",
"TC_NUMBER", "TC_STRING", "TC_WHITESPACE", "TC_LABEL", "TC_OFFSET",
"TC_DOLLAR_CURLY", "TC_VARNAME", "TC_QUOTED_STRING", "BOOL_TRUE",
- "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'\\''",
- "'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'", "'<'", "'>'",
- "'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'", "'('", "')'",
- "$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", 0
+ "BOOL_FALSE", "NULL_NULL", "END_OF_LINE", "'='", "':'", "','", "'.'",
+ "'\"'", "'\\''", "'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'",
+ "'<'", "'>'", "'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'",
+ "'('", "')'", "$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", 0
};
#endif
@@ -729,31 +733,33 @@ static const char *const yytname[] =
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 61, 58, 44,
- 46, 34, 39, 94, 43, 45, 47, 42, 37, 36,
- 126, 60, 62, 63, 64, 123, 125, 124, 38, 33,
- 93, 40, 41
+ 265, 266, 267, 268, 269, 270, 271, 272, 61, 58,
+ 44, 46, 34, 39, 94, 43, 45, 47, 42, 37,
+ 36, 126, 60, 62, 63, 64, 123, 125, 124, 38,
+ 33, 93, 40, 41
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 43, 44, 44, 45, 45, 45, 45, 45, 46,
- 46, 47, 47, 47, 47, 48, 48, 49, 49, 49,
- 50, 50, 50, 50, 50, 50, 51, 51, 51, 51,
- 51, 51, 52, 52, 52, 52, 52, 52, 52, 53,
- 54, 54, 54, 54, 54, 55, 55, 55, 55, 55
+ 0, 44, 45, 45, 46, 46, 46, 46, 46, 47,
+ 47, 48, 48, 48, 48, 48, 49, 49, 50, 50,
+ 50, 51, 51, 51, 51, 51, 51, 52, 52, 52,
+ 52, 52, 52, 53, 53, 53, 53, 53, 53, 53,
+ 54, 55, 55, 55, 55, 55, 56, 56, 56, 56,
+ 56
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 2, 0, 3, 3, 5, 1, 1, 1,
- 0, 1, 1, 1, 1, 1, 0, 2, 2, 0,
- 1, 1, 3, 2, 2, 4, 1, 1, 3, 2,
- 2, 4, 1, 3, 3, 3, 2, 2, 3, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 0, 1, 1, 1, 1, 1, 1, 0, 2, 2,
+ 0, 1, 1, 3, 2, 2, 4, 1, 1, 3,
+ 2, 2, 4, 1, 3, 3, 3, 2, 2, 3,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -761,43 +767,43 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 3, 0, 1, 10, 7, 16, 8, 2, 41, 40,
- 42, 43, 44, 0, 19, 0, 9, 20, 21, 0,
- 46, 45, 47, 48, 49, 19, 0, 15, 26, 27,
- 0, 0, 4, 19, 23, 24, 12, 13, 14, 0,
- 0, 0, 5, 32, 11, 0, 0, 19, 29, 30,
- 39, 18, 22, 17, 0, 36, 37, 0, 0, 0,
- 0, 28, 0, 0, 25, 38, 35, 33, 34, 6,
- 31
+ 3, 0, 1, 10, 7, 17, 8, 2, 42, 41,
+ 43, 44, 45, 0, 20, 0, 9, 21, 22, 0,
+ 47, 46, 48, 49, 50, 20, 0, 16, 27, 28,
+ 0, 0, 4, 20, 24, 25, 12, 13, 14, 15,
+ 0, 0, 0, 5, 33, 11, 0, 0, 20, 30,
+ 31, 40, 19, 23, 18, 0, 37, 38, 0, 0,
+ 0, 0, 29, 0, 0, 26, 39, 36, 34, 35,
+ 6, 32
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 1, 7, 15, 42, 26, 31, 16, 43, 44,
+ -1, 1, 7, 15, 43, 26, 31, 16, 44, 45,
28, 18, 29
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -29
+#define YYPACT_NINF -25
static const yytype_int8 yypact[] =
{
- -29, 94, -29, 48, -15, 66, -29, -29, -29, -29,
- -29, -29, -29, -2, -29, -28, 74, -29, -29, 0,
- -29, -29, -29, -29, -29, -29, -21, 85, -29, -29,
- 1, 54, -29, -29, -29, -29, -29, -29, -29, 27,
- 27, 27, -29, 85, 24, 87, 12, -29, -29, -29,
- -29, -29, -29, -29, 88, -29, -29, -20, 27, 27,
- 27, -29, 0, 100, -29, -29, -29, -29, -29, -29,
- -29
+ -25, 9, -25, 73, -17, 81, -25, -25, -25, -25,
+ -25, -25, -25, 15, -25, -20, 93, -25, -25, 0,
+ -25, -25, -25, -25, -25, -25, -12, 101, -25, -25,
+ -7, 36, -25, -25, -25, -25, -25, -25, -25, -25,
+ 28, 28, 28, -25, 101, -1, 40, 30, -25, -25,
+ -25, -25, -25, -25, -25, 80, -25, -25, 33, 28,
+ 28, 28, -25, 0, 100, -25, -25, -25, -25, -25,
+ -25, -25
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
- -29, -29, -29, -29, -19, -29, -24, -29, 44, -14,
- -3, 34, -7
+ -25, -25, -25, -25, -9, -25, -23, -25, 50, 4,
+ -3, 44, -24
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -807,50 +813,50 @@ static const yytype_int8 yypgoto[] =
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
- 17, 45, 19, 58, 20, 21, 22, 23, 24, 54,
- 30, 13, 32, 34, 36, 37, 38, 59, 60, 46,
- 49, 25, 65, 63, 48, 55, 56, 57, 53, 62,
- 39, 20, 21, 22, 23, 24, 49, 50, 13, 40,
- 48, 41, 53, 69, 66, 67, 68, 58, 25, 27,
- 35, 53, 8, 9, 10, 11, 12, 39, 0, 13,
- 53, 59, 60, 0, 0, 13, 40, 51, 41, 14,
- 20, 21, 22, 23, 24, 52, 0, 13, 8, 9,
- 10, 11, 12, 0, 0, 13, 0, 25, 0, 20,
- 21, 22, 23, 24, 2, 33, 13, 3, 13, 13,
- 51, 51, 0, 4, 5, 0, 47, 0, 61, 64,
- 6, 13, 0, 51, 0, 0, 0, 0, 0, 0,
- 0, 70
+ 17, 19, 46, 50, 20, 21, 22, 23, 24, 2,
+ 55, 13, 3, 34, 36, 37, 38, 39, 4, 5,
+ 50, 32, 25, 59, 49, 64, 6, 30, 54, 47,
+ 51, 40, 20, 21, 22, 23, 24, 60, 61, 13,
+ 41, 49, 42, 54, 56, 57, 58, 13, 63, 52,
+ 25, 13, 54, 52, 70, 27, 0, 59, 53, 40,
+ 35, 54, 62, 67, 68, 69, 0, 0, 41, 0,
+ 42, 60, 61, 0, 0, 0, 66, 8, 9, 10,
+ 11, 12, 0, 0, 13, 20, 21, 22, 23, 24,
+ 0, 13, 13, 52, 0, 14, 0, 8, 9, 10,
+ 11, 12, 65, 25, 13, 20, 21, 22, 23, 24,
+ 0, 13, 13, 52, 0, 33, 0, 0, 0, 0,
+ 0, 0, 71, 48
};
static const yytype_int8 yycheck[] =
{
- 3, 25, 17, 23, 4, 5, 6, 7, 8, 33,
- 12, 11, 40, 16, 14, 15, 16, 37, 38, 40,
- 27, 21, 42, 47, 27, 39, 40, 41, 31, 17,
- 30, 4, 5, 6, 7, 8, 43, 36, 11, 39,
- 43, 41, 45, 62, 58, 59, 60, 23, 21, 5,
- 16, 54, 4, 5, 6, 7, 8, 30, -1, 11,
- 63, 37, 38, -1, -1, 11, 39, 13, 41, 21,
- 4, 5, 6, 7, 8, 21, -1, 11, 4, 5,
- 6, 7, 8, -1, -1, 11, -1, 21, -1, 4,
- 5, 6, 7, 8, 0, 21, 11, 3, 11, 11,
- 13, 13, -1, 9, 10, -1, 21, -1, 21, 21,
- 16, 11, -1, 13, -1, -1, -1, -1, -1, -1,
- -1, 21
+ 3, 18, 25, 27, 4, 5, 6, 7, 8, 0,
+ 33, 11, 3, 16, 14, 15, 16, 17, 9, 10,
+ 44, 41, 22, 24, 27, 48, 17, 12, 31, 41,
+ 37, 31, 4, 5, 6, 7, 8, 38, 39, 11,
+ 40, 44, 42, 46, 40, 41, 42, 11, 18, 13,
+ 22, 11, 55, 13, 63, 5, -1, 24, 22, 31,
+ 16, 64, 22, 59, 60, 61, -1, -1, 40, -1,
+ 42, 38, 39, -1, -1, -1, 43, 4, 5, 6,
+ 7, 8, -1, -1, 11, 4, 5, 6, 7, 8,
+ -1, 11, 11, 13, -1, 22, -1, 4, 5, 6,
+ 7, 8, 22, 22, 11, 4, 5, 6, 7, 8,
+ -1, 11, 11, 13, -1, 22, -1, -1, -1, -1,
+ -1, -1, 22, 22
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 44, 0, 3, 9, 10, 16, 45, 4, 5,
- 6, 7, 8, 11, 21, 46, 50, 53, 54, 17,
- 4, 5, 6, 7, 8, 21, 48, 51, 53, 55,
- 12, 49, 40, 21, 53, 54, 14, 15, 16, 30,
- 39, 41, 47, 51, 52, 49, 40, 21, 53, 55,
- 36, 13, 21, 53, 49, 52, 52, 52, 23, 37,
- 38, 21, 17, 49, 21, 42, 52, 52, 52, 47,
- 21
+ 0, 45, 0, 3, 9, 10, 17, 46, 4, 5,
+ 6, 7, 8, 11, 22, 47, 51, 54, 55, 18,
+ 4, 5, 6, 7, 8, 22, 49, 52, 54, 56,
+ 12, 50, 41, 22, 54, 55, 14, 15, 16, 17,
+ 31, 40, 42, 48, 52, 53, 50, 41, 22, 54,
+ 56, 37, 13, 22, 54, 50, 53, 53, 53, 24,
+ 38, 39, 22, 18, 50, 22, 43, 53, 53, 53,
+ 48, 22
};
#define yyerrok (yyerrstatus = 0)
@@ -1679,7 +1685,7 @@ yyreduce:
#endif
ZEND_INI_PARSER_CB(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
free(Z_STRVAL((yyvsp[(1) - (3)])));
- free(Z_STRVAL((yyvsp[(3) - (3)])));
+ zval_internal_dtor(&(yyvsp[(3) - (3)]));
}
break;
@@ -1692,7 +1698,7 @@ yyreduce:
ZEND_INI_PARSER_CB(&(yyvsp[(1) - (5)]), &(yyvsp[(5) - (5)]), &(yyvsp[(2) - (5)]), ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
free(Z_STRVAL((yyvsp[(1) - (5)])));
free(Z_STRVAL((yyvsp[(2) - (5)])));
- free(Z_STRVAL((yyvsp[(5) - (5)])));
+ zval_internal_dtor(&(yyvsp[(5) - (5)]));
}
break;
@@ -1728,22 +1734,22 @@ yyreduce:
case 14:
- { zend_ini_init_string(&(yyval)); }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 15:
- { (yyval) = (yyvsp[(1) - (1)]); }
+ { zend_ini_init_string(&(yyval)); }
break;
case 16:
- { zend_ini_init_string(&(yyval)); }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 17:
- { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
+ { zend_ini_init_string(&(yyval)); }
break;
case 18:
@@ -1753,12 +1759,12 @@ yyreduce:
case 19:
- { zend_ini_init_string(&(yyval)); }
+ { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
break;
case 20:
- { (yyval) = (yyvsp[(1) - (1)]); }
+ { zend_ini_init_string(&(yyval)); }
break;
case 21:
@@ -1768,12 +1774,12 @@ yyreduce:
case 22:
- { (yyval) = (yyvsp[(2) - (3)]); }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 23:
- { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
+ { (yyval) = (yyvsp[(2) - (3)]); }
break;
case 24:
@@ -1783,12 +1789,12 @@ yyreduce:
case 25:
- { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
+ { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
break;
case 26:
- { (yyval) = (yyvsp[(1) - (1)]); }
+ { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
break;
case 27:
@@ -1798,12 +1804,12 @@ yyreduce:
case 28:
- { (yyval) = (yyvsp[(2) - (3)]); }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 29:
- { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
+ { (yyval) = (yyvsp[(2) - (3)]); }
break;
case 30:
@@ -1813,96 +1819,101 @@ yyreduce:
case 31:
- { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
+ { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
break;
case 32:
- { (yyval) = (yyvsp[(1) - (1)]); }
+ { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
break;
case 33:
- { zend_ini_do_op('|', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 34:
- { zend_ini_do_op('&', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
+ { zend_ini_do_op('|', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
break;
case 35:
- { zend_ini_do_op('^', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
+ { zend_ini_do_op('&', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
break;
case 36:
- { zend_ini_do_op('~', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
+ { zend_ini_do_op('^', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
break;
case 37:
- { zend_ini_do_op('!', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
+ { zend_ini_do_op('~', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
break;
case 38:
- { (yyval) = (yyvsp[(2) - (3)]); }
+ { zend_ini_do_op('!', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
break;
case 39:
- { zend_ini_get_var(&(yyval), &(yyvsp[(2) - (3)]) TSRMLS_CC); free(Z_STRVAL((yyvsp[(2) - (3)]))); }
+ { (yyval) = (yyvsp[(2) - (3)]); }
break;
case 40:
- { (yyval) = (yyvsp[(1) - (1)]); }
+ { zend_ini_get_var(&(yyval), &(yyvsp[(2) - (3)]) TSRMLS_CC); free(Z_STRVAL((yyvsp[(2) - (3)]))); }
break;
case 41:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 42:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
break;
case 43:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
break;
case 44:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
break;
case 45:
- { zend_ini_get_constant(&(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
break;
case 46:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
+ { zend_ini_get_constant(&(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); }
break;
case 47:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
break;
case 48:
- { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
break;
case 49:
+ { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
+ break;
+
+ case 50:
+
{ (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
break;
diff --git a/Zend/zend_ini_parser.h b/Zend/zend_ini_parser.h
index 1e0c9a96d..ddfb49218 100644
--- a/Zend/zend_ini_parser.h
+++ b/Zend/zend_ini_parser.h
@@ -52,7 +52,8 @@
TC_QUOTED_STRING = 268,
BOOL_TRUE = 269,
BOOL_FALSE = 270,
- END_OF_LINE = 271
+ NULL_NULL = 271,
+ END_OF_LINE = 272
};
#endif
/* Tokens. */
@@ -69,7 +70,8 @@
#define TC_QUOTED_STRING 268
#define BOOL_TRUE 269
#define BOOL_FALSE 270
-#define END_OF_LINE 271
+#define NULL_NULL 271
+#define END_OF_LINE 272
diff --git a/Zend/zend_ini_parser.output b/Zend/zend_ini_parser.output
index cfd6dd4af..241883c88 100644
--- a/Zend/zend_ini_parser.output
+++ b/Zend/zend_ini_parser.output
@@ -36,63 +36,64 @@ Grammar
10 string_or_value: expr
11 | BOOL_TRUE
12 | BOOL_FALSE
- 13 | END_OF_LINE
-
- 14 option_offset: var_string_list
- 15 | /* empty */
-
- 16 encapsed_list: encapsed_list cfg_var_ref
- 17 | encapsed_list TC_QUOTED_STRING
- 18 | /* empty */
-
- 19 var_string_list_section: cfg_var_ref
- 20 | constant_literal
- 21 | '"' encapsed_list '"'
- 22 | var_string_list_section cfg_var_ref
- 23 | var_string_list_section constant_literal
- 24 | var_string_list_section '"' encapsed_list '"'
-
- 25 var_string_list: cfg_var_ref
- 26 | constant_string
- 27 | '"' encapsed_list '"'
- 28 | var_string_list cfg_var_ref
- 29 | var_string_list constant_string
- 30 | var_string_list '"' encapsed_list '"'
-
- 31 expr: var_string_list
- 32 | expr '|' expr
- 33 | expr '&' expr
- 34 | expr '^' expr
- 35 | '~' expr
- 36 | '!' expr
- 37 | '(' expr ')'
-
- 38 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME '}'
-
- 39 constant_literal: TC_CONSTANT
- 40 | TC_RAW
- 41 | TC_NUMBER
- 42 | TC_STRING
- 43 | TC_WHITESPACE
-
- 44 constant_string: TC_CONSTANT
- 45 | TC_RAW
- 46 | TC_NUMBER
- 47 | TC_STRING
- 48 | TC_WHITESPACE
+ 13 | NULL_NULL
+ 14 | END_OF_LINE
+
+ 15 option_offset: var_string_list
+ 16 | /* empty */
+
+ 17 encapsed_list: encapsed_list cfg_var_ref
+ 18 | encapsed_list TC_QUOTED_STRING
+ 19 | /* empty */
+
+ 20 var_string_list_section: cfg_var_ref
+ 21 | constant_literal
+ 22 | '"' encapsed_list '"'
+ 23 | var_string_list_section cfg_var_ref
+ 24 | var_string_list_section constant_literal
+ 25 | var_string_list_section '"' encapsed_list '"'
+
+ 26 var_string_list: cfg_var_ref
+ 27 | constant_string
+ 28 | '"' encapsed_list '"'
+ 29 | var_string_list cfg_var_ref
+ 30 | var_string_list constant_string
+ 31 | var_string_list '"' encapsed_list '"'
+
+ 32 expr: var_string_list
+ 33 | expr '|' expr
+ 34 | expr '&' expr
+ 35 | expr '^' expr
+ 36 | '~' expr
+ 37 | '!' expr
+ 38 | '(' expr ')'
+
+ 39 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME '}'
+
+ 40 constant_literal: TC_CONSTANT
+ 41 | TC_RAW
+ 42 | TC_NUMBER
+ 43 | TC_STRING
+ 44 | TC_WHITESPACE
+
+ 45 constant_string: TC_CONSTANT
+ 46 | TC_RAW
+ 47 | TC_NUMBER
+ 48 | TC_STRING
+ 49 | TC_WHITESPACE
Terminals, with rules where they appear
$end (0) 0
-'!' (33) 36
-'"' (34) 21 24 27 30
+'!' (33) 37
+'"' (34) 22 25 28 31
'$' (36)
'%' (37)
-'&' (38) 33
+'&' (38) 34
'\'' (39)
-'(' (40) 37
-')' (41) 37
+'(' (40) 38
+')' (41) 38
'*' (42)
'+' (43)
',' (44)
@@ -106,56 +107,57 @@ $end (0) 0
'?' (63)
'@' (64)
']' (93) 3 5
-'^' (94) 34
+'^' (94) 35
'{' (123)
-'|' (124) 32
-'}' (125) 38
-'~' (126) 35
+'|' (124) 33
+'}' (125) 39
+'~' (126) 36
error (256)
TC_SECTION (258) 3
-TC_RAW (259) 40 45
-TC_CONSTANT (260) 39 44
-TC_NUMBER (261) 41 46
-TC_STRING (262) 42 47
-TC_WHITESPACE (263) 43 48
+TC_RAW (259) 41 46
+TC_CONSTANT (260) 40 45
+TC_NUMBER (261) 42 47
+TC_STRING (262) 43 48
+TC_WHITESPACE (263) 44 49
TC_LABEL (264) 4 6
TC_OFFSET (265) 5
-TC_DOLLAR_CURLY (266) 38
-TC_VARNAME (267) 38
-TC_QUOTED_STRING (268) 17
+TC_DOLLAR_CURLY (266) 39
+TC_VARNAME (267) 39
+TC_QUOTED_STRING (268) 18
BOOL_TRUE (269) 11
BOOL_FALSE (270) 12
-END_OF_LINE (271) 7 13
+NULL_NULL (271) 13
+END_OF_LINE (272) 7 14
Nonterminals, with rules where they appear
-$accept (43)
+$accept (44)
on left: 0
-statement_list (44)
+statement_list (45)
on left: 1 2, on right: 0 1
-statement (45)
+statement (46)
on left: 3 4 5 6 7, on right: 1
-section_string_or_value (46)
+section_string_or_value (47)
on left: 8 9, on right: 3
-string_or_value (47)
- on left: 10 11 12 13, on right: 4 5
-option_offset (48)
- on left: 14 15, on right: 5
-encapsed_list (49)
- on left: 16 17 18, on right: 16 17 21 24 27 30
-var_string_list_section (50)
- on left: 19 20 21 22 23 24, on right: 8 22 23 24
-var_string_list (51)
- on left: 25 26 27 28 29 30, on right: 14 28 29 30 31
-expr (52)
- on left: 31 32 33 34 35 36 37, on right: 10 32 33 34 35 36 37
-cfg_var_ref (53)
- on left: 38, on right: 16 19 22 25 28
-constant_literal (54)
- on left: 39 40 41 42 43, on right: 20 23
-constant_string (55)
- on left: 44 45 46 47 48, on right: 26 29
+string_or_value (48)
+ on left: 10 11 12 13 14, on right: 4 5
+option_offset (49)
+ on left: 15 16, on right: 5
+encapsed_list (50)
+ on left: 17 18 19, on right: 17 18 22 25 28 31
+var_string_list_section (51)
+ on left: 20 21 22 23 24 25, on right: 8 23 24 25
+var_string_list (52)
+ on left: 26 27 28 29 30 31, on right: 15 29 30 31 32
+expr (53)
+ on left: 32 33 34 35 36 37 38, on right: 10 33 34 35 36 37 38
+cfg_var_ref (54)
+ on left: 39, on right: 17 20 23 26 29
+constant_literal (55)
+ on left: 40 41 42 43 44, on right: 21 24
+constant_string (56)
+ on left: 45 46 47 48 49, on right: 27 30
state 0
@@ -230,7 +232,7 @@ state 5
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- $default reduce using rule 15 (option_offset)
+ $default reduce using rule 16 (option_offset)
option_offset go to state 26
var_string_list go to state 27
@@ -254,51 +256,51 @@ state 7
state 8
- 40 constant_literal: TC_RAW .
+ 41 constant_literal: TC_RAW .
- $default reduce using rule 40 (constant_literal)
+ $default reduce using rule 41 (constant_literal)
state 9
- 39 constant_literal: TC_CONSTANT .
+ 40 constant_literal: TC_CONSTANT .
- $default reduce using rule 39 (constant_literal)
+ $default reduce using rule 40 (constant_literal)
state 10
- 41 constant_literal: TC_NUMBER .
+ 42 constant_literal: TC_NUMBER .
- $default reduce using rule 41 (constant_literal)
+ $default reduce using rule 42 (constant_literal)
state 11
- 42 constant_literal: TC_STRING .
+ 43 constant_literal: TC_STRING .
- $default reduce using rule 42 (constant_literal)
+ $default reduce using rule 43 (constant_literal)
state 12
- 43 constant_literal: TC_WHITESPACE .
+ 44 constant_literal: TC_WHITESPACE .
- $default reduce using rule 43 (constant_literal)
+ $default reduce using rule 44 (constant_literal)
state 13
- 38 cfg_var_ref: TC_DOLLAR_CURLY . TC_VARNAME '}'
+ 39 cfg_var_ref: TC_DOLLAR_CURLY . TC_VARNAME '}'
TC_VARNAME shift, and go to state 30
state 14
- 21 var_string_list_section: '"' . encapsed_list '"'
+ 22 var_string_list_section: '"' . encapsed_list '"'
- $default reduce using rule 18 (encapsed_list)
+ $default reduce using rule 19 (encapsed_list)
encapsed_list go to state 31
@@ -313,9 +315,9 @@ state 15
state 16
8 section_string_or_value: var_string_list_section .
- 22 var_string_list_section: var_string_list_section . cfg_var_ref
- 23 | var_string_list_section . constant_literal
- 24 | var_string_list_section . '"' encapsed_list '"'
+ 23 var_string_list_section: var_string_list_section . cfg_var_ref
+ 24 | var_string_list_section . constant_literal
+ 25 | var_string_list_section . '"' encapsed_list '"'
TC_RAW shift, and go to state 8
TC_CONSTANT shift, and go to state 9
@@ -333,16 +335,16 @@ state 16
state 17
- 19 var_string_list_section: cfg_var_ref .
+ 20 var_string_list_section: cfg_var_ref .
- $default reduce using rule 19 (var_string_list_section)
+ $default reduce using rule 20 (var_string_list_section)
state 18
- 20 var_string_list_section: constant_literal .
+ 21 var_string_list_section: constant_literal .
- $default reduce using rule 20 (var_string_list_section)
+ $default reduce using rule 21 (var_string_list_section)
state 19
@@ -357,76 +359,77 @@ state 19
TC_DOLLAR_CURLY shift, and go to state 13
BOOL_TRUE shift, and go to state 36
BOOL_FALSE shift, and go to state 37
- END_OF_LINE shift, and go to state 38
+ NULL_NULL shift, and go to state 38
+ END_OF_LINE shift, and go to state 39
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- string_or_value go to state 42
- var_string_list go to state 43
- expr go to state 44
+ string_or_value go to state 43
+ var_string_list go to state 44
+ expr go to state 45
cfg_var_ref go to state 28
constant_string go to state 29
state 20
- 45 constant_string: TC_RAW .
+ 46 constant_string: TC_RAW .
- $default reduce using rule 45 (constant_string)
+ $default reduce using rule 46 (constant_string)
state 21
- 44 constant_string: TC_CONSTANT .
+ 45 constant_string: TC_CONSTANT .
- $default reduce using rule 44 (constant_string)
+ $default reduce using rule 45 (constant_string)
state 22
- 46 constant_string: TC_NUMBER .
+ 47 constant_string: TC_NUMBER .
- $default reduce using rule 46 (constant_string)
+ $default reduce using rule 47 (constant_string)
state 23
- 47 constant_string: TC_STRING .
+ 48 constant_string: TC_STRING .
- $default reduce using rule 47 (constant_string)
+ $default reduce using rule 48 (constant_string)
state 24
- 48 constant_string: TC_WHITESPACE .
+ 49 constant_string: TC_WHITESPACE .
- $default reduce using rule 48 (constant_string)
+ $default reduce using rule 49 (constant_string)
state 25
- 27 var_string_list: '"' . encapsed_list '"'
+ 28 var_string_list: '"' . encapsed_list '"'
- $default reduce using rule 18 (encapsed_list)
+ $default reduce using rule 19 (encapsed_list)
- encapsed_list go to state 45
+ encapsed_list go to state 46
state 26
5 statement: TC_OFFSET option_offset . ']' '=' string_or_value
- ']' shift, and go to state 46
+ ']' shift, and go to state 47
state 27
- 14 option_offset: var_string_list .
- 28 var_string_list: var_string_list . cfg_var_ref
- 29 | var_string_list . constant_string
- 30 | var_string_list . '"' encapsed_list '"'
+ 15 option_offset: var_string_list .
+ 29 var_string_list: var_string_list . cfg_var_ref
+ 30 | var_string_list . constant_string
+ 31 | var_string_list . '"' encapsed_list '"'
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -434,46 +437,46 @@ state 27
TC_STRING shift, and go to state 23
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
- '"' shift, and go to state 47
+ '"' shift, and go to state 48
- $default reduce using rule 14 (option_offset)
+ $default reduce using rule 15 (option_offset)
- cfg_var_ref go to state 48
- constant_string go to state 49
+ cfg_var_ref go to state 49
+ constant_string go to state 50
state 28
- 25 var_string_list: cfg_var_ref .
+ 26 var_string_list: cfg_var_ref .
- $default reduce using rule 25 (var_string_list)
+ $default reduce using rule 26 (var_string_list)
state 29
- 26 var_string_list: constant_string .
+ 27 var_string_list: constant_string .
- $default reduce using rule 26 (var_string_list)
+ $default reduce using rule 27 (var_string_list)
state 30
- 38 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME . '}'
+ 39 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME . '}'
- '}' shift, and go to state 50
+ '}' shift, and go to state 51
state 31
- 16 encapsed_list: encapsed_list . cfg_var_ref
- 17 | encapsed_list . TC_QUOTED_STRING
- 21 var_string_list_section: '"' encapsed_list . '"'
+ 17 encapsed_list: encapsed_list . cfg_var_ref
+ 18 | encapsed_list . TC_QUOTED_STRING
+ 22 var_string_list_section: '"' encapsed_list . '"'
TC_DOLLAR_CURLY shift, and go to state 13
- TC_QUOTED_STRING shift, and go to state 51
- '"' shift, and go to state 52
+ TC_QUOTED_STRING shift, and go to state 52
+ '"' shift, and go to state 53
- cfg_var_ref go to state 53
+ cfg_var_ref go to state 54
state 32
@@ -485,25 +488,25 @@ state 32
state 33
- 24 var_string_list_section: var_string_list_section '"' . encapsed_list '"'
+ 25 var_string_list_section: var_string_list_section '"' . encapsed_list '"'
- $default reduce using rule 18 (encapsed_list)
+ $default reduce using rule 19 (encapsed_list)
- encapsed_list go to state 54
+ encapsed_list go to state 55
state 34
- 22 var_string_list_section: var_string_list_section cfg_var_ref .
+ 23 var_string_list_section: var_string_list_section cfg_var_ref .
- $default reduce using rule 22 (var_string_list_section)
+ $default reduce using rule 23 (var_string_list_section)
state 35
- 23 var_string_list_section: var_string_list_section constant_literal .
+ 24 var_string_list_section: var_string_list_section constant_literal .
- $default reduce using rule 23 (var_string_list_section)
+ $default reduce using rule 24 (var_string_list_section)
state 36
@@ -522,14 +525,21 @@ state 37
state 38
- 13 string_or_value: END_OF_LINE .
+ 13 string_or_value: NULL_NULL .
$default reduce using rule 13 (string_or_value)
state 39
- 35 expr: '~' . expr
+ 14 string_or_value: END_OF_LINE .
+
+ $default reduce using rule 14 (string_or_value)
+
+
+state 40
+
+ 36 expr: '~' . expr
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -538,19 +548,19 @@ state 39
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 55
+ var_string_list go to state 44
+ expr go to state 56
cfg_var_ref go to state 28
constant_string go to state 29
-state 40
+state 41
- 36 expr: '!' . expr
+ 37 expr: '!' . expr
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -559,19 +569,19 @@ state 40
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 56
+ var_string_list go to state 44
+ expr go to state 57
cfg_var_ref go to state 28
constant_string go to state 29
-state 41
+state 42
- 37 expr: '(' . expr ')'
+ 38 expr: '(' . expr ')'
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -580,29 +590,29 @@ state 41
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 57
+ var_string_list go to state 44
+ expr go to state 58
cfg_var_ref go to state 28
constant_string go to state 29
-state 42
+state 43
4 statement: TC_LABEL '=' string_or_value .
$default reduce using rule 4 (statement)
-state 43
+state 44
- 28 var_string_list: var_string_list . cfg_var_ref
- 29 | var_string_list . constant_string
- 30 | var_string_list . '"' encapsed_list '"'
- 31 expr: var_string_list .
+ 29 var_string_list: var_string_list . cfg_var_ref
+ 30 | var_string_list . constant_string
+ 31 | var_string_list . '"' encapsed_list '"'
+ 32 expr: var_string_list .
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -610,148 +620,148 @@ state 43
TC_STRING shift, and go to state 23
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
- '"' shift, and go to state 47
+ '"' shift, and go to state 48
- $default reduce using rule 31 (expr)
+ $default reduce using rule 32 (expr)
- cfg_var_ref go to state 48
- constant_string go to state 49
+ cfg_var_ref go to state 49
+ constant_string go to state 50
-state 44
+state 45
10 string_or_value: expr .
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 34 | expr . '^' expr
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
- '^' shift, and go to state 58
- '|' shift, and go to state 59
- '&' shift, and go to state 60
+ '^' shift, and go to state 59
+ '|' shift, and go to state 60
+ '&' shift, and go to state 61
$default reduce using rule 10 (string_or_value)
-state 45
+state 46
- 16 encapsed_list: encapsed_list . cfg_var_ref
- 17 | encapsed_list . TC_QUOTED_STRING
- 27 var_string_list: '"' encapsed_list . '"'
+ 17 encapsed_list: encapsed_list . cfg_var_ref
+ 18 | encapsed_list . TC_QUOTED_STRING
+ 28 var_string_list: '"' encapsed_list . '"'
TC_DOLLAR_CURLY shift, and go to state 13
- TC_QUOTED_STRING shift, and go to state 51
- '"' shift, and go to state 61
-
- cfg_var_ref go to state 53
-
+ TC_QUOTED_STRING shift, and go to state 52
+ '"' shift, and go to state 62
-state 46
-
- 5 statement: TC_OFFSET option_offset ']' . '=' string_or_value
-
- '=' shift, and go to state 62
+ cfg_var_ref go to state 54
state 47
- 30 var_string_list: var_string_list '"' . encapsed_list '"'
-
- $default reduce using rule 18 (encapsed_list)
+ 5 statement: TC_OFFSET option_offset ']' . '=' string_or_value
- encapsed_list go to state 63
+ '=' shift, and go to state 63
state 48
- 28 var_string_list: var_string_list cfg_var_ref .
+ 31 var_string_list: var_string_list '"' . encapsed_list '"'
- $default reduce using rule 28 (var_string_list)
+ $default reduce using rule 19 (encapsed_list)
+
+ encapsed_list go to state 64
state 49
- 29 var_string_list: var_string_list constant_string .
+ 29 var_string_list: var_string_list cfg_var_ref .
$default reduce using rule 29 (var_string_list)
state 50
- 38 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME '}' .
+ 30 var_string_list: var_string_list constant_string .
- $default reduce using rule 38 (cfg_var_ref)
+ $default reduce using rule 30 (var_string_list)
state 51
- 17 encapsed_list: encapsed_list TC_QUOTED_STRING .
+ 39 cfg_var_ref: TC_DOLLAR_CURLY TC_VARNAME '}' .
- $default reduce using rule 17 (encapsed_list)
+ $default reduce using rule 39 (cfg_var_ref)
state 52
- 21 var_string_list_section: '"' encapsed_list '"' .
+ 18 encapsed_list: encapsed_list TC_QUOTED_STRING .
- $default reduce using rule 21 (var_string_list_section)
+ $default reduce using rule 18 (encapsed_list)
state 53
- 16 encapsed_list: encapsed_list cfg_var_ref .
+ 22 var_string_list_section: '"' encapsed_list '"' .
- $default reduce using rule 16 (encapsed_list)
+ $default reduce using rule 22 (var_string_list_section)
state 54
- 16 encapsed_list: encapsed_list . cfg_var_ref
- 17 | encapsed_list . TC_QUOTED_STRING
- 24 var_string_list_section: var_string_list_section '"' encapsed_list . '"'
+ 17 encapsed_list: encapsed_list cfg_var_ref .
- TC_DOLLAR_CURLY shift, and go to state 13
- TC_QUOTED_STRING shift, and go to state 51
- '"' shift, and go to state 64
-
- cfg_var_ref go to state 53
+ $default reduce using rule 17 (encapsed_list)
state 55
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 34 | expr . '^' expr
- 35 | '~' expr .
+ 17 encapsed_list: encapsed_list . cfg_var_ref
+ 18 | encapsed_list . TC_QUOTED_STRING
+ 25 var_string_list_section: var_string_list_section '"' encapsed_list . '"'
- $default reduce using rule 35 (expr)
+ TC_DOLLAR_CURLY shift, and go to state 13
+ TC_QUOTED_STRING shift, and go to state 52
+ '"' shift, and go to state 65
+
+ cfg_var_ref go to state 54
state 56
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 34 | expr . '^' expr
- 36 | '!' expr .
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
+ 36 | '~' expr .
$default reduce using rule 36 (expr)
state 57
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 34 | expr . '^' expr
- 37 | '(' expr . ')'
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
+ 37 | '!' expr .
- '^' shift, and go to state 58
- '|' shift, and go to state 59
- '&' shift, and go to state 60
- ')' shift, and go to state 65
+ $default reduce using rule 37 (expr)
state 58
- 34 expr: expr '^' . expr
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
+ 38 | '(' expr . ')'
+
+ '^' shift, and go to state 59
+ '|' shift, and go to state 60
+ '&' shift, and go to state 61
+ ')' shift, and go to state 66
+
+
+state 59
+
+ 35 expr: expr '^' . expr
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -760,19 +770,19 @@ state 58
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 66
+ var_string_list go to state 44
+ expr go to state 67
cfg_var_ref go to state 28
constant_string go to state 29
-state 59
+state 60
- 32 expr: expr '|' . expr
+ 33 expr: expr '|' . expr
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -781,19 +791,19 @@ state 59
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 67
+ var_string_list go to state 44
+ expr go to state 68
cfg_var_ref go to state 28
constant_string go to state 29
-state 60
+state 61
- 33 expr: expr '&' . expr
+ 34 expr: expr '&' . expr
TC_RAW shift, and go to state 20
TC_CONSTANT shift, and go to state 21
@@ -802,24 +812,24 @@ state 60
TC_WHITESPACE shift, and go to state 24
TC_DOLLAR_CURLY shift, and go to state 13
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- var_string_list go to state 43
- expr go to state 68
+ var_string_list go to state 44
+ expr go to state 69
cfg_var_ref go to state 28
constant_string go to state 29
-state 61
+state 62
- 27 var_string_list: '"' encapsed_list '"' .
+ 28 var_string_list: '"' encapsed_list '"' .
- $default reduce using rule 27 (var_string_list)
+ $default reduce using rule 28 (var_string_list)
-state 62
+state 63
5 statement: TC_OFFSET option_offset ']' '=' . string_or_value
@@ -831,85 +841,86 @@ state 62
TC_DOLLAR_CURLY shift, and go to state 13
BOOL_TRUE shift, and go to state 36
BOOL_FALSE shift, and go to state 37
- END_OF_LINE shift, and go to state 38
+ NULL_NULL shift, and go to state 38
+ END_OF_LINE shift, and go to state 39
'"' shift, and go to state 25
- '~' shift, and go to state 39
- '!' shift, and go to state 40
- '(' shift, and go to state 41
+ '~' shift, and go to state 40
+ '!' shift, and go to state 41
+ '(' shift, and go to state 42
- string_or_value go to state 69
- var_string_list go to state 43
- expr go to state 44
+ string_or_value go to state 70
+ var_string_list go to state 44
+ expr go to state 45
cfg_var_ref go to state 28
constant_string go to state 29
-state 63
+state 64
- 16 encapsed_list: encapsed_list . cfg_var_ref
- 17 | encapsed_list . TC_QUOTED_STRING
- 30 var_string_list: var_string_list '"' encapsed_list . '"'
+ 17 encapsed_list: encapsed_list . cfg_var_ref
+ 18 | encapsed_list . TC_QUOTED_STRING
+ 31 var_string_list: var_string_list '"' encapsed_list . '"'
TC_DOLLAR_CURLY shift, and go to state 13
- TC_QUOTED_STRING shift, and go to state 51
- '"' shift, and go to state 70
-
- cfg_var_ref go to state 53
-
-
-state 64
+ TC_QUOTED_STRING shift, and go to state 52
+ '"' shift, and go to state 71
- 24 var_string_list_section: var_string_list_section '"' encapsed_list '"' .
-
- $default reduce using rule 24 (var_string_list_section)
+ cfg_var_ref go to state 54
state 65
- 37 expr: '(' expr ')' .
+ 25 var_string_list_section: var_string_list_section '"' encapsed_list '"' .
- $default reduce using rule 37 (expr)
+ $default reduce using rule 25 (var_string_list_section)
state 66
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 34 | expr . '^' expr
- 34 | expr '^' expr .
+ 38 expr: '(' expr ')' .
- $default reduce using rule 34 (expr)
+ $default reduce using rule 38 (expr)
state 67
- 32 expr: expr . '|' expr
- 32 | expr '|' expr .
- 33 | expr . '&' expr
- 34 | expr . '^' expr
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
+ 35 | expr '^' expr .
- $default reduce using rule 32 (expr)
+ $default reduce using rule 35 (expr)
state 68
- 32 expr: expr . '|' expr
- 33 | expr . '&' expr
- 33 | expr '&' expr .
- 34 | expr . '^' expr
+ 33 expr: expr . '|' expr
+ 33 | expr '|' expr .
+ 34 | expr . '&' expr
+ 35 | expr . '^' expr
$default reduce using rule 33 (expr)
state 69
+ 33 expr: expr . '|' expr
+ 34 | expr . '&' expr
+ 34 | expr '&' expr .
+ 35 | expr . '^' expr
+
+ $default reduce using rule 34 (expr)
+
+
+state 70
+
5 statement: TC_OFFSET option_offset ']' '=' string_or_value .
$default reduce using rule 5 (statement)
-state 70
+state 71
- 30 var_string_list: var_string_list '"' encapsed_list '"' .
+ 31 var_string_list: var_string_list '"' encapsed_list '"' .
- $default reduce using rule 30 (var_string_list)
+ $default reduce using rule 31 (var_string_list)
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y
index 3823efd41..e9ea36956 100644
--- a/Zend/zend_ini_parser.y
+++ b/Zend/zend_ini_parser.y
@@ -265,6 +265,7 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s
%token TC_QUOTED_STRING
%token BOOL_TRUE
%token BOOL_FALSE
+%token NULL_NULL
%token END_OF_LINE
%token '=' ':' ',' '.' '"' '\'' '^' '+' '-' '/' '*' '%' '$' '~' '<' '>' '?' '@' '{' '}'
%left '|' '&' '^'
@@ -291,7 +292,7 @@ statement:
#endif
ZEND_INI_PARSER_CB(&$1, &$3, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
free(Z_STRVAL($1));
- free(Z_STRVAL($3));
+ zval_internal_dtor(&$3);
}
| TC_OFFSET option_offset ']' '=' string_or_value {
#if DEBUG_CFG_PARSER
@@ -300,7 +301,7 @@ statement:
ZEND_INI_PARSER_CB(&$1, &$5, &$2, ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
free(Z_STRVAL($1));
free(Z_STRVAL($2));
- free(Z_STRVAL($5));
+ zval_internal_dtor(&$5);
}
| TC_LABEL { ZEND_INI_PARSER_CB(&$1, NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); free(Z_STRVAL($1)); }
| END_OF_LINE
@@ -315,6 +316,7 @@ string_or_value:
expr { $$ = $1; }
| BOOL_TRUE { $$ = $1; }
| BOOL_FALSE { $$ = $1; }
+ | NULL_NULL { $$ = $1; }
| END_OF_LINE { zend_ini_init_string(&$$); }
;
diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c
index c73f3cedd..97f664ad3 100644
--- a/Zend/zend_ini_scanner.c
+++ b/Zend/zend_ini_scanner.c
@@ -1,4663 +1,4827 @@
-/* Generated by re2c 0.13.5 */
-#line 1 "Zend/zend_ini_scanner.l"
-/*
- +----------------------------------------------------------------------+
- | Zend Engine |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.00 of the Zend license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.zend.com/license/2_00.txt. |
- | If you did not receive a copy of the Zend license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@zend.com so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Zeev Suraski <zeev@zend.com> |
- | Jani Taskinen <jani@php.net> |
- | Marcus Boerger <helly@php.net> |
- | Nuno Lopes <nlopess@php.net> |
- | Scott MacVicar <scottmac@php.net> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-
-#include <errno.h>
-#include "zend.h"
-#include "zend_globals.h"
-#include <zend_ini_parser.h>
-#include "zend_ini_scanner.h"
-
-#if 0
-# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
-#else
-# define YYDEBUG(s, c)
-#endif
-
-#include "zend_ini_scanner_defs.h"
-
-#define YYCTYPE unsigned char
-/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
- * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
-#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
-#define YYCURSOR SCNG(yy_cursor)
-#define YYLIMIT SCNG(yy_limit)
-#define YYMARKER SCNG(yy_marker)
-
-#define YYGETCONDITION() SCNG(yy_state)
-#define YYSETCONDITION(s) SCNG(yy_state) = s
-
-#define STATE(name) yyc##name
-
-/* emulate flex constructs */
-#define BEGIN(state) YYSETCONDITION(STATE(state))
-#define YYSTATE YYGETCONDITION()
-#define yytext ((char*)SCNG(yy_text))
-#define yyleng SCNG(yy_leng)
-#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \
- yyleng = (unsigned int)x; } while(0)
-
-/* #define yymore() goto yymore_restart */
-
-/* perform sanity check. If this message is triggered you should
- increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
-#define YYMAXFILL 6
-#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
-# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
-#endif
-
-
-/* How it works (for the core ini directives):
- * ===========================================
- *
- * 1. Scanner scans file for tokens and passes them to parser.
- * 2. Parser parses the tokens and passes the name/value pairs to the callback
- * function which stores them in the configuration hash table.
- * 3. Later REGISTER_INI_ENTRIES() is called which triggers the actual
- * registering of ini entries and uses zend_get_configuration_directive()
- * to fetch the previously stored name/value pair from configuration hash table
- * and registers the static ini entries which match the name to the value
- * into EG(ini_directives) hash table.
- * 4. PATH section entries are used per-request from down to top, each overriding
- * previous if one exists. zend_alter_ini_entry() is called for each entry.
- * Settings in PATH section are ZEND_INI_SYSTEM accessible and thus mimics the
- * php_admin_* directives used within Apache httpd.conf when PHP is compiled as
- * module for Apache.
- * 5. User defined ini files (like .htaccess for apache) are parsed for each request and
- * stored in separate hash defined by SAPI.
- */
-
-/* TODO: (ordered by importance :-)
- * ===============================================================================
- *
- * - Separate constant lookup totally from plain strings (using CONSTANT pattern)
- * - Add #if .. #else .. #endif and ==, !=, <, > , <=, >= operators
- * - Add #include "some.ini"
- * - Allow variables to refer to options also when using parse_ini_file()
- *
- */
-
-/* Globals Macros */
-#define SCNG INI_SCNG
-#ifdef ZTS
-ZEND_API ts_rsrc_id ini_scanner_globals_id;
-#else
-ZEND_API zend_ini_scanner_globals ini_scanner_globals;
-#endif
-
-/* Eat leading whitespace */
-#define EAT_LEADING_WHITESPACE() \
- while (yytext[0]) { \
- if (yytext[0] == ' ' || yytext[0] == '\t') { \
- SCNG(yy_text)++; \
- yyleng--; \
- } else { \
- break; \
- } \
- }
-
-/* Eat trailing whitespace + extra char */
-#define EAT_TRAILING_WHITESPACE_EX(ch) \
- while (yyleng > 0 && ( \
- (ch != 'X' && yytext[yyleng - 1] == ch) || \
- yytext[yyleng - 1] == '\n' || \
- yytext[yyleng - 1] == '\r' || \
- yytext[yyleng - 1] == '\t' || \
- yytext[yyleng - 1] == ' ') \
- ) { \
- yyleng--; \
- }
-
-/* Eat trailing whitespace */
-#define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X')
-
-#define zend_ini_copy_value(retval, str, len) { \
- Z_STRVAL_P(retval) = zend_strndup(str, len); \
- Z_STRLEN_P(retval) = len; \
- Z_TYPE_P(retval) = IS_STRING; \
-}
-
-#define RETURN_TOKEN(type, str, len) { \
- zend_ini_copy_value(ini_lval, str, len); \
- return type; \
-}
-
-static void _yy_push_state(int new_state TSRMLS_DC)
-{
- zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int));
- YYSETCONDITION(new_state);
-}
-
-#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
-
-static void yy_pop_state(TSRMLS_D)
-{
- int *stack_state;
- zend_stack_top(&SCNG(state_stack), (void **) &stack_state);
- YYSETCONDITION(*stack_state);
- zend_stack_del_top(&SCNG(state_stack));
-}
-
-static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
-{
- YYCURSOR = (YYCTYPE*)str;
- SCNG(yy_start) = YYCURSOR;
- YYLIMIT = YYCURSOR + len;
-}
-
-#define ini_filename SCNG(filename)
-
-/* {{{ init_ini_scanner()
-*/
-static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC)
-{
- /* Sanity check */
- if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW) {
- zend_error(E_WARNING, "Invalid scanner mode");
- return FAILURE;
- }
-
- SCNG(lineno) = 1;
- SCNG(scanner_mode) = scanner_mode;
- SCNG(yy_in) = fh;
-
- if (fh != NULL) {
- ini_filename = zend_strndup(fh->filename, strlen(fh->filename));
- } else {
- ini_filename = NULL;
- }
-
- zend_stack_init(&SCNG(state_stack));
- BEGIN(INITIAL);
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ shutdown_ini_scanner()
-*/
-void shutdown_ini_scanner(TSRMLS_D)
-{
- zend_stack_destroy(&SCNG(state_stack));
- if (ini_filename) {
- free(ini_filename);
- }
-}
-/* }}} */
-
-/* {{{ zend_ini_scanner_get_lineno()
-*/
-int zend_ini_scanner_get_lineno(TSRMLS_D)
-{
- return SCNG(lineno);
-}
-/* }}} */
-
-/* {{{ zend_ini_scanner_get_filename()
-*/
-char *zend_ini_scanner_get_filename(TSRMLS_D)
-{
- return ini_filename ? ini_filename : "Unknown";
-}
-/* }}} */
-
-/* {{{ zend_ini_open_file_for_scanning()
-*/
-int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode TSRMLS_DC)
-{
- char *buf;
- size_t size;
-
- if (zend_stream_fixup(fh, &buf, &size TSRMLS_CC) == FAILURE) {
- return FAILURE;
- }
-
- if (init_ini_scanner(scanner_mode, fh TSRMLS_CC) == FAILURE) {
- zend_file_handle_dtor(fh TSRMLS_CC);
- return FAILURE;
- }
-
- yy_scan_buffer(buf, size TSRMLS_CC);
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ zend_ini_prepare_string_for_scanning()
-*/
-int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode TSRMLS_DC)
-{
- int len = strlen(str);
-
- if (init_ini_scanner(scanner_mode, NULL TSRMLS_CC) == FAILURE) {
- return FAILURE;
- }
-
- yy_scan_buffer(str, len TSRMLS_CC);
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ zend_ini_escape_string()
- */
-static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type TSRMLS_DC)
-{
- register char *s, *t;
- char *end;
-
- zend_ini_copy_value(lval, str, len);
-
- /* convert escape sequences */
- s = t = Z_STRVAL_P(lval);
- end = s + Z_STRLEN_P(lval);
-
- while (s < end) {
- if (*s == '\\') {
- s++;
- if (s >= end) {
- *t++ = '\\';
- continue;
- }
- switch (*s) {
- case '"':
- if (*s != quote_type) {
- *t++ = '\\';
- *t++ = *s;
- break;
- }
- case '\\':
- case '$':
- *t++ = *s;
- Z_STRLEN_P(lval)--;
- break;
- default:
- *t++ = '\\';
- *t++ = *s;
- break;
- }
- } else {
- *t++ = *s;
- }
- if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
- SCNG(lineno)++;
- }
- s++;
- }
- *t = 0;
-}
-/* }}} */
-
-int ini_lex(zval *ini_lval TSRMLS_DC)
-{
-restart:
- SCNG(yy_text) = YYCURSOR;
-
-/* yymore_restart: */
- /* detect EOF */
- if (YYCURSOR >= YYLIMIT) {
- if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
- BEGIN(INITIAL);
- return END_OF_LINE;
- }
- return 0;
- }
-
- /* Eat any UTF-8 BOM we find in the first 3 bytes */
- if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
- if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
- YYCURSOR += 3;
- goto restart;
- }
- }
-
-#line 337 "Zend/zend_ini_scanner.c"
-{
- YYCTYPE yych;
- unsigned int yyaccept = 0;
- if (YYGETCONDITION() < 4) {
- if (YYGETCONDITION() < 2) {
- if (YYGETCONDITION() < 1) {
- goto yyc_INITIAL;
- } else {
- goto yyc_ST_OFFSET;
- }
- } else {
- if (YYGETCONDITION() < 3) {
- goto yyc_ST_SECTION_VALUE;
- } else {
- goto yyc_ST_VALUE;
- }
- }
- } else {
- if (YYGETCONDITION() < 6) {
- if (YYGETCONDITION() < 5) {
- goto yyc_ST_SECTION_RAW;
- } else {
- goto yyc_ST_DOUBLE_QUOTES;
- }
- } else {
- if (YYGETCONDITION() < 7) {
- goto yyc_ST_VARNAME;
- } else {
- goto yyc_ST_RAW;
- }
- }
- }
-/* *********************************** */
-yyc_INITIAL:
- {
- static const unsigned char yybm[] = {
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 160, 0, 144, 144, 0, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 240, 128, 128, 144, 128, 144, 128, 144,
- 128, 128, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 128, 144, 128, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 128, 144, 144, 128, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 128, 128, 128, 128, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144,
- };
-
- YYDEBUG(0, *YYCURSOR);
- YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy4;
- case '\n': goto yy6;
- case '\r': goto yy8;
- case ' ': goto yy9;
- case '!':
- case '"':
- case '$':
- case '&':
- case '(':
- case ')':
- case '^':
- case '{':
- case '|':
- case '}':
- case '~': goto yy10;
- case '#': goto yy12;
- case '%':
- case '\'':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.':
- case '/':
- case ':':
- case '<':
- case '>':
- case '?':
- case '@':
- case ']': goto yy13;
- case ';': goto yy14;
- case '=': goto yy16;
- case 'F':
- case 'f': goto yy18;
- case 'N':
- case 'n': goto yy19;
- case 'O':
- case 'o': goto yy20;
- case 'T':
- case 't': goto yy21;
- case 'Y':
- case 'y': goto yy22;
- case '[': goto yy23;
- default: goto yy2;
- }
-yy2:
- YYDEBUG(2, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy26;
-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();
-
- /* Eat trailing whitespace */
- EAT_TRAILING_WHITESPACE();
-
- RETURN_TOKEN(TC_LABEL, yytext, yyleng);
-}
-#line 476 "Zend/zend_ini_scanner.c"
-yy4:
- YYDEBUG(4, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy68;
-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;
- if (yych == '\n') goto yy71;
- goto yy7;
-yy9:
- YYDEBUG(9, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy26;
- if (yych <= '\t') goto yy67;
- goto yy71;
- } else {
- if (yych == '\r') goto yy72;
- if (yych <= 0x1F) goto yy26;
- goto yy69;
- }
- } else {
- if (yych <= ':') {
- if (yych == '#') goto yy58;
- goto yy26;
- } else {
- if (yych <= ';') goto yy53;
- if (yych == '=') goto yy51;
- goto yy26;
- }
- }
-yy10:
- YYDEBUG(10, *YYCURSOR);
- ++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;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy59;
-yy13:
- YYDEBUG(13, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy26;
-yy14:
- YYDEBUG(14, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- 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;
- yych = *YYCURSOR;
- goto yy52;
-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);
- } else {
- yy_push_state(ST_VALUE TSRMLS_CC);
- }
- return '=';
-}
-#line 580 "Zend/zend_ini_scanner.c"
-yy18:
- YYDEBUG(18, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy48;
- if (yych == 'a') goto yy48;
- goto yy26;
-yy19:
- YYDEBUG(19, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'O') goto yy44;
- if (yych <= 'T') goto yy26;
- goto yy45;
- } else {
- if (yych <= 'o') {
- if (yych <= 'n') goto yy26;
- goto yy44;
- } else {
- if (yych == 'u') goto yy45;
- goto yy26;
- }
- }
-yy20:
- YYDEBUG(20, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'F') goto yy38;
- if (yych <= 'M') goto yy26;
- goto yy31;
- } else {
- if (yych <= 'f') {
- if (yych <= 'e') goto yy26;
- goto yy38;
- } else {
- if (yych == 'n') goto yy31;
- goto yy26;
- }
- }
-yy21:
- YYDEBUG(21, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy36;
- if (yych == 'r') goto yy36;
- goto yy26;
-yy22:
- YYDEBUG(22, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy27;
- if (yych == 'e') goto yy27;
- goto yy26;
-yy23:
- YYDEBUG(23, *YYCURSOR);
- ++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) {
- yy_push_state(ST_SECTION_RAW TSRMLS_CC);
- } else {
- yy_push_state(ST_SECTION_VALUE TSRMLS_CC);
- }
- return TC_SECTION;
-}
-#line 646 "Zend/zend_ini_scanner.c"
-yy25:
- YYDEBUG(25, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy26:
- YYDEBUG(26, *YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy25;
- }
- if (yych == '[') goto yy28;
- goto yy3;
-yy27:
- YYDEBUG(27, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy31;
- if (yych == 's') goto yy31;
- goto yy26;
-yy28:
- YYDEBUG(28, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(29, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy28;
- }
- 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();
-
- /* Eat trailing whitespace and [ */
- EAT_TRAILING_WHITESPACE_EX('[');
-
- /* Enter offset lookup state */
- yy_push_state(ST_OFFSET TSRMLS_CC);
-
- RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
-}
-#line 689 "Zend/zend_ini_scanner.c"
-yy31:
- YYDEBUG(31, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(32, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy31;
- }
- if (yych <= '\'') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy34;
- } else {
- if (yych != '\r') goto yy25;
- }
- } else {
- if (yych <= '$') {
- if (yych == '#') goto yy25;
- } else {
- if (yych != '&') goto yy25;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ';') {
- if (yych <= ')') goto yy33;
- if (yych <= ':') goto yy25;
- } else {
- if (yych != '=') goto yy25;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '[') goto yy28;
- if (yych <= ']') goto yy25;
- } else {
- if (yych <= 'z') goto yy25;
- if (yych >= 0x7F) goto yy25;
- }
- }
- }
-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 739 "Zend/zend_ini_scanner.c"
-yy34:
- YYDEBUG(34, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(35, *YYCURSOR);
- if (yych == '\t') goto yy34;
- if (yych == ' ') goto yy34;
- goto yy33;
-yy36:
- YYDEBUG(36, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy37;
- if (yych != 'u') goto yy26;
-yy37:
- YYDEBUG(37, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy31;
- if (yych == 'e') goto yy31;
- goto yy26;
-yy38:
- YYDEBUG(38, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy39;
- if (yych != 'f') goto yy26;
-yy39:
- YYDEBUG(39, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(40, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy42;
- } else {
- if (yych != '\r') goto yy25;
- }
- } else {
- if (yych <= '#') {
- if (yych <= ' ') goto yy39;
- if (yych >= '#') goto yy25;
- } else {
- if (yych == '%') goto yy25;
- }
- }
- } else {
- if (yych <= '=') {
- if (yych <= ':') {
- if (yych <= '\'') goto yy25;
- if (yych >= '*') goto yy25;
- } else {
- if (yych == '<') goto yy25;
- }
- } else {
- if (yych <= ']') {
- if (yych == '[') goto yy28;
- goto yy25;
- } else {
- if (yych <= '^') goto yy41;
- if (yych <= 'z') goto yy25;
- if (yych >= 0x7F) goto yy25;
- }
- }
- }
-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 813 "Zend/zend_ini_scanner.c"
-yy42:
- YYDEBUG(42, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(43, *YYCURSOR);
- if (yych == '\t') goto yy42;
- if (yych == ' ') goto yy42;
- goto yy41;
-yy44:
- YYDEBUG(44, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\'') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy26;
- if (yych <= '\t') goto yy42;
- goto yy41;
- } else {
- if (yych == '\r') goto yy41;
- goto yy26;
- }
- } else {
- if (yych <= '#') {
- if (yych <= ' ') goto yy39;
- if (yych <= '"') goto yy41;
- goto yy26;
- } else {
- if (yych == '%') goto yy26;
- if (yych <= '&') goto yy41;
- goto yy26;
- }
- }
- } else {
- if (yych <= 'N') {
- if (yych <= ';') {
- if (yych <= ')') goto yy41;
- if (yych <= ':') goto yy26;
- goto yy41;
- } else {
- if (yych == '=') goto yy41;
- if (yych <= 'M') goto yy26;
- goto yy47;
- }
- } else {
- if (yych <= 'm') {
- if (yych == '^') goto yy41;
- goto yy26;
- } else {
- if (yych <= 'n') goto yy47;
- if (yych <= 'z') goto yy26;
- if (yych <= '~') goto yy41;
- goto yy26;
- }
- }
- }
-yy45:
- YYDEBUG(45, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy46;
- if (yych != 'l') goto yy26;
-yy46:
- YYDEBUG(46, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy39;
- if (yych == 'l') goto yy39;
- goto yy26;
-yy47:
- YYDEBUG(47, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy39;
- if (yych == 'e') goto yy39;
- goto yy26;
-yy48:
- YYDEBUG(48, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy49;
- if (yych != 'l') goto yy26;
-yy49:
- YYDEBUG(49, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy50;
- if (yych != 's') goto yy26;
-yy50:
- YYDEBUG(50, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy39;
- if (yych == 'e') goto yy39;
- goto yy26;
-yy51:
- YYDEBUG(51, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy52:
- YYDEBUG(52, *YYCURSOR);
- if (yych == '\t') goto yy51;
- if (yych == ' ') goto yy51;
- goto yy17;
-yy53:
- YYDEBUG(53, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy54:
- YYDEBUG(54, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy53;
- }
- if (yych >= '\r') goto yy57;
-yy55:
- YYDEBUG(55, *YYCURSOR);
- ++YYCURSOR;
-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;
- if (yych == '\n') goto yy55;
- goto yy56;
-yy58:
- YYDEBUG(58, *YYCURSOR);
- yyaccept = 1;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy59:
- YYDEBUG(59, *YYCURSOR);
- if (yych <= '\'') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy58;
- if (yych >= '\n') goto yy64;
- } else {
- if (yych == '\r') goto yy66;
- goto yy58;
- }
- } else {
- if (yych <= '$') {
- if (yych == '#') goto yy58;
- } else {
- if (yych != '&') goto yy58;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ';') {
- if (yych <= ')') goto yy60;
- if (yych <= ':') goto yy58;
- } else {
- if (yych != '=') goto yy58;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '[') goto yy62;
- if (yych <= ']') goto yy58;
- } else {
- if (yych <= 'z') goto yy58;
- if (yych >= 0x7F) goto yy58;
- }
- }
- }
-yy60:
- YYDEBUG(60, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
- YYDEBUG(61, *YYCURSOR);
- if (yych == '\n') goto yy64;
- if (yych == '\r') goto yy66;
- goto yy60;
-yy62:
- YYDEBUG(62, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
- YYDEBUG(63, *YYCURSOR);
- if (yych <= '\f') {
- if (yych <= 0x08) goto yy60;
- if (yych <= '\t') goto yy62;
- if (yych >= '\v') goto yy60;
- } else {
- if (yych <= '\r') goto yy66;
- if (yych == ' ') goto yy62;
- goto yy60;
- }
-yy64:
- YYDEBUG(64, *YYCURSOR);
- ++YYCURSOR;
-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 1022 "Zend/zend_ini_scanner.c"
-yy66:
- YYDEBUG(66, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy64;
- goto yy65;
-yy67:
- YYDEBUG(67, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy68:
- YYDEBUG(68, *YYCURSOR);
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy5;
- if (yych <= '\t') goto yy67;
- goto yy71;
- } else {
- if (yych == '\r') goto yy72;
- if (yych <= 0x1F) goto yy5;
- goto yy67;
- }
- } else {
- if (yych <= ':') {
- if (yych == '#') goto yy60;
- goto yy5;
- } else {
- if (yych <= ';') goto yy53;
- if (yych == '=') goto yy51;
- goto yy5;
- }
- }
-yy69:
- YYDEBUG(69, *YYCURSOR);
- yyaccept = 1;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
- YYDEBUG(70, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy67;
- } else {
- if (yych == '\r') goto yy72;
- goto yy25;
- }
- } else {
- if (yych <= '#') {
- if (yych <= ' ') goto yy69;
- if (yych <= '"') goto yy3;
- goto yy58;
- } else {
- if (yych == '%') goto yy25;
- goto yy3;
- }
- }
- } else {
- if (yych <= '=') {
- if (yych <= ':') {
- if (yych <= '\'') goto yy25;
- if (yych <= ')') goto yy3;
- goto yy25;
- } else {
- if (yych <= ';') goto yy53;
- if (yych <= '<') goto yy25;
- goto yy51;
- }
- } else {
- if (yych <= ']') {
- if (yych == '[') goto yy28;
- goto yy25;
- } else {
- if (yych <= '^') goto yy3;
- if (yych <= 'z') goto yy25;
- if (yych <= '~') goto yy3;
- goto yy25;
- }
- }
- }
-yy71:
- YYDEBUG(71, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy7;
-yy72:
- YYDEBUG(72, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy71;
- goto yy7;
- }
-/* *********************************** */
-yyc_ST_DOUBLE_QUOTES:
- {
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
- YYDEBUG(73, *YYCURSOR);
- YYFILL(2);
- yych = *YYCURSOR;
- if (yych == '"') goto yy77;
- if (yych == '$') goto yy79;
- YYDEBUG(75, *YYCURSOR);
- ++YYCURSOR;
-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;
- }
-
- while (YYCURSOR < YYLIMIT) {
- switch (*YYCURSOR++) {
- case '"':
- if (YYCURSOR < YYLIMIT && YYCURSOR[-2] == '\\' && *YYCURSOR != '\r' && *YYCURSOR != '\n') {
- continue;
- }
- break;
- case '$':
- if (*YYCURSOR == '{') {
- break;
- }
- continue;
- case '\\':
- if (YYCURSOR < YYLIMIT && *YYCURSOR != '"') {
- YYCURSOR++;
- }
- /* fall through */
- default:
- continue;
- }
-
- YYCURSOR--;
- break;
- }
-
- yyleng = YYCURSOR - SCNG(yy_text);
-
- zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
- return TC_QUOTED_STRING;
-}
-#line 1198 "Zend/zend_ini_scanner.c"
-yy77:
- YYDEBUG(77, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy83;
-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 1212 "Zend/zend_ini_scanner.c"
-yy79:
- YYDEBUG(79, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '{') goto yy76;
- YYDEBUG(80, *YYCURSOR);
- ++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 1226 "Zend/zend_ini_scanner.c"
-yy82:
- YYDEBUG(82, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy83:
- YYDEBUG(83, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy82;
- }
- goto yy78;
- }
-/* *********************************** */
-yyc_ST_OFFSET:
- {
- static const unsigned char yybm[] = {
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 194, 64, 66, 66, 64, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 194, 66, 64, 66, 68, 66, 66, 0,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 66, 64, 66, 66, 66, 66,
- 66, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 66, 72, 64, 66, 82,
- 66, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- };
- YYDEBUG(84, *YYCURSOR);
- YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy86;
- if (yych <= '\t') goto yy88;
- goto yy89;
- } else {
- if (yych == '\r') goto yy89;
- if (yych >= ' ') goto yy88;
- }
- } else {
- if (yych <= '$') {
- if (yych == '"') goto yy91;
- if (yych >= '$') goto yy93;
- } else {
- if (yych == '\'') goto yy94;
- if (yych >= '-') goto yy95;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '9') {
- if (yych <= '.') goto yy96;
- if (yych >= '0') goto yy97;
- } else {
- if (yych == ';') goto yy89;
- if (yych >= 'A') goto yy99;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '[') goto yy86;
- if (yych <= '\\') goto yy101;
- if (yych <= ']') goto yy102;
- } else {
- if (yych == '`') goto yy86;
- if (yych <= 'z') goto yy99;
- }
- }
- }
-yy86:
- YYDEBUG(86, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy105;
-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 1330 "Zend/zend_ini_scanner.c"
-yy88:
- YYDEBUG(88, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy131;
- }
- if (yych == '"') goto yy133;
- if (yych == ']') goto yy134;
- goto yy105;
-yy89:
- YYDEBUG(89, *YYCURSOR);
- ++YYCURSOR;
-yy90:
- YYDEBUG(90, *YYCURSOR);
- yyleng = YYCURSOR - SCNG(yy_text);
-#line 603 "Zend/zend_ini_scanner.l"
- {
- return 0;
-}
-#line 1351 "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 1363 "Zend/zend_ini_scanner.c"
-yy93:
- YYDEBUG(93, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy90;
- if (yych <= '[') goto yy104;
- goto yy109;
- } else {
- if (yych == '{') goto yy129;
- goto yy104;
- }
-yy94:
- YYDEBUG(94, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy125;
- }
- goto yy90;
-yy95:
- YYDEBUG(95, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy105;
- if (yych <= '9') goto yy123;
- goto yy105;
-yy96:
- YYDEBUG(96, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy105;
- if (yych <= '9') goto yy121;
- goto yy105;
-yy97:
- YYDEBUG(97, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\'') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy98;
- if (yych <= '\f') goto yy105;
- } else {
- if (yych == '"') goto yy98;
- if (yych <= '&') goto yy105;
- }
- } else {
- if (yych <= '9') {
- if (yych == '.') goto yy117;
- if (yych <= '/') goto yy105;
- goto yy119;
- } else {
- if (yych <= ';') {
- if (yych <= ':') goto yy105;
- } else {
- if (yych != ']') goto yy105;
- }
- }
- }
-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 1429 "Zend/zend_ini_scanner.c"
-yy99:
- YYDEBUG(99, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy115;
- }
- if (yych <= '"') {
- if (yych <= '\f') {
- if (yych != '\n') goto yy105;
- } else {
- if (yych <= '\r') goto yy100;
- if (yych <= '!') goto yy105;
- }
- } else {
- if (yych <= ':') {
- if (yych != '\'') goto yy105;
- } else {
- if (yych <= ';') goto yy100;
- if (yych != ']') goto yy105;
- }
- }
-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 1459 "Zend/zend_ini_scanner.c"
-yy101:
- YYDEBUG(101, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy104;
-yy102:
- YYDEBUG(102, *YYCURSOR);
- ++YYCURSOR;
-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 1475 "Zend/zend_ini_scanner.c"
-yy104:
- YYDEBUG(104, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy105:
- YYDEBUG(105, *YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy104;
- }
- if (yych == '$') goto yy107;
- if (yych != '\\') goto yy87;
-yy106:
- YYDEBUG(106, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- goto yy104;
-yy107:
- YYDEBUG(107, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy108;
- if (yych <= '[') goto yy104;
- goto yy109;
- } else {
- if (yych != '{') goto yy104;
- }
-yy108:
- YYDEBUG(108, *YYCURSOR);
- YYCURSOR = YYMARKER;
- if (yyaccept <= 1) {
- if (yyaccept <= 0) {
- goto yy87;
- } else {
- goto yy90;
- }
- } else {
- if (yyaccept <= 2) {
- goto yy98;
- } else {
- goto yy100;
- }
- }
-yy109:
- YYDEBUG(109, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 4) {
- goto yy110;
- }
- if (yych == '\\') goto yy112;
- goto yy104;
-yy110:
- YYDEBUG(110, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(111, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy110;
- }
- if (yych == '\\') goto yy114;
- goto yy104;
-yy112:
- YYDEBUG(112, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(113, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy110;
- }
- if (yych == '\\') goto yy112;
- goto yy104;
-yy114:
- YYDEBUG(114, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 4) {
- goto yy110;
- }
- if (yych == '\\') goto yy112;
- goto yy104;
-yy115:
- YYDEBUG(115, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(116, *YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy115;
- }
- if (yych <= '$') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy100;
- if (yych <= '\f') goto yy104;
- goto yy100;
- } else {
- if (yych == '"') goto yy100;
- if (yych <= '#') goto yy104;
- goto yy107;
- }
- } else {
- if (yych <= ';') {
- if (yych == '\'') goto yy100;
- if (yych <= ':') goto yy104;
- goto yy100;
- } else {
- if (yych <= '[') goto yy104;
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy100;
- goto yy104;
- }
- }
-yy117:
- YYDEBUG(117, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(118, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy117;
- }
- if (yych <= '$') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy98;
- if (yych <= '\f') goto yy104;
- goto yy98;
- } else {
- if (yych == '"') goto yy98;
- if (yych <= '#') goto yy104;
- goto yy107;
- }
- } else {
- if (yych <= ';') {
- if (yych == '\'') goto yy98;
- if (yych <= ':') goto yy104;
- goto yy98;
- } else {
- if (yych <= '[') goto yy104;
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy98;
- goto yy104;
- }
- }
-yy119:
- YYDEBUG(119, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(120, *YYCURSOR);
- if (yych <= '\'') {
- if (yych <= '!') {
- if (yych <= '\n') {
- if (yych <= '\t') goto yy104;
- goto yy98;
- } else {
- if (yych == '\r') goto yy98;
- goto yy104;
- }
- } else {
- if (yych <= '#') {
- if (yych <= '"') goto yy98;
- goto yy104;
- } else {
- if (yych <= '$') goto yy107;
- if (yych <= '&') goto yy104;
- goto yy98;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '.') {
- if (yych <= '-') goto yy104;
- goto yy117;
- } else {
- if (yych <= '/') goto yy104;
- if (yych <= '9') goto yy119;
- goto yy104;
- }
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy98;
- goto yy104;
- } else {
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy98;
- goto yy104;
- }
- }
- }
-yy121:
- YYDEBUG(121, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(122, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy98;
- if (yych <= '\f') goto yy104;
- goto yy98;
- } else {
- if (yych <= '"') {
- if (yych <= '!') goto yy104;
- goto yy98;
- } else {
- if (yych == '$') goto yy107;
- goto yy104;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '\'') goto yy98;
- if (yych <= '/') goto yy104;
- if (yych <= '9') goto yy121;
- goto yy104;
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy98;
- goto yy104;
- } else {
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy98;
- goto yy104;
- }
- }
- }
-yy123:
- YYDEBUG(123, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(124, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy98;
- if (yych <= '\f') goto yy104;
- goto yy98;
- } else {
- if (yych <= '"') {
- if (yych <= '!') goto yy104;
- goto yy98;
- } else {
- if (yych == '$') goto yy107;
- goto yy104;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '\'') goto yy98;
- if (yych <= '/') goto yy104;
- if (yych <= '9') goto yy123;
- goto yy104;
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy98;
- goto yy104;
- } else {
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy98;
- goto yy104;
- }
- }
- }
-yy125:
- YYDEBUG(125, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(126, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy125;
- }
- YYDEBUG(127, *YYCURSOR);
- ++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] == '\'') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
- }
- RETURN_TOKEN(TC_RAW, yytext, yyleng);
-}
-#line 1774 "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 1785 "Zend/zend_ini_scanner.c"
-yy131:
- YYDEBUG(131, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(132, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy131;
- }
- if (yych <= '$') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy87;
- if (yych <= '\f') goto yy104;
- goto yy87;
- } else {
- if (yych == '"') goto yy133;
- if (yych <= '#') goto yy104;
- goto yy107;
- }
- } else {
- if (yych <= ';') {
- if (yych == '\'') goto yy87;
- if (yych <= ':') goto yy104;
- goto yy87;
- } else {
- if (yych <= '[') goto yy104;
- if (yych <= '\\') goto yy106;
- if (yych <= ']') goto yy134;
- goto yy104;
- }
- }
-yy133:
- YYDEBUG(133, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy92;
-yy134:
- YYDEBUG(134, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy103;
- }
-/* *********************************** */
-yyc_ST_RAW:
- {
- static const unsigned char yybm[] = {
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 192, 0, 64, 64, 0, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 192, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- };
- YYDEBUG(135, *YYCURSOR);
- YYFILL(3);
- yych = *YYCURSOR;
- if (yych <= '\f') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy139;
- } else {
- if (yych <= '\t') goto yy141;
- if (yych <= '\n') goto yy142;
- goto yy139;
- }
- } else {
- if (yych <= ' ') {
- if (yych <= '\r') goto yy144;
- if (yych <= 0x1F) goto yy139;
- goto yy141;
- } else {
- if (yych == ';') goto yy145;
- goto yy139;
- }
- }
- YYDEBUG(137, *YYCURSOR);
- ++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 1895 "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) {
- switch (*YYCURSOR) {
- case '\n':
- case '\r':
- goto end_raw_value_chars;
- break;
- case ';':
- if (sc == NULL) {
- sc = YYCURSOR;
- }
- /* no break */
- default:
- YYCURSOR++;
- break;
- }
- }
-end_raw_value_chars:
- yyleng = YYCURSOR - SCNG(yy_text);
-
- /* Eat trailing semicolons */
- while (yytext[yyleng - 1] == ';') {
- yyleng--;
- }
-
- /* Eat leading and trailing double quotes */
- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
- } else if (sc) {
- YYCURSOR = sc;
- yyleng = YYCURSOR - SCNG(yy_text);
- }
- RETURN_TOKEN(TC_RAW, yytext, yyleng);
-}
-#line 1939 "Zend/zend_ini_scanner.c"
-yy141:
- YYDEBUG(141, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\r') {
- if (yych <= 0x08) goto yy140;
- if (yych <= '\n') goto yy153;
- if (yych <= '\f') goto yy140;
- goto yy153;
- } else {
- if (yych <= ' ') {
- if (yych <= 0x1F) goto yy140;
- goto yy153;
- } else {
- if (yych == ';') goto yy153;
- goto yy140;
- }
- }
-yy142:
- YYDEBUG(142, *YYCURSOR);
- ++YYCURSOR;
-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 1970 "Zend/zend_ini_scanner.c"
-yy144:
- YYDEBUG(144, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy151;
- goto yy143;
-yy145:
- YYDEBUG(145, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy147;
-yy146:
- YYDEBUG(146, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy147:
- YYDEBUG(147, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy146;
- }
- if (yych >= '\r') goto yy150;
-yy148:
- YYDEBUG(148, *YYCURSOR);
- ++YYCURSOR;
-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 2004 "Zend/zend_ini_scanner.c"
-yy150:
- YYDEBUG(150, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy148;
- goto yy149;
-yy151:
- YYDEBUG(151, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy143;
-yy152:
- YYDEBUG(152, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy153:
- YYDEBUG(153, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy152;
- }
- if (yych <= '\f') {
- if (yych == '\n') goto yy151;
- } else {
- if (yych <= '\r') goto yy155;
- if (yych == ';') goto yy146;
- }
- YYDEBUG(154, *YYCURSOR);
- yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
- {
- /* eat whitespace */
- goto restart;
-}
-#line 2038 "Zend/zend_ini_scanner.c"
-yy155:
- YYDEBUG(155, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy151;
- goto yy143;
- }
-/* *********************************** */
-yyc_ST_SECTION_RAW:
- {
- static const unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 192, 0, 128, 128, 0, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 192, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 0, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
- YYDEBUG(156, *YYCURSOR);
- YYFILL(3);
- yych = *YYCURSOR;
- if (yych <= '\f') {
- if (yych == '\n') goto yy160;
- } else {
- if (yych <= '\r') goto yy160;
- if (yych == ']') goto yy162;
- }
- YYDEBUG(158, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy169;
-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 2102 "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 2112 "Zend/zend_ini_scanner.c"
-yy162:
- YYDEBUG(162, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy165;
-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 2127 "Zend/zend_ini_scanner.c"
-yy164:
- YYDEBUG(164, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy165:
- YYDEBUG(165, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy164;
- }
- if (yych == '\n') goto yy166;
- if (yych == '\r') goto yy167;
- goto yy163;
-yy166:
- YYDEBUG(166, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy163;
-yy167:
- YYDEBUG(167, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy166;
- goto yy163;
-yy168:
- YYDEBUG(168, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy169:
- YYDEBUG(169, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy168;
- }
- goto yy159;
- }
-/* *********************************** */
-yyc_ST_SECTION_VALUE:
- {
- static const unsigned char yybm[] = {
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 134, 128, 132, 132, 128, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 134, 132, 128, 132, 136, 132, 132, 0,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 132, 128, 132, 132, 132, 132,
- 132, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 132, 144, 128, 132, 164,
- 132, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- };
- YYDEBUG(170, *YYCURSOR);
- YYFILL(3);
- yych = *YYCURSOR;
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy172;
- if (yych <= '\t') goto yy174;
- goto yy175;
- } else {
- if (yych == '\r') goto yy175;
- if (yych >= ' ') goto yy174;
- }
- } else {
- if (yych <= '$') {
- if (yych == '"') goto yy177;
- if (yych >= '$') goto yy179;
- } else {
- if (yych == '\'') goto yy180;
- if (yych >= '-') goto yy181;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '9') {
- if (yych <= '.') goto yy182;
- if (yych >= '0') goto yy183;
- } else {
- if (yych == ';') goto yy175;
- if (yych >= 'A') goto yy185;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '[') goto yy172;
- if (yych <= '\\') goto yy187;
- if (yych <= ']') goto yy188;
- } else {
- if (yych == '`') goto yy172;
- if (yych <= 'z') goto yy185;
- }
- }
- }
-yy172:
- YYDEBUG(172, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy195;
-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 2253 "Zend/zend_ini_scanner.c"
-yy174:
- YYDEBUG(174, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy221;
- goto yy195;
- } else {
- if (yych <= ' ') goto yy221;
- if (yych == '"') goto yy223;
- goto yy195;
- }
-yy175:
- YYDEBUG(175, *YYCURSOR);
- ++YYCURSOR;
-yy176:
- YYDEBUG(176, *YYCURSOR);
- yyleng = YYCURSOR - SCNG(yy_text);
-#line 603 "Zend/zend_ini_scanner.l"
- {
- return 0;
-}
-#line 2276 "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 2288 "Zend/zend_ini_scanner.c"
-yy179:
- YYDEBUG(179, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy176;
- if (yych <= '[') goto yy194;
- goto yy199;
- } else {
- if (yych == '{') goto yy219;
- goto yy194;
- }
-yy180:
- YYDEBUG(180, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy215;
- }
- goto yy176;
-yy181:
- YYDEBUG(181, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy195;
- if (yych <= '9') goto yy213;
- goto yy195;
-yy182:
- YYDEBUG(182, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy195;
- if (yych <= '9') goto yy211;
- goto yy195;
-yy183:
- YYDEBUG(183, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\'') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy184;
- if (yych <= '\f') goto yy195;
- } else {
- if (yych == '"') goto yy184;
- if (yych <= '&') goto yy195;
- }
- } else {
- if (yych <= '9') {
- if (yych == '.') goto yy207;
- if (yych <= '/') goto yy195;
- goto yy209;
- } else {
- if (yych <= ';') {
- if (yych <= ':') goto yy195;
- } else {
- if (yych != ']') goto yy195;
- }
- }
- }
-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 2354 "Zend/zend_ini_scanner.c"
-yy185:
- YYDEBUG(185, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy205;
- }
- if (yych <= '"') {
- if (yych <= '\f') {
- if (yych != '\n') goto yy195;
- } else {
- if (yych <= '\r') goto yy186;
- if (yych <= '!') goto yy195;
- }
- } else {
- if (yych <= ':') {
- if (yych != '\'') goto yy195;
- } else {
- if (yych <= ';') goto yy186;
- if (yych != ']') goto yy195;
- }
- }
-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 2384 "Zend/zend_ini_scanner.c"
-yy187:
- YYDEBUG(187, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy194;
-yy188:
- YYDEBUG(188, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy191;
-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 2403 "Zend/zend_ini_scanner.c"
-yy190:
- YYDEBUG(190, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy191:
- YYDEBUG(191, *YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy190;
- }
- if (yych == '\n') goto yy192;
- if (yych == '\r') goto yy193;
- goto yy189;
-yy192:
- YYDEBUG(192, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy189;
-yy193:
- YYDEBUG(193, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy192;
- goto yy189;
-yy194:
- YYDEBUG(194, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy195:
- YYDEBUG(195, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy194;
- }
- if (yych == '$') goto yy197;
- if (yych != '\\') goto yy173;
-yy196:
- YYDEBUG(196, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- goto yy194;
-yy197:
- YYDEBUG(197, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy198;
- if (yych <= '[') goto yy194;
- goto yy199;
- } else {
- if (yych != '{') goto yy194;
- }
-yy198:
- YYDEBUG(198, *YYCURSOR);
- YYCURSOR = YYMARKER;
- if (yyaccept <= 1) {
- if (yyaccept <= 0) {
- goto yy173;
- } else {
- goto yy176;
- }
- } else {
- if (yyaccept <= 2) {
- goto yy184;
- } else {
- goto yy186;
- }
- }
-yy199:
- YYDEBUG(199, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy200;
- }
- if (yych == '\\') goto yy202;
- goto yy194;
-yy200:
- YYDEBUG(200, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(201, *YYCURSOR);
- if (yybm[0+yych] & 8) {
- goto yy200;
- }
- if (yych == '\\') goto yy204;
- goto yy194;
-yy202:
- YYDEBUG(202, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(203, *YYCURSOR);
- if (yybm[0+yych] & 8) {
- goto yy200;
- }
- if (yych == '\\') goto yy202;
- goto yy194;
-yy204:
- YYDEBUG(204, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy200;
- }
- if (yych == '\\') goto yy202;
- goto yy194;
-yy205:
- YYDEBUG(205, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(206, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy205;
- }
- if (yych <= '$') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy186;
- if (yych <= '\f') goto yy194;
- goto yy186;
- } else {
- if (yych == '"') goto yy186;
- if (yych <= '#') goto yy194;
- goto yy197;
- }
- } else {
- if (yych <= ';') {
- if (yych == '\'') goto yy186;
- if (yych <= ':') goto yy194;
- goto yy186;
- } else {
- if (yych <= '[') goto yy194;
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy186;
- goto yy194;
- }
- }
-yy207:
- YYDEBUG(207, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(208, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy207;
- }
- if (yych <= '$') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy184;
- if (yych <= '\f') goto yy194;
- goto yy184;
- } else {
- if (yych == '"') goto yy184;
- if (yych <= '#') goto yy194;
- goto yy197;
- }
- } else {
- if (yych <= ';') {
- if (yych == '\'') goto yy184;
- if (yych <= ':') goto yy194;
- goto yy184;
- } else {
- if (yych <= '[') goto yy194;
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy184;
- goto yy194;
- }
- }
-yy209:
- YYDEBUG(209, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(210, *YYCURSOR);
- if (yych <= '\'') {
- if (yych <= '!') {
- if (yych <= '\n') {
- if (yych <= '\t') goto yy194;
- goto yy184;
- } else {
- if (yych == '\r') goto yy184;
- goto yy194;
- }
- } else {
- if (yych <= '#') {
- if (yych <= '"') goto yy184;
- goto yy194;
- } else {
- if (yych <= '$') goto yy197;
- if (yych <= '&') goto yy194;
- goto yy184;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '.') {
- if (yych <= '-') goto yy194;
- goto yy207;
- } else {
- if (yych <= '/') goto yy194;
- if (yych <= '9') goto yy209;
- goto yy194;
- }
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy184;
- goto yy194;
- } else {
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy184;
- goto yy194;
- }
- }
- }
-yy211:
- YYDEBUG(211, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(212, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy184;
- if (yych <= '\f') goto yy194;
- goto yy184;
- } else {
- if (yych <= '"') {
- if (yych <= '!') goto yy194;
- goto yy184;
- } else {
- if (yych == '$') goto yy197;
- goto yy194;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '\'') goto yy184;
- if (yych <= '/') goto yy194;
- if (yych <= '9') goto yy211;
- goto yy194;
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy184;
- goto yy194;
- } else {
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy184;
- goto yy194;
- }
- }
- }
-yy213:
- YYDEBUG(213, *YYCURSOR);
- yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(214, *YYCURSOR);
- if (yych <= '&') {
- if (yych <= '\r') {
- if (yych == '\n') goto yy184;
- if (yych <= '\f') goto yy194;
- goto yy184;
- } else {
- if (yych <= '"') {
- if (yych <= '!') goto yy194;
- goto yy184;
- } else {
- if (yych == '$') goto yy197;
- goto yy194;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '\'') goto yy184;
- if (yych <= '/') goto yy194;
- if (yych <= '9') goto yy213;
- goto yy194;
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy184;
- goto yy194;
- } else {
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy184;
- goto yy194;
- }
- }
- }
-yy215:
- YYDEBUG(215, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(216, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy215;
- }
- YYDEBUG(217, *YYCURSOR);
- ++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] == '\'') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
- }
- RETURN_TOKEN(TC_RAW, yytext, yyleng);
-}
-#line 2724 "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 2735 "Zend/zend_ini_scanner.c"
-yy221:
- YYDEBUG(221, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(222, *YYCURSOR);
- if (yych <= '"') {
- if (yych <= '\f') {
- if (yych <= 0x08) goto yy194;
- if (yych <= '\t') goto yy221;
- if (yych <= '\n') goto yy173;
- goto yy194;
- } else {
- if (yych <= 0x1F) {
- if (yych <= '\r') goto yy173;
- goto yy194;
- } else {
- if (yych <= ' ') goto yy221;
- if (yych <= '!') goto yy194;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '$') {
- if (yych <= '#') goto yy194;
- goto yy197;
- } else {
- if (yych == '\'') goto yy173;
- goto yy194;
- }
- } else {
- if (yych <= '[') {
- if (yych <= ';') goto yy173;
- goto yy194;
- } else {
- if (yych <= '\\') goto yy196;
- if (yych <= ']') goto yy173;
- goto yy194;
- }
- }
- }
-yy223:
- YYDEBUG(223, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy178;
- }
-/* *********************************** */
-yyc_ST_VALUE:
- {
- static const unsigned char yybm[] = {
- 160, 162, 162, 162, 162, 162, 162, 162,
- 162, 176, 128, 162, 162, 128, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 176, 160, 160, 162, 168, 162, 160, 32,
- 160, 160, 162, 162, 162, 162, 162, 162,
- 230, 230, 230, 230, 230, 230, 230, 230,
- 230, 230, 162, 160, 162, 160, 162, 162,
- 162, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 162, 162, 162, 160, 166,
- 162, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 166, 162, 160, 162, 160, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162,
- };
- YYDEBUG(224, *YYCURSOR);
- YYFILL(6);
- yych = *YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case 0x00: goto yy226;
- case '\t':
- case ' ': goto yy230;
- case '\n': goto yy232;
- case '\r': goto yy234;
- case '!':
- case '&':
- case '(':
- case ')':
- case '^':
- case '|':
- case '~': goto yy235;
- case '"': goto yy237;
- case '$': goto yy239;
- case '\'': goto yy240;
- case '-': goto yy241;
- case '.': goto yy242;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy243;
- case ';': goto yy245;
- case '=': goto yy246;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Z':
- case '_':
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'z': goto yy248;
- case 'F':
- case 'f': goto yy250;
- case 'N':
- case 'n': goto yy251;
- case 'O':
- case 'o': goto yy252;
- case 'T':
- case 't': goto yy253;
- case 'Y':
- case 'y': goto yy254;
- default: goto yy228;
- }
-yy226:
- YYDEBUG(226, *YYCURSOR);
- ++YYCURSOR;
-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;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy256;
-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;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy306;
-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;
- if (yych == '\n') goto yy304;
- goto yy233;
-yy235:
- YYDEBUG(235, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy303;
-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;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy227;
- if (yych <= '[') goto yy255;
- goto yy262;
- } else {
- if (yych == '{') goto yy300;
- goto yy255;
- }
-yy240:
- YYDEBUG(240, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy296;
- }
- goto yy227;
-yy241:
- YYDEBUG(241, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy256;
- if (yych <= '9') goto yy294;
- goto yy256;
-yy242:
- YYDEBUG(242, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy256;
- if (yych <= '9') goto yy292;
- goto yy256;
-yy243:
- YYDEBUG(243, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy244;
- if (yych <= 0x08) goto yy256;
- } else {
- if (yych != '\r') goto yy256;
- }
- } else {
- if (yych <= ')') {
- if (yych <= '"') goto yy244;
- if (yych <= '%') goto yy256;
- } else {
- if (yych == '.') goto yy288;
- goto yy256;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= '9') goto yy290;
- if (yych <= ':') goto yy256;
- } else {
- if (yych != '=') goto yy256;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy244;
- if (yych <= '{') goto yy256;
- } else {
- if (yych != '~') goto yy256;
- }
- }
- }
-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 3069 "Zend/zend_ini_scanner.c"
-yy245:
- YYDEBUG(245, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy284;
-yy246:
- YYDEBUG(246, *YYCURSOR);
- ++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 3086 "Zend/zend_ini_scanner.c"
-yy248:
- YYDEBUG(248, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy257;
- }
- if (yych <= ':') {
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy256;
- } else {
- if (yych <= '\n') goto yy249;
- if (yych <= '\f') goto yy256;
- }
- } else {
- if (yych <= '"') {
- if (yych <= 0x1F) goto yy256;
- } else {
- if (yych <= '%') goto yy256;
- if (yych >= '*') goto yy256;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= '<') {
- if (yych >= '<') goto yy256;
- } else {
- if (yych <= '=') goto yy249;
- if (yych <= ']') goto yy256;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '{') goto yy256;
- } else {
- if (yych != '~') goto yy256;
- }
- }
- }
-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 3133 "Zend/zend_ini_scanner.c"
-yy250:
- YYDEBUG(250, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '<') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '/') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- goto yy256;
- } else {
- if (yych <= '9') goto yy257;
- if (yych == ';') goto yy249;
- goto yy256;
- }
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') {
- if (yych <= '=') goto yy249;
- if (yych <= '@') goto yy256;
- goto yy280;
- } else {
- if (yych <= 'Z') goto yy257;
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- goto yy257;
- }
- } else {
- if (yych <= '{') {
- if (yych <= '`') goto yy256;
- if (yych <= 'a') goto yy280;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy251:
- YYDEBUG(251, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '%') {
- if (yych <= '\f') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- if (yych <= '\n') goto yy249;
- goto yy256;
- } else {
- if (yych <= '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- if (yych <= '"') goto yy249;
- goto yy256;
- }
- } else {
- if (yych <= ':') {
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- if (yych <= '9') goto yy257;
- goto yy256;
- } else {
- if (yych <= '<') {
- if (yych <= ';') goto yy249;
- goto yy256;
- } else {
- if (yych <= '=') goto yy249;
- if (yych <= '@') goto yy256;
- goto yy257;
- }
- }
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'Z') {
- if (yych <= 'O') goto yy276;
- if (yych == 'U') goto yy277;
- goto yy257;
- } else {
- if (yych <= '^') {
- if (yych <= ']') goto yy256;
- goto yy249;
- } else {
- if (yych == '`') goto yy256;
- goto yy257;
- }
- }
- } else {
- if (yych <= 'z') {
- if (yych <= 'o') goto yy276;
- if (yych == 'u') goto yy277;
- goto yy257;
- } else {
- if (yych <= '|') {
- if (yych <= '{') goto yy256;
- goto yy249;
- } else {
- if (yych == '~') goto yy249;
- goto yy256;
- }
- }
- }
- }
-yy252:
- YYDEBUG(252, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'E') {
- if (yych <= '%') {
- if (yych <= '\f') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- if (yych <= '\n') goto yy249;
- goto yy256;
- } else {
- if (yych <= '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- if (yych <= '"') goto yy249;
- goto yy256;
- }
- } else {
- if (yych <= ':') {
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- if (yych <= '9') goto yy257;
- goto yy256;
- } else {
- if (yych <= '<') {
- if (yych <= ';') goto yy249;
- goto yy256;
- } else {
- if (yych <= '=') goto yy249;
- if (yych <= '@') goto yy256;
- goto yy257;
- }
- }
- }
- } else {
- if (yych <= 'e') {
- if (yych <= 'Z') {
- if (yych <= 'F') goto yy271;
- if (yych == 'N') goto yy265;
- goto yy257;
- } else {
- if (yych <= '^') {
- if (yych <= ']') goto yy256;
- goto yy249;
- } else {
- if (yych == '`') goto yy256;
- goto yy257;
- }
- }
- } else {
- if (yych <= 'z') {
- if (yych <= 'f') goto yy271;
- if (yych == 'n') goto yy265;
- goto yy257;
- } else {
- if (yych <= '|') {
- if (yych <= '{') goto yy256;
- goto yy249;
- } else {
- if (yych == '~') goto yy249;
- goto yy256;
- }
- }
- }
- }
-yy253:
- YYDEBUG(253, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'R') goto yy269;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'r') goto yy269;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy254:
- YYDEBUG(254, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'E') goto yy259;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'e') goto yy259;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy255:
- YYDEBUG(255, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy256:
- YYDEBUG(256, *YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy255;
- }
- if (yych == '$') goto yy260;
- goto yy229;
-yy257:
- YYDEBUG(257, *YYCURSOR);
- yyaccept = 4;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(258, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy257;
- }
- if (yych <= ')') {
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych <= 0x00) goto yy249;
- goto yy255;
- } else {
- if (yych <= '\n') goto yy249;
- if (yych <= '\f') goto yy255;
- goto yy249;
- }
- } else {
- if (yych <= '#') {
- if (yych <= 0x1F) goto yy255;
- if (yych <= '"') goto yy249;
- goto yy255;
- } else {
- if (yych <= '$') goto yy260;
- if (yych <= '%') goto yy255;
- goto yy249;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= ':') goto yy255;
- goto yy249;
- } else {
- if (yych == '=') goto yy249;
- goto yy255;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy249;
- if (yych <= '{') goto yy255;
- goto yy249;
- } else {
- if (yych == '~') goto yy249;
- goto yy255;
- }
- }
- }
-yy259:
- YYDEBUG(259, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'S') goto yy265;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 's') goto yy265;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy260:
- YYDEBUG(260, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '\\') {
- if (yych <= 0x00) goto yy261;
- if (yych <= '[') goto yy255;
- goto yy262;
- } else {
- if (yych != '{') goto yy255;
- }
-yy261:
- YYDEBUG(261, *YYCURSOR);
- YYCURSOR = YYMARKER;
- if (yyaccept <= 3) {
- if (yyaccept <= 1) {
- if (yyaccept <= 0) {
- goto yy229;
- } else {
- goto yy231;
- }
- } else {
- if (yyaccept <= 2) {
- goto yy227;
- } else {
- goto yy244;
- }
- }
- } else {
- if (yyaccept <= 5) {
- if (yyaccept <= 4) {
- goto yy249;
- } else {
- goto yy266;
- }
- } else {
- goto yy273;
- }
- }
-yy262:
- YYDEBUG(262, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy263;
- }
- goto yy255;
-yy263:
- YYDEBUG(263, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(264, *YYCURSOR);
- if (yybm[0+yych] & 8) {
- goto yy263;
- }
- if (yych <= 0x00) goto yy229;
- if (yych == '\\') goto yy262;
- goto yy255;
-yy265:
- YYDEBUG(265, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy267;
- }
- if (yych <= ';') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy266;
- if (yych <= '\t') goto yy256;
- } else {
- if (yych != '\r') goto yy256;
- }
- } else {
- if (yych <= ')') {
- if (yych <= '"') goto yy266;
- if (yych <= '%') goto yy256;
- } else {
- if (yych <= '/') goto yy256;
- if (yych <= '9') goto yy257;
- if (yych <= ':') goto yy256;
- }
- }
- } else {
- if (yych <= '_') {
- if (yych <= '@') {
- if (yych != '=') goto yy256;
- } else {
- if (yych <= 'Z') goto yy257;
- if (yych <= ']') goto yy256;
- if (yych >= '_') goto yy257;
- }
- } else {
- if (yych <= '{') {
- if (yych <= '`') goto yy256;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych >= 0x7F) goto yy256;
- }
- }
- }
-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 3645 "Zend/zend_ini_scanner.c"
-yy267:
- YYDEBUG(267, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(268, *YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy267;
- }
- goto yy266;
-yy269:
- YYDEBUG(269, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych != 'U') goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'u') goto yy270;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy270:
- YYDEBUG(270, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'E') goto yy265;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'e') goto yy265;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy271:
- YYDEBUG(271, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych != 'F') goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'f') goto yy272;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy272:
- YYDEBUG(272, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy257;
- }
- if (yych <= ')') {
- if (yych <= '\f') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy256;
- } else {
- if (yych <= '\t') goto yy274;
- if (yych >= '\v') goto yy256;
- }
- } else {
- if (yych <= ' ') {
- if (yych <= '\r') goto yy273;
- if (yych <= 0x1F) goto yy256;
- goto yy274;
- } else {
- if (yych <= '"') goto yy273;
- if (yych <= '%') goto yy256;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= ':') goto yy256;
- } else {
- if (yych != '=') goto yy256;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy273;
- if (yych <= '{') goto yy256;
- } else {
- if (yych != '~') goto yy256;
- }
- }
- }
-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 3855 "Zend/zend_ini_scanner.c"
-yy274:
- YYDEBUG(274, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(275, *YYCURSOR);
- if (yych == '\t') goto yy274;
- if (yych == ' ') goto yy274;
- goto yy273;
-yy276:
- YYDEBUG(276, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '<') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy273;
- if (yych <= 0x08) goto yy256;
- if (yych <= '\t') goto yy274;
- goto yy273;
- } else {
- if (yych == '\r') goto yy273;
- if (yych <= 0x1F) goto yy256;
- goto yy274;
- }
- } else {
- if (yych <= '/') {
- if (yych <= '"') goto yy273;
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy273;
- goto yy256;
- } else {
- if (yych <= '9') goto yy257;
- if (yych == ';') goto yy273;
- goto yy256;
- }
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') {
- if (yych <= '=') goto yy273;
- if (yych <= '@') goto yy256;
- if (yych <= 'M') goto yy257;
- goto yy279;
- } else {
- if (yych <= 'Z') goto yy257;
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy273;
- goto yy257;
- }
- } else {
- if (yych <= 'z') {
- if (yych <= '`') goto yy256;
- if (yych == 'n') goto yy279;
- goto yy257;
- } else {
- if (yych <= '|') {
- if (yych <= '{') goto yy256;
- goto yy273;
- } else {
- if (yych == '~') goto yy273;
- goto yy256;
- }
- }
- }
- }
-yy277:
- YYDEBUG(277, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych != 'L') goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'l') goto yy278;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy278:
- YYDEBUG(278, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'L') goto yy272;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'l') goto yy272;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy279:
- YYDEBUG(279, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'E') goto yy272;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'e') goto yy272;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy280:
- YYDEBUG(280, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych != 'L') goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'l') goto yy281;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy281:
- YYDEBUG(281, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych != 'S') goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 's') goto yy282;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy282:
- YYDEBUG(282, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '=') {
- if (yych <= '"') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy249;
- if (yych <= 0x08) goto yy256;
- goto yy249;
- } else {
- if (yych == '\r') goto yy249;
- if (yych <= 0x1F) goto yy256;
- goto yy249;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy249;
- if (yych <= '/') goto yy256;
- goto yy257;
- } else {
- if (yych == ';') goto yy249;
- if (yych <= '<') goto yy256;
- goto yy249;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy256;
- if (yych == 'E') goto yy272;
- goto yy257;
- } else {
- if (yych <= ']') goto yy256;
- if (yych <= '^') goto yy249;
- if (yych <= '_') goto yy257;
- goto yy256;
- }
- } else {
- if (yych <= '{') {
- if (yych == 'e') goto yy272;
- if (yych <= 'z') goto yy257;
- goto yy256;
- } else {
- if (yych == '}') goto yy256;
- if (yych <= '~') goto yy249;
- goto yy256;
- }
- }
- }
-yy283:
- YYDEBUG(283, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy284:
- YYDEBUG(284, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy283;
- }
- if (yych >= '\r') goto yy287;
-yy285:
- YYDEBUG(285, *YYCURSOR);
- ++YYCURSOR;
-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 4248 "Zend/zend_ini_scanner.c"
-yy287:
- YYDEBUG(287, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy285;
- goto yy286;
-yy288:
- YYDEBUG(288, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(289, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy288;
- }
- if (yych <= ')') {
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych <= 0x00) goto yy244;
- goto yy255;
- } else {
- if (yych <= '\n') goto yy244;
- if (yych <= '\f') goto yy255;
- goto yy244;
- }
- } else {
- if (yych <= '#') {
- if (yych <= 0x1F) goto yy255;
- if (yych <= '"') goto yy244;
- goto yy255;
- } else {
- if (yych <= '$') goto yy260;
- if (yych <= '%') goto yy255;
- goto yy244;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= ':') goto yy255;
- goto yy244;
- } else {
- if (yych == '=') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy244;
- if (yych <= '{') goto yy255;
- goto yy244;
- } else {
- if (yych == '~') goto yy244;
- goto yy255;
- }
- }
- }
-yy290:
- YYDEBUG(290, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(291, *YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy244;
- if (yych <= 0x08) goto yy255;
- goto yy244;
- } else {
- if (yych == '\r') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '$') {
- if (yych <= '"') goto yy244;
- if (yych <= '#') goto yy255;
- goto yy260;
- } else {
- if (yych <= '%') goto yy255;
- if (yych <= ')') goto yy244;
- if (yych <= '-') goto yy255;
- goto yy288;
- }
- }
- } else {
- if (yych <= '=') {
- if (yych <= ':') {
- if (yych <= '/') goto yy255;
- if (yych <= '9') goto yy290;
- goto yy255;
- } else {
- if (yych == '<') goto yy255;
- goto yy244;
- }
- } else {
- if (yych <= '{') {
- if (yych == '^') goto yy244;
- goto yy255;
- } else {
- if (yych == '}') goto yy255;
- if (yych <= '~') goto yy244;
- goto yy255;
- }
- }
- }
-yy292:
- YYDEBUG(292, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(293, *YYCURSOR);
- if (yych <= '/') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy244;
- if (yych <= 0x08) goto yy255;
- goto yy244;
- } else {
- if (yych == '\r') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '$') {
- if (yych <= '"') goto yy244;
- if (yych <= '#') goto yy255;
- goto yy260;
- } else {
- if (yych <= '%') goto yy255;
- if (yych <= ')') goto yy244;
- goto yy255;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= '9') goto yy292;
- if (yych <= ':') goto yy255;
- goto yy244;
- } else {
- if (yych == '=') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy244;
- if (yych <= '{') goto yy255;
- goto yy244;
- } else {
- if (yych == '~') goto yy244;
- goto yy255;
- }
- }
- }
-yy294:
- YYDEBUG(294, *YYCURSOR);
- yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(295, *YYCURSOR);
- if (yych <= '/') {
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy244;
- if (yych <= 0x08) goto yy255;
- goto yy244;
- } else {
- if (yych == '\r') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '$') {
- if (yych <= '"') goto yy244;
- if (yych <= '#') goto yy255;
- goto yy260;
- } else {
- if (yych <= '%') goto yy255;
- if (yych <= ')') goto yy244;
- goto yy255;
- }
- }
- } else {
- if (yych <= ']') {
- if (yych <= ';') {
- if (yych <= '9') goto yy294;
- if (yych <= ':') goto yy255;
- goto yy244;
- } else {
- if (yych == '=') goto yy244;
- goto yy255;
- }
- } else {
- if (yych <= '|') {
- if (yych <= '^') goto yy244;
- if (yych <= '{') goto yy255;
- goto yy244;
- } else {
- if (yych == '~') goto yy244;
- goto yy255;
- }
- }
- }
-yy296:
- YYDEBUG(296, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(297, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy296;
- }
- YYDEBUG(298, *YYCURSOR);
- ++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] == '\'') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
- }
- RETURN_TOKEN(TC_RAW, yytext, yyleng);
-}
-#line 4475 "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 4486 "Zend/zend_ini_scanner.c"
-yy302:
- YYDEBUG(302, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy303:
- YYDEBUG(303, *YYCURSOR);
- if (yych == '\t') goto yy302;
- if (yych == ' ') goto yy302;
- goto yy236;
-yy304:
- YYDEBUG(304, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy233;
-yy305:
- YYDEBUG(305, *YYCURSOR);
- yyaccept = 1;
- YYMARKER = ++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
-yy306:
- YYDEBUG(306, *YYCURSOR);
- if (yych <= 0x1F) {
- if (yych <= '\n') {
- if (yych <= 0x08) goto yy231;
- if (yych <= '\t') goto yy305;
- goto yy304;
- } else {
- if (yych == '\r') goto yy308;
- goto yy231;
- }
- } else {
- if (yych <= '"') {
- if (yych <= ' ') goto yy305;
- if (yych <= '!') goto yy231;
- } else {
- if (yych == ';') goto yy283;
- goto yy231;
- }
- }
- YYDEBUG(307, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy238;
-yy308:
- YYDEBUG(308, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy304;
- goto yy233;
- }
-/* *********************************** */
-yyc_ST_VARNAME:
- {
- static const unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 0, 0, 128, 128, 0, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 0, 0, 128, 0, 128, 0, 128,
- 0, 0, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 128, 0, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 128, 128, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
- YYDEBUG(309, *YYCURSOR);
- YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= ')') {
- if (yych <= '"') {
- if (yych <= '\f') {
- if (yych <= 0x08) goto yy311;
- if (yych <= '\n') goto yy313;
- } else {
- if (yych <= '\r') goto yy313;
- if (yych >= '!') goto yy313;
- }
- } else {
- if (yych <= '%') {
- if (yych == '$') goto yy313;
- } else {
- if (yych != '\'') goto yy313;
- }
- }
- } else {
- if (yych <= '[') {
- if (yych <= '<') {
- if (yych == ';') goto yy313;
- } else {
- if (yych <= '=') goto yy313;
- if (yych >= '[') goto yy313;
- }
- } else {
- if (yych <= 'z') {
- if (yych == '^') goto yy313;
- } else {
- if (yych == '}') goto yy315;
- if (yych <= '~') goto yy313;
- }
- }
- }
-yy311:
- YYDEBUG(311, *YYCURSOR);
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy318;
-yy312:
- YYDEBUG(312, *YYCURSOR);
- yyleng = YYCURSOR - SCNG(yy_text);
-#line 406 "Zend/zend_ini_scanner.l"
- { /* Variable name */
- /* Eat leading whitespace */
- EAT_LEADING_WHITESPACE();
-
- /* Eat trailing whitespace */
- EAT_TRAILING_WHITESPACE();
-
- RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
-}
-#line 4627 "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 4637 "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 4648 "Zend/zend_ini_scanner.c"
-yy317:
- YYDEBUG(317, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
-yy318:
- YYDEBUG(318, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy317;
- }
- goto yy312;
- }
-}
-#line 607 "Zend/zend_ini_scanner.l"
-
-}
+/* Generated by re2c 0.13.6 */
+#line 1 "Zend/zend_ini_scanner.l"
+/*
+ +----------------------------------------------------------------------+
+ | Zend Engine |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.00 of the Zend license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.zend.com/license/2_00.txt. |
+ | If you did not receive a copy of the Zend license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@zend.com so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Zeev Suraski <zeev@zend.com> |
+ | Jani Taskinen <jani@php.net> |
+ | Marcus Boerger <helly@php.net> |
+ | Nuno Lopes <nlopess@php.net> |
+ | Scott MacVicar <scottmac@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id$ */
+
+#include <errno.h>
+#include "zend.h"
+#include "zend_API.h"
+#include "zend_globals.h"
+#include <zend_ini_parser.h>
+#include "zend_ini_scanner.h"
+
+#if 0
+# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
+#else
+# define YYDEBUG(s, c)
+#endif
+
+#include "zend_ini_scanner_defs.h"
+
+#define YYCTYPE unsigned char
+/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
+ * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
+#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
+#define YYCURSOR SCNG(yy_cursor)
+#define YYLIMIT SCNG(yy_limit)
+#define YYMARKER SCNG(yy_marker)
+
+#define YYGETCONDITION() SCNG(yy_state)
+#define YYSETCONDITION(s) SCNG(yy_state) = s
+
+#define STATE(name) yyc##name
+
+/* emulate flex constructs */
+#define BEGIN(state) YYSETCONDITION(STATE(state))
+#define YYSTATE YYGETCONDITION()
+#define yytext ((char*)SCNG(yy_text))
+#define yyleng SCNG(yy_leng)
+#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \
+ yyleng = (unsigned int)x; } while(0)
+
+/* #define yymore() goto yymore_restart */
+
+/* perform sanity check. If this message is triggered you should
+ increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
+#define YYMAXFILL 6
+#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
+# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
+#endif
+
+
+/* How it works (for the core ini directives):
+ * ===========================================
+ *
+ * 1. Scanner scans file for tokens and passes them to parser.
+ * 2. Parser parses the tokens and passes the name/value pairs to the callback
+ * function which stores them in the configuration hash table.
+ * 3. Later REGISTER_INI_ENTRIES() is called which triggers the actual
+ * registering of ini entries and uses zend_get_configuration_directive()
+ * to fetch the previously stored name/value pair from configuration hash table
+ * and registers the static ini entries which match the name to the value
+ * into EG(ini_directives) hash table.
+ * 4. PATH section entries are used per-request from down to top, each overriding
+ * previous if one exists. zend_alter_ini_entry() is called for each entry.
+ * Settings in PATH section are ZEND_INI_SYSTEM accessible and thus mimics the
+ * php_admin_* directives used within Apache httpd.conf when PHP is compiled as
+ * module for Apache.
+ * 5. User defined ini files (like .htaccess for apache) are parsed for each request and
+ * stored in separate hash defined by SAPI.
+ */
+
+/* TODO: (ordered by importance :-)
+ * ===============================================================================
+ *
+ * - Separate constant lookup totally from plain strings (using CONSTANT pattern)
+ * - Add #if .. #else .. #endif and ==, !=, <, > , <=, >= operators
+ * - Add #include "some.ini"
+ * - Allow variables to refer to options also when using parse_ini_file()
+ *
+ */
+
+/* Globals Macros */
+#define SCNG INI_SCNG
+#ifdef ZTS
+ZEND_API ts_rsrc_id ini_scanner_globals_id;
+#else
+ZEND_API zend_ini_scanner_globals ini_scanner_globals;
+#endif
+
+/* Eat leading whitespace */
+#define EAT_LEADING_WHITESPACE() \
+ while (yytext[0]) { \
+ if (yytext[0] == ' ' || yytext[0] == '\t') { \
+ SCNG(yy_text)++; \
+ yyleng--; \
+ } else { \
+ break; \
+ } \
+ }
+
+/* Eat trailing whitespace + extra char */
+#define EAT_TRAILING_WHITESPACE_EX(ch) \
+ while (yyleng > 0 && ( \
+ (ch != 'X' && yytext[yyleng - 1] == ch) || \
+ yytext[yyleng - 1] == '\n' || \
+ yytext[yyleng - 1] == '\r' || \
+ yytext[yyleng - 1] == '\t' || \
+ yytext[yyleng - 1] == ' ') \
+ ) { \
+ yyleng--; \
+ }
+
+/* Eat trailing whitespace */
+#define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X')
+
+#define zend_ini_copy_value(retval, str, len) { \
+ Z_STRVAL_P(retval) = zend_strndup(str, len); \
+ Z_STRLEN_P(retval) = len; \
+ Z_TYPE_P(retval) = IS_STRING; \
+}
+
+#define RETURN_TOKEN(type, str, len) { \
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \
+ zend_ini_copy_typed_value(ini_lval, type, str, len); \
+ } else { \
+ zend_ini_copy_value(ini_lval, str, len); \
+ } \
+ return type; \
+}
+
+static inline int convert_to_number(zval *retval, const char *str, const int str_len)
+{
+ zend_uchar type;
+ int overflow;
+ long lval;
+ double dval;
+
+ if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) {
+ if (type == IS_LONG) {
+ ZVAL_LONG(retval, lval);
+ return SUCCESS;
+ } else if (type == IS_DOUBLE && !overflow) {
+ ZVAL_DOUBLE(retval, dval);
+ return SUCCESS;
+ }
+ }
+
+ return FAILURE;
+}
+
+static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len)
+{
+ switch (type) {
+ case BOOL_FALSE:
+ case BOOL_TRUE:
+ ZVAL_BOOL(retval, type == BOOL_TRUE);
+ break;
+
+ case NULL_NULL:
+ ZVAL_NULL(retval);
+ break;
+
+ case TC_NUMBER:
+ if (convert_to_number(retval, str, len) == SUCCESS) {
+ break;
+ }
+ /* intentional fall-through */
+ default:
+ zend_ini_copy_value(retval, str, len);
+ }
+}
+
+static void _yy_push_state(int new_state TSRMLS_DC)
+{
+ zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int));
+ YYSETCONDITION(new_state);
+}
+
+#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
+
+static void yy_pop_state(TSRMLS_D)
+{
+ int *stack_state;
+ zend_stack_top(&SCNG(state_stack), (void **) &stack_state);
+ YYSETCONDITION(*stack_state);
+ zend_stack_del_top(&SCNG(state_stack));
+}
+
+static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
+{
+ YYCURSOR = (YYCTYPE*)str;
+ SCNG(yy_start) = YYCURSOR;
+ YYLIMIT = YYCURSOR + len;
+}
+
+#define ini_filename SCNG(filename)
+
+/* {{{ init_ini_scanner()
+*/
+static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC)
+{
+ /* Sanity check */
+ if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
+ zend_error(E_WARNING, "Invalid scanner mode");
+ return FAILURE;
+ }
+
+ SCNG(lineno) = 1;
+ SCNG(scanner_mode) = scanner_mode;
+ SCNG(yy_in) = fh;
+
+ if (fh != NULL) {
+ ini_filename = zend_strndup(fh->filename, strlen(fh->filename));
+ } else {
+ ini_filename = NULL;
+ }
+
+ zend_stack_init(&SCNG(state_stack));
+ BEGIN(INITIAL);
+
+ return SUCCESS;
+}
+/* }}} */
+
+/* {{{ shutdown_ini_scanner()
+*/
+void shutdown_ini_scanner(TSRMLS_D)
+{
+ zend_stack_destroy(&SCNG(state_stack));
+ if (ini_filename) {
+ free(ini_filename);
+ }
+}
+/* }}} */
+
+/* {{{ zend_ini_scanner_get_lineno()
+*/
+int zend_ini_scanner_get_lineno(TSRMLS_D)
+{
+ return SCNG(lineno);
+}
+/* }}} */
+
+/* {{{ zend_ini_scanner_get_filename()
+*/
+char *zend_ini_scanner_get_filename(TSRMLS_D)
+{
+ return ini_filename ? ini_filename : "Unknown";
+}
+/* }}} */
+
+/* {{{ zend_ini_open_file_for_scanning()
+*/
+int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode TSRMLS_DC)
+{
+ char *buf;
+ size_t size;
+
+ if (zend_stream_fixup(fh, &buf, &size TSRMLS_CC) == FAILURE) {
+ return FAILURE;
+ }
+
+ if (init_ini_scanner(scanner_mode, fh TSRMLS_CC) == FAILURE) {
+ zend_file_handle_dtor(fh TSRMLS_CC);
+ return FAILURE;
+ }
+
+ yy_scan_buffer(buf, size TSRMLS_CC);
+
+ return SUCCESS;
+}
+/* }}} */
+
+/* {{{ zend_ini_prepare_string_for_scanning()
+*/
+int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode TSRMLS_DC)
+{
+ int len = strlen(str);
+
+ if (init_ini_scanner(scanner_mode, NULL TSRMLS_CC) == FAILURE) {
+ return FAILURE;
+ }
+
+ yy_scan_buffer(str, len TSRMLS_CC);
+
+ return SUCCESS;
+}
+/* }}} */
+
+/* {{{ zend_ini_escape_string()
+ */
+static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type TSRMLS_DC)
+{
+ register char *s, *t;
+ char *end;
+
+ zend_ini_copy_value(lval, str, len);
+
+ /* convert escape sequences */
+ s = t = Z_STRVAL_P(lval);
+ end = s + Z_STRLEN_P(lval);
+
+ while (s < end) {
+ if (*s == '\\') {
+ s++;
+ if (s >= end) {
+ *t++ = '\\';
+ continue;
+ }
+ switch (*s) {
+ case '"':
+ if (*s != quote_type) {
+ *t++ = '\\';
+ *t++ = *s;
+ break;
+ }
+ case '\\':
+ case '$':
+ *t++ = *s;
+ Z_STRLEN_P(lval)--;
+ break;
+ default:
+ *t++ = '\\';
+ *t++ = *s;
+ break;
+ }
+ } else {
+ *t++ = *s;
+ }
+ if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
+ SCNG(lineno)++;
+ }
+ s++;
+ }
+ *t = 0;
+}
+/* }}} */
+
+int ini_lex(zval *ini_lval TSRMLS_DC)
+{
+restart:
+ SCNG(yy_text) = YYCURSOR;
+
+/* yymore_restart: */
+ /* detect EOF */
+ if (YYCURSOR >= YYLIMIT) {
+ if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+ }
+ return 0;
+ }
+
+ /* Eat any UTF-8 BOM we find in the first 3 bytes */
+ if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
+ if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
+ YYCURSOR += 3;
+ goto restart;
+ }
+ }
+
+#line 384 "Zend/zend_ini_scanner.c"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ if (YYGETCONDITION() < 4) {
+ if (YYGETCONDITION() < 2) {
+ if (YYGETCONDITION() < 1) {
+ goto yyc_INITIAL;
+ } else {
+ goto yyc_ST_OFFSET;
+ }
+ } else {
+ if (YYGETCONDITION() < 3) {
+ goto yyc_ST_SECTION_VALUE;
+ } else {
+ goto yyc_ST_VALUE;
+ }
+ }
+ } else {
+ if (YYGETCONDITION() < 6) {
+ if (YYGETCONDITION() < 5) {
+ goto yyc_ST_SECTION_RAW;
+ } else {
+ goto yyc_ST_DOUBLE_QUOTES;
+ }
+ } else {
+ if (YYGETCONDITION() < 7) {
+ goto yyc_ST_VARNAME;
+ } else {
+ goto yyc_ST_RAW;
+ }
+ }
+ }
+/* *********************************** */
+yyc_INITIAL:
+ {
+ static const unsigned char yybm[] = {
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 160, 0, 144, 144, 0, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 240, 128, 128, 144, 128, 144, 128, 144,
+ 128, 128, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 128, 144, 128, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 128, 144, 144, 128, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 128, 128, 128, 128, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144,
+ };
+ YYDEBUG(1, *YYCURSOR);
+ YYFILL(5);
+ yych = *YYCURSOR;
+ YYDEBUG(-1, yych);
+ switch (yych) {
+ case '\t': goto yy5;
+ case '\n': goto yy7;
+ case '\r': goto yy9;
+ case ' ': goto yy10;
+ case '!':
+ case '"':
+ case '$':
+ case '&':
+ case '(':
+ case ')':
+ case '^':
+ case '{':
+ case '|':
+ case '}':
+ case '~': goto yy11;
+ case '#': goto yy13;
+ case '%':
+ case '\'':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case ':':
+ case '<':
+ case '>':
+ case '?':
+ case '@':
+ case ']': goto yy14;
+ case ';': goto yy15;
+ case '=': goto yy17;
+ case 'F':
+ case 'f': goto yy19;
+ case 'N':
+ case 'n': goto yy20;
+ case 'O':
+ case 'o': goto yy21;
+ case 'T':
+ case 't': goto yy22;
+ case 'Y':
+ case 'y': goto yy23;
+ case '[': goto yy24;
+ default: goto yy3;
+ }
+yy3:
+ YYDEBUG(3, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy27;
+yy4:
+ YYDEBUG(4, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 480 "Zend/zend_ini_scanner.l"
+ { /* Get option name */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+
+ /* Eat trailing whitespace */
+ EAT_TRAILING_WHITESPACE();
+
+ RETURN_TOKEN(TC_LABEL, yytext, yyleng);
+}
+#line 522 "Zend/zend_ini_scanner.c"
+yy5:
+ YYDEBUG(5, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy74;
+yy6:
+ YYDEBUG(6, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 626 "Zend/zend_ini_scanner.l"
+ {
+ /* eat whitespace */
+ goto restart;
+}
+#line 536 "Zend/zend_ini_scanner.c"
+yy7:
+ YYDEBUG(7, *YYCURSOR);
+ ++YYCURSOR;
+yy8:
+ YYDEBUG(8, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 631 "Zend/zend_ini_scanner.l"
+ {
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 548 "Zend/zend_ini_scanner.c"
+yy9:
+ YYDEBUG(9, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy77;
+ goto yy8;
+yy10:
+ YYDEBUG(10, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy27;
+ if (yych <= '\t') goto yy73;
+ goto yy77;
+ } else {
+ if (yych == '\r') goto yy78;
+ if (yych <= 0x1F) goto yy27;
+ goto yy75;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych == '#') goto yy64;
+ goto yy27;
+ } else {
+ if (yych <= ';') goto yy59;
+ if (yych == '=') goto yy57;
+ goto yy27;
+ }
+ }
+yy11:
+ YYDEBUG(11, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(12, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 554 "Zend/zend_ini_scanner.l"
+ { /* Disallow these chars outside option values */
+ return yytext[0];
+}
+#line 587 "Zend/zend_ini_scanner.c"
+yy13:
+ YYDEBUG(13, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy65;
+yy14:
+ YYDEBUG(14, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy27;
+yy15:
+ YYDEBUG(15, *YYCURSOR);
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy60;
+ YYDEBUG(16, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 654 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+}
+#line 608 "Zend/zend_ini_scanner.c"
+yy17:
+ YYDEBUG(17, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy58;
+yy18:
+ YYDEBUG(18, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 490 "Zend/zend_ini_scanner.l"
+ { /* Start option value */
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
+ yy_push_state(ST_RAW TSRMLS_CC);
+ } else {
+ yy_push_state(ST_VALUE TSRMLS_CC);
+ }
+ return '=';
+}
+#line 626 "Zend/zend_ini_scanner.c"
+yy19:
+ YYDEBUG(19, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'A') goto yy54;
+ if (yych == 'a') goto yy54;
+ goto yy27;
+yy20:
+ YYDEBUG(20, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= 'U') {
+ if (yych == 'O') goto yy45;
+ if (yych <= 'T') goto yy27;
+ goto yy46;
+ } else {
+ if (yych <= 'o') {
+ if (yych <= 'n') goto yy27;
+ goto yy45;
+ } else {
+ if (yych == 'u') goto yy46;
+ goto yy27;
+ }
+ }
+yy21:
+ YYDEBUG(21, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= 'N') {
+ if (yych == 'F') goto yy39;
+ if (yych <= 'M') goto yy27;
+ goto yy32;
+ } else {
+ if (yych <= 'f') {
+ if (yych <= 'e') goto yy27;
+ goto yy39;
+ } else {
+ if (yych == 'n') goto yy32;
+ goto yy27;
+ }
+ }
+yy22:
+ YYDEBUG(22, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'R') goto yy37;
+ if (yych == 'r') goto yy37;
+ goto yy27;
+yy23:
+ YYDEBUG(23, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy28;
+ if (yych == 'e') goto yy28;
+ goto yy27;
+yy24:
+ YYDEBUG(24, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(25, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 405 "Zend/zend_ini_scanner.l"
+ { /* Section start */
+ /* Enter section data lookup state */
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
+ yy_push_state(ST_SECTION_RAW TSRMLS_CC);
+ } else {
+ yy_push_state(ST_SECTION_VALUE TSRMLS_CC);
+ }
+ return TC_SECTION;
+}
+#line 692 "Zend/zend_ini_scanner.c"
+yy26:
+ YYDEBUG(26, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy27:
+ YYDEBUG(27, *YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy26;
+ }
+ if (yych == '[') goto yy29;
+ goto yy4;
+yy28:
+ YYDEBUG(28, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'S') goto yy32;
+ if (yych == 's') goto yy32;
+ goto yy27;
+yy29:
+ YYDEBUG(29, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(30, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy29;
+ }
+ YYDEBUG(31, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 430 "Zend/zend_ini_scanner.l"
+ { /* Start of option with offset */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+
+ /* Eat trailing whitespace and [ */
+ EAT_TRAILING_WHITESPACE_EX('[');
+
+ /* Enter offset lookup state */
+ yy_push_state(ST_OFFSET TSRMLS_CC);
+
+ RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
+}
+#line 735 "Zend/zend_ini_scanner.c"
+yy32:
+ YYDEBUG(32, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(33, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy32;
+ }
+ if (yych <= '\'') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy26;
+ if (yych <= '\t') goto yy35;
+ } else {
+ if (yych != '\r') goto yy26;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych == '#') goto yy26;
+ } else {
+ if (yych != '&') goto yy26;
+ }
+ }
+ } else {
+ if (yych <= 'Z') {
+ if (yych <= ';') {
+ if (yych <= ')') goto yy34;
+ if (yych <= ':') goto yy26;
+ } else {
+ if (yych != '=') goto yy26;
+ }
+ } else {
+ if (yych <= '^') {
+ if (yych <= '[') goto yy29;
+ if (yych <= ']') goto yy26;
+ } else {
+ if (yych <= 'z') goto yy26;
+ if (yych >= 0x7F) goto yy26;
+ }
+ }
+ }
+yy34:
+ YYDEBUG(34, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 468 "Zend/zend_ini_scanner.l"
+ { /* TRUE value (when used outside option value/offset this causes parse error!) */
+ RETURN_TOKEN(BOOL_TRUE, "1", 1);
+}
+#line 785 "Zend/zend_ini_scanner.c"
+yy35:
+ YYDEBUG(35, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(36, *YYCURSOR);
+ if (yych == '\t') goto yy35;
+ if (yych == ' ') goto yy35;
+ goto yy34;
+yy37:
+ YYDEBUG(37, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'U') goto yy38;
+ if (yych != 'u') goto yy27;
+yy38:
+ YYDEBUG(38, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy32;
+ if (yych == 'e') goto yy32;
+ goto yy27;
+yy39:
+ YYDEBUG(39, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'F') goto yy40;
+ if (yych != 'f') goto yy27;
+yy40:
+ YYDEBUG(40, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(41, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy26;
+ if (yych <= '\t') goto yy43;
+ } else {
+ if (yych != '\r') goto yy26;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy40;
+ if (yych >= '#') goto yy26;
+ } else {
+ if (yych == '%') goto yy26;
+ }
+ }
+ } else {
+ if (yych <= '=') {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy26;
+ if (yych >= '*') goto yy26;
+ } else {
+ if (yych == '<') goto yy26;
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych == '[') goto yy29;
+ goto yy26;
+ } else {
+ if (yych <= '^') goto yy42;
+ if (yych <= 'z') goto yy26;
+ if (yych >= 0x7F) goto yy26;
+ }
+ }
+ }
+yy42:
+ YYDEBUG(42, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 472 "Zend/zend_ini_scanner.l"
+ { /* FALSE value (when used outside option value/offset this causes parse error!)*/
+ RETURN_TOKEN(BOOL_FALSE, "", 0);
+}
+#line 859 "Zend/zend_ini_scanner.c"
+yy43:
+ YYDEBUG(43, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(44, *YYCURSOR);
+ if (yych == '\t') goto yy43;
+ if (yych == ' ') goto yy43;
+ goto yy42;
+yy45:
+ YYDEBUG(45, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\'') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy27;
+ if (yych <= '\t') goto yy43;
+ goto yy42;
+ } else {
+ if (yych == '\r') goto yy42;
+ goto yy27;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy40;
+ if (yych <= '"') goto yy42;
+ goto yy27;
+ } else {
+ if (yych == '%') goto yy27;
+ if (yych <= '&') goto yy42;
+ goto yy27;
+ }
+ }
+ } else {
+ if (yych <= 'N') {
+ if (yych <= ';') {
+ if (yych <= ')') goto yy42;
+ if (yych <= ':') goto yy27;
+ goto yy42;
+ } else {
+ if (yych == '=') goto yy42;
+ if (yych <= 'M') goto yy27;
+ goto yy53;
+ }
+ } else {
+ if (yych <= 'm') {
+ if (yych == '^') goto yy42;
+ goto yy27;
+ } else {
+ if (yych <= 'n') goto yy53;
+ if (yych <= 'z') goto yy27;
+ if (yych <= '~') goto yy42;
+ goto yy27;
+ }
+ }
+ }
+yy46:
+ YYDEBUG(46, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy47;
+ if (yych != 'l') goto yy27;
+yy47:
+ YYDEBUG(47, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy48;
+ if (yych != 'l') goto yy27;
+yy48:
+ YYDEBUG(48, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(49, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy26;
+ if (yych <= '\t') goto yy51;
+ } else {
+ if (yych != '\r') goto yy26;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy48;
+ if (yych >= '#') goto yy26;
+ } else {
+ if (yych == '%') goto yy26;
+ }
+ }
+ } else {
+ if (yych <= '=') {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy26;
+ if (yych >= '*') goto yy26;
+ } else {
+ if (yych == '<') goto yy26;
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych == '[') goto yy29;
+ goto yy26;
+ } else {
+ if (yych <= '^') goto yy50;
+ if (yych <= 'z') goto yy26;
+ if (yych >= 0x7F) goto yy26;
+ }
+ }
+ }
+yy50:
+ YYDEBUG(50, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 476 "Zend/zend_ini_scanner.l"
+ {
+ RETURN_TOKEN(NULL_NULL, "", 0);
+}
+#line 974 "Zend/zend_ini_scanner.c"
+yy51:
+ YYDEBUG(51, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(52, *YYCURSOR);
+ if (yych == '\t') goto yy51;
+ if (yych == ' ') goto yy51;
+ goto yy50;
+yy53:
+ YYDEBUG(53, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy40;
+ if (yych == 'e') goto yy40;
+ goto yy27;
+yy54:
+ YYDEBUG(54, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy55;
+ if (yych != 'l') goto yy27;
+yy55:
+ YYDEBUG(55, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'S') goto yy56;
+ if (yych != 's') goto yy27;
+yy56:
+ YYDEBUG(56, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy40;
+ if (yych == 'e') goto yy40;
+ goto yy27;
+yy57:
+ YYDEBUG(57, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy58:
+ YYDEBUG(58, *YYCURSOR);
+ if (yych == '\t') goto yy57;
+ if (yych == ' ') goto yy57;
+ goto yy18;
+yy59:
+ YYDEBUG(59, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy60:
+ YYDEBUG(60, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy59;
+ }
+ if (yych >= '\r') goto yy63;
+yy61:
+ YYDEBUG(61, *YYCURSOR);
+ ++YYCURSOR;
+yy62:
+ YYDEBUG(62, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 636 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 1039 "Zend/zend_ini_scanner.c"
+yy63:
+ YYDEBUG(63, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy61;
+ goto yy62;
+yy64:
+ YYDEBUG(64, *YYCURSOR);
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy65:
+ YYDEBUG(65, *YYCURSOR);
+ if (yych <= '\'') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy64;
+ if (yych >= '\n') goto yy70;
+ } else {
+ if (yych == '\r') goto yy72;
+ goto yy64;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych == '#') goto yy64;
+ } else {
+ if (yych != '&') goto yy64;
+ }
+ }
+ } else {
+ if (yych <= 'Z') {
+ if (yych <= ';') {
+ if (yych <= ')') goto yy66;
+ if (yych <= ':') goto yy64;
+ } else {
+ if (yych != '=') goto yy64;
+ }
+ } else {
+ if (yych <= '^') {
+ if (yych <= '[') goto yy68;
+ if (yych <= ']') goto yy64;
+ } else {
+ if (yych <= 'z') goto yy64;
+ if (yych >= 0x7F) goto yy64;
+ }
+ }
+ }
+yy66:
+ YYDEBUG(66, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+ YYDEBUG(67, *YYCURSOR);
+ if (yych == '\n') goto yy70;
+ if (yych == '\r') goto yy72;
+ goto yy66;
+yy68:
+ YYDEBUG(68, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+ YYDEBUG(69, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy66;
+ if (yych <= '\t') goto yy68;
+ if (yych >= '\v') goto yy66;
+ } else {
+ if (yych <= '\r') goto yy72;
+ if (yych == ' ') goto yy68;
+ goto yy66;
+ }
+yy70:
+ YYDEBUG(70, *YYCURSOR);
+ ++YYCURSOR;
+yy71:
+ YYDEBUG(71, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 642 "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 1125 "Zend/zend_ini_scanner.c"
+yy72:
+ YYDEBUG(72, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy70;
+ goto yy71;
+yy73:
+ YYDEBUG(73, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy74:
+ YYDEBUG(74, *YYCURSOR);
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy6;
+ if (yych <= '\t') goto yy73;
+ goto yy77;
+ } else {
+ if (yych == '\r') goto yy78;
+ if (yych <= 0x1F) goto yy6;
+ goto yy73;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych == '#') goto yy66;
+ goto yy6;
+ } else {
+ if (yych <= ';') goto yy59;
+ if (yych == '=') goto yy57;
+ goto yy6;
+ }
+ }
+yy75:
+ YYDEBUG(75, *YYCURSOR);
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+ YYDEBUG(76, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy26;
+ if (yych <= '\t') goto yy73;
+ } else {
+ if (yych == '\r') goto yy78;
+ goto yy26;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy75;
+ if (yych <= '"') goto yy4;
+ goto yy64;
+ } else {
+ if (yych == '%') goto yy26;
+ goto yy4;
+ }
+ }
+ } else {
+ if (yych <= '=') {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy26;
+ if (yych <= ')') goto yy4;
+ goto yy26;
+ } else {
+ if (yych <= ';') goto yy59;
+ if (yych <= '<') goto yy26;
+ goto yy57;
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych == '[') goto yy29;
+ goto yy26;
+ } else {
+ if (yych <= '^') goto yy4;
+ if (yych <= 'z') goto yy26;
+ if (yych <= '~') goto yy4;
+ goto yy26;
+ }
+ }
+ }
+yy77:
+ YYDEBUG(77, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy8;
+yy78:
+ YYDEBUG(78, *YYCURSOR);
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == '\n') goto yy77;
+ goto yy8;
+ }
+/* *********************************** */
+yyc_ST_DOUBLE_QUOTES:
+ {
+ static const unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+ YYDEBUG(79, *YYCURSOR);
+ YYFILL(2);
+ yych = *YYCURSOR;
+ if (yych == '"') goto yy83;
+ if (yych == '$') goto yy85;
+ YYDEBUG(81, *YYCURSOR);
+ ++YYCURSOR;
+yy82:
+ YYDEBUG(82, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 586 "Zend/zend_ini_scanner.l"
+ { /* Escape double quoted string contents */
+ if (YYCURSOR > YYLIMIT) {
+ return 0;
+ }
+
+ while (YYCURSOR < YYLIMIT) {
+ switch (*YYCURSOR++) {
+ case '"':
+ if (YYCURSOR < YYLIMIT && YYCURSOR[-2] == '\\' && *YYCURSOR != '\r' && *YYCURSOR != '\n') {
+ continue;
+ }
+ break;
+ case '$':
+ if (*YYCURSOR == '{') {
+ break;
+ }
+ continue;
+ case '\\':
+ if (YYCURSOR < YYLIMIT && *YYCURSOR != '"') {
+ YYCURSOR++;
+ }
+ /* fall through */
+ default:
+ continue;
+ }
+
+ YYCURSOR--;
+ break;
+ }
+
+ yyleng = YYCURSOR - SCNG(yy_text);
+
+ zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
+ return TC_QUOTED_STRING;
+}
+#line 1301 "Zend/zend_ini_scanner.c"
+yy83:
+ YYDEBUG(83, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy89;
+yy84:
+ YYDEBUG(84, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 581 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string ends */
+ yy_pop_state(TSRMLS_C);
+ return '"';
+}
+#line 1315 "Zend/zend_ini_scanner.c"
+yy85:
+ YYDEBUG(85, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych != '{') goto yy82;
+ YYDEBUG(86, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(87, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 448 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+}
+#line 1329 "Zend/zend_ini_scanner.c"
+yy88:
+ YYDEBUG(88, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy89:
+ YYDEBUG(89, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy88;
+ }
+ goto yy84;
+ }
+/* *********************************** */
+yyc_ST_OFFSET:
+ {
+ static const unsigned char yybm[] = {
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 194, 64, 66, 66, 64, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 194, 66, 64, 66, 68, 66, 66, 0,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 114, 114, 114, 114, 114, 114, 114, 114,
+ 114, 114, 66, 64, 66, 66, 66, 66,
+ 66, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 66, 72, 64, 66, 82,
+ 66, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ };
+ YYDEBUG(90, *YYCURSOR);
+ YYFILL(2);
+ yych = *YYCURSOR;
+ if (yych <= '-') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy92;
+ if (yych <= '\t') goto yy94;
+ goto yy95;
+ } else {
+ if (yych == '\r') goto yy95;
+ if (yych >= ' ') goto yy94;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych == '"') goto yy97;
+ if (yych >= '$') goto yy99;
+ } else {
+ if (yych == '\'') goto yy100;
+ if (yych >= '-') goto yy101;
+ }
+ }
+ } else {
+ if (yych <= 'Z') {
+ if (yych <= '9') {
+ if (yych <= '.') goto yy102;
+ if (yych >= '0') goto yy103;
+ } else {
+ if (yych == ';') goto yy95;
+ if (yych >= 'A') goto yy105;
+ }
+ } else {
+ if (yych <= '^') {
+ if (yych <= '[') goto yy92;
+ if (yych <= '\\') goto yy107;
+ if (yych <= ']') goto yy108;
+ } else {
+ if (yych == '`') goto yy92;
+ if (yych <= 'z') goto yy105;
+ }
+ }
+ }
+yy92:
+ YYDEBUG(92, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy111;
+yy93:
+ YYDEBUG(93, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 572 "Zend/zend_ini_scanner.l"
+ { /* Get rest as section/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+}
+#line 1433 "Zend/zend_ini_scanner.c"
+yy94:
+ YYDEBUG(94, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy137;
+ }
+ if (yych == '"') goto yy139;
+ if (yych == ']') goto yy140;
+ goto yy111;
+yy95:
+ YYDEBUG(95, *YYCURSOR);
+ ++YYCURSOR;
+yy96:
+ YYDEBUG(96, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 654 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+}
+#line 1454 "Zend/zend_ini_scanner.c"
+yy97:
+ YYDEBUG(97, *YYCURSOR);
+ ++YYCURSOR;
+yy98:
+ YYDEBUG(98, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 576 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+}
+#line 1466 "Zend/zend_ini_scanner.c"
+yy99:
+ YYDEBUG(99, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy96;
+ if (yych <= '[') goto yy110;
+ goto yy115;
+ } else {
+ if (yych == '{') goto yy135;
+ goto yy110;
+ }
+yy100:
+ YYDEBUG(100, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy131;
+ }
+ goto yy96;
+yy101:
+ YYDEBUG(101, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy111;
+ if (yych <= '9') goto yy129;
+ goto yy111;
+yy102:
+ YYDEBUG(102, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy111;
+ if (yych <= '9') goto yy127;
+ goto yy111;
+yy103:
+ YYDEBUG(103, *YYCURSOR);
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\'') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy104;
+ if (yych <= '\f') goto yy111;
+ } else {
+ if (yych == '"') goto yy104;
+ if (yych <= '&') goto yy111;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych == '.') goto yy123;
+ if (yych <= '/') goto yy111;
+ goto yy125;
+ } else {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy111;
+ } else {
+ if (yych != ']') goto yy111;
+ }
+ }
+ }
+yy104:
+ YYDEBUG(104, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 550 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+}
+#line 1532 "Zend/zend_ini_scanner.c"
+yy105:
+ YYDEBUG(105, *YYCURSOR);
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy121;
+ }
+ if (yych <= '"') {
+ if (yych <= '\f') {
+ if (yych != '\n') goto yy111;
+ } else {
+ if (yych <= '\r') goto yy106;
+ if (yych <= '!') goto yy111;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych != '\'') goto yy111;
+ } else {
+ if (yych <= ';') goto yy106;
+ if (yych != ']') goto yy111;
+ }
+ }
+yy106:
+ YYDEBUG(106, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 546 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+}
+#line 1562 "Zend/zend_ini_scanner.c"
+yy107:
+ YYDEBUG(107, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy110;
+yy108:
+ YYDEBUG(108, *YYCURSOR);
+ ++YYCURSOR;
+yy109:
+ YYDEBUG(109, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 443 "Zend/zend_ini_scanner.l"
+ { /* End of section or an option offset */
+ BEGIN(INITIAL);
+ return ']';
+}
+#line 1578 "Zend/zend_ini_scanner.c"
+yy110:
+ YYDEBUG(110, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy111:
+ YYDEBUG(111, *YYCURSOR);
+ if (yybm[0+yych] & 2) {
+ goto yy110;
+ }
+ if (yych == '$') goto yy113;
+ if (yych != '\\') goto yy93;
+yy112:
+ YYDEBUG(112, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy110;
+yy113:
+ YYDEBUG(113, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy114;
+ if (yych <= '[') goto yy110;
+ goto yy115;
+ } else {
+ if (yych != '{') goto yy110;
+ }
+yy114:
+ YYDEBUG(114, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ if (yyaccept <= 1) {
+ if (yyaccept == 0) {
+ goto yy93;
+ } else {
+ goto yy96;
+ }
+ } else {
+ if (yyaccept == 2) {
+ goto yy104;
+ } else {
+ goto yy106;
+ }
+ }
+yy115:
+ YYDEBUG(115, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 4) {
+ goto yy116;
+ }
+ if (yych == '\\') goto yy118;
+ goto yy110;
+yy116:
+ YYDEBUG(116, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(117, *YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy116;
+ }
+ if (yych == '\\') goto yy120;
+ goto yy110;
+yy118:
+ YYDEBUG(118, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(119, *YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy116;
+ }
+ if (yych == '\\') goto yy118;
+ goto yy110;
+yy120:
+ YYDEBUG(120, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 4) {
+ goto yy116;
+ }
+ if (yych == '\\') goto yy118;
+ goto yy110;
+yy121:
+ YYDEBUG(121, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(122, *YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy121;
+ }
+ if (yych <= '$') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy106;
+ if (yych <= '\f') goto yy110;
+ goto yy106;
+ } else {
+ if (yych == '"') goto yy106;
+ if (yych <= '#') goto yy110;
+ goto yy113;
+ }
+ } else {
+ if (yych <= ';') {
+ if (yych == '\'') goto yy106;
+ if (yych <= ':') goto yy110;
+ goto yy106;
+ } else {
+ if (yych <= '[') goto yy110;
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy106;
+ goto yy110;
+ }
+ }
+yy123:
+ YYDEBUG(123, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(124, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy123;
+ }
+ if (yych <= '$') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy104;
+ if (yych <= '\f') goto yy110;
+ goto yy104;
+ } else {
+ if (yych == '"') goto yy104;
+ if (yych <= '#') goto yy110;
+ goto yy113;
+ }
+ } else {
+ if (yych <= ';') {
+ if (yych == '\'') goto yy104;
+ if (yych <= ':') goto yy110;
+ goto yy104;
+ } else {
+ if (yych <= '[') goto yy110;
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy104;
+ goto yy110;
+ }
+ }
+yy125:
+ YYDEBUG(125, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(126, *YYCURSOR);
+ if (yych <= '\'') {
+ if (yych <= '!') {
+ if (yych <= '\n') {
+ if (yych <= '\t') goto yy110;
+ goto yy104;
+ } else {
+ if (yych == '\r') goto yy104;
+ goto yy110;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= '"') goto yy104;
+ goto yy110;
+ } else {
+ if (yych <= '$') goto yy113;
+ if (yych <= '&') goto yy110;
+ goto yy104;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '.') {
+ if (yych <= '-') goto yy110;
+ goto yy123;
+ } else {
+ if (yych <= '/') goto yy110;
+ if (yych <= '9') goto yy125;
+ goto yy110;
+ }
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy104;
+ goto yy110;
+ } else {
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy104;
+ goto yy110;
+ }
+ }
+ }
+yy127:
+ YYDEBUG(127, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(128, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy104;
+ if (yych <= '\f') goto yy110;
+ goto yy104;
+ } else {
+ if (yych <= '"') {
+ if (yych <= '!') goto yy110;
+ goto yy104;
+ } else {
+ if (yych == '$') goto yy113;
+ goto yy110;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy104;
+ if (yych <= '/') goto yy110;
+ if (yych <= '9') goto yy127;
+ goto yy110;
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy104;
+ goto yy110;
+ } else {
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy104;
+ goto yy110;
+ }
+ }
+ }
+yy129:
+ YYDEBUG(129, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(130, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy104;
+ if (yych <= '\f') goto yy110;
+ goto yy104;
+ } else {
+ if (yych <= '"') {
+ if (yych <= '!') goto yy110;
+ goto yy104;
+ } else {
+ if (yych == '$') goto yy113;
+ goto yy110;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy104;
+ if (yych <= '/') goto yy110;
+ if (yych <= '9') goto yy129;
+ goto yy110;
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy104;
+ goto yy110;
+ } else {
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy104;
+ goto yy110;
+ }
+ }
+ }
+yy131:
+ YYDEBUG(131, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(132, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy131;
+ }
+ YYDEBUG(133, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(134, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 415 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+ SCNG(yy_text)++;
+ yyleng = yyleng - 2;
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 1877 "Zend/zend_ini_scanner.c"
+yy135:
+ YYDEBUG(135, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(136, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 448 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+}
+#line 1888 "Zend/zend_ini_scanner.c"
+yy137:
+ YYDEBUG(137, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(138, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy137;
+ }
+ if (yych <= '$') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy93;
+ if (yych <= '\f') goto yy110;
+ goto yy93;
+ } else {
+ if (yych == '"') goto yy139;
+ if (yych <= '#') goto yy110;
+ goto yy113;
+ }
+ } else {
+ if (yych <= ';') {
+ if (yych == '\'') goto yy93;
+ if (yych <= ':') goto yy110;
+ goto yy93;
+ } else {
+ if (yych <= '[') goto yy110;
+ if (yych <= '\\') goto yy112;
+ if (yych <= ']') goto yy140;
+ goto yy110;
+ }
+ }
+yy139:
+ YYDEBUG(139, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy98;
+yy140:
+ YYDEBUG(140, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy109;
+ }
+/* *********************************** */
+yyc_ST_RAW:
+ {
+ static const unsigned char yybm[] = {
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 192, 0, 64, 64, 0, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 192, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ };
+ YYDEBUG(141, *YYCURSOR);
+ YYFILL(3);
+ yych = *YYCURSOR;
+ if (yych <= '\f') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy145;
+ } else {
+ if (yych <= '\t') goto yy147;
+ if (yych <= '\n') goto yy148;
+ goto yy145;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= '\r') goto yy150;
+ if (yych <= 0x1F) goto yy145;
+ goto yy147;
+ } else {
+ if (yych == ';') goto yy151;
+ goto yy145;
+ }
+ }
+ YYDEBUG(143, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(144, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 649 "Zend/zend_ini_scanner.l"
+ { /* End of option value (if EOF is reached before EOL */
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+}
+#line 1998 "Zend/zend_ini_scanner.c"
+yy145:
+ YYDEBUG(145, *YYCURSOR);
+ ++YYCURSOR;
+yy146:
+ YYDEBUG(146, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 499 "Zend/zend_ini_scanner.l"
+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
+ char *sc = NULL;
+ while (YYCURSOR < YYLIMIT) {
+ switch (*YYCURSOR) {
+ case '\n':
+ case '\r':
+ goto end_raw_value_chars;
+ break;
+ case ';':
+ if (sc == NULL) {
+ sc = YYCURSOR;
+ }
+ /* no break */
+ default:
+ YYCURSOR++;
+ break;
+ }
+ }
+end_raw_value_chars:
+ yyleng = YYCURSOR - SCNG(yy_text);
+
+ /* Eat trailing semicolons */
+ while (yytext[yyleng - 1] == ';') {
+ yyleng--;
+ }
+
+ /* Eat leading and trailing double quotes */
+ if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
+ SCNG(yy_text)++;
+ yyleng = yyleng - 2;
+ } else if (sc) {
+ YYCURSOR = sc;
+ yyleng = YYCURSOR - SCNG(yy_text);
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 2042 "Zend/zend_ini_scanner.c"
+yy147:
+ YYDEBUG(147, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) goto yy146;
+ if (yych <= '\n') goto yy159;
+ if (yych <= '\f') goto yy146;
+ goto yy159;
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy146;
+ goto yy159;
+ } else {
+ if (yych == ';') goto yy159;
+ goto yy146;
+ }
+ }
+yy148:
+ YYDEBUG(148, *YYCURSOR);
+ ++YYCURSOR;
+yy149:
+ YYDEBUG(149, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 540 "Zend/zend_ini_scanner.l"
+ { /* End of option value */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 2073 "Zend/zend_ini_scanner.c"
+yy150:
+ YYDEBUG(150, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy157;
+ goto yy149;
+yy151:
+ YYDEBUG(151, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy153;
+yy152:
+ YYDEBUG(152, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy153:
+ YYDEBUG(153, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy152;
+ }
+ if (yych >= '\r') goto yy156;
+yy154:
+ YYDEBUG(154, *YYCURSOR);
+ ++YYCURSOR;
+yy155:
+ YYDEBUG(155, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 636 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 2107 "Zend/zend_ini_scanner.c"
+yy156:
+ YYDEBUG(156, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy154;
+ goto yy155;
+yy157:
+ YYDEBUG(157, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy149;
+yy158:
+ YYDEBUG(158, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy159:
+ YYDEBUG(159, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy158;
+ }
+ if (yych <= '\f') {
+ if (yych == '\n') goto yy157;
+ } else {
+ if (yych <= '\r') goto yy161;
+ if (yych == ';') goto yy152;
+ }
+ YYDEBUG(160, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 626 "Zend/zend_ini_scanner.l"
+ {
+ /* eat whitespace */
+ goto restart;
+}
+#line 2141 "Zend/zend_ini_scanner.c"
+yy161:
+ YYDEBUG(161, *YYCURSOR);
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == '\n') goto yy157;
+ goto yy149;
+ }
+/* *********************************** */
+yyc_ST_SECTION_RAW:
+ {
+ static const unsigned char yybm[] = {
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 192, 0, 128, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 192, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ };
+ YYDEBUG(162, *YYCURSOR);
+ YYFILL(3);
+ yych = *YYCURSOR;
+ if (yych <= '\f') {
+ if (yych == '\n') goto yy166;
+ } else {
+ if (yych <= '\r') goto yy166;
+ if (yych == ']') goto yy168;
+ }
+ YYDEBUG(164, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy175;
+yy165:
+ YYDEBUG(165, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 536 "Zend/zend_ini_scanner.l"
+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 2205 "Zend/zend_ini_scanner.c"
+yy166:
+ YYDEBUG(166, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(167, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 654 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+}
+#line 2215 "Zend/zend_ini_scanner.c"
+yy168:
+ YYDEBUG(168, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy171;
+yy169:
+ YYDEBUG(169, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 424 "Zend/zend_ini_scanner.l"
+ { /* End of section */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return ']';
+}
+#line 2230 "Zend/zend_ini_scanner.c"
+yy170:
+ YYDEBUG(170, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy171:
+ YYDEBUG(171, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy170;
+ }
+ if (yych == '\n') goto yy172;
+ if (yych == '\r') goto yy173;
+ goto yy169;
+yy172:
+ YYDEBUG(172, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy169;
+yy173:
+ YYDEBUG(173, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy172;
+ goto yy169;
+yy174:
+ YYDEBUG(174, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy175:
+ YYDEBUG(175, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy174;
+ }
+ goto yy165;
+ }
+/* *********************************** */
+yyc_ST_SECTION_VALUE:
+ {
+ static const unsigned char yybm[] = {
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 134, 128, 132, 132, 128, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 134, 132, 128, 132, 136, 132, 132, 0,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 228, 228, 228, 228, 228, 228, 228, 228,
+ 228, 228, 132, 128, 132, 132, 132, 132,
+ 132, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 132, 144, 128, 132, 164,
+ 132, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132,
+ };
+ YYDEBUG(176, *YYCURSOR);
+ YYFILL(3);
+ yych = *YYCURSOR;
+ if (yych <= '-') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy178;
+ if (yych <= '\t') goto yy180;
+ goto yy181;
+ } else {
+ if (yych == '\r') goto yy181;
+ if (yych >= ' ') goto yy180;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych == '"') goto yy183;
+ if (yych >= '$') goto yy185;
+ } else {
+ if (yych == '\'') goto yy186;
+ if (yych >= '-') goto yy187;
+ }
+ }
+ } else {
+ if (yych <= 'Z') {
+ if (yych <= '9') {
+ if (yych <= '.') goto yy188;
+ if (yych >= '0') goto yy189;
+ } else {
+ if (yych == ';') goto yy181;
+ if (yych >= 'A') goto yy191;
+ }
+ } else {
+ if (yych <= '^') {
+ if (yych <= '[') goto yy178;
+ if (yych <= '\\') goto yy193;
+ if (yych <= ']') goto yy194;
+ } else {
+ if (yych == '`') goto yy178;
+ if (yych <= 'z') goto yy191;
+ }
+ }
+ }
+yy178:
+ YYDEBUG(178, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy201;
+yy179:
+ YYDEBUG(179, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 572 "Zend/zend_ini_scanner.l"
+ { /* Get rest as section/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+}
+#line 2356 "Zend/zend_ini_scanner.c"
+yy180:
+ YYDEBUG(180, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 0x1F) {
+ if (yych == '\t') goto yy227;
+ goto yy201;
+ } else {
+ if (yych <= ' ') goto yy227;
+ if (yych == '"') goto yy229;
+ goto yy201;
+ }
+yy181:
+ YYDEBUG(181, *YYCURSOR);
+ ++YYCURSOR;
+yy182:
+ YYDEBUG(182, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 654 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+}
+#line 2379 "Zend/zend_ini_scanner.c"
+yy183:
+ YYDEBUG(183, *YYCURSOR);
+ ++YYCURSOR;
+yy184:
+ YYDEBUG(184, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 576 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+}
+#line 2391 "Zend/zend_ini_scanner.c"
+yy185:
+ YYDEBUG(185, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy182;
+ if (yych <= '[') goto yy200;
+ goto yy205;
+ } else {
+ if (yych == '{') goto yy225;
+ goto yy200;
+ }
+yy186:
+ YYDEBUG(186, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy221;
+ }
+ goto yy182;
+yy187:
+ YYDEBUG(187, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy201;
+ if (yych <= '9') goto yy219;
+ goto yy201;
+yy188:
+ YYDEBUG(188, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy201;
+ if (yych <= '9') goto yy217;
+ goto yy201;
+yy189:
+ YYDEBUG(189, *YYCURSOR);
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\'') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy190;
+ if (yych <= '\f') goto yy201;
+ } else {
+ if (yych == '"') goto yy190;
+ if (yych <= '&') goto yy201;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych == '.') goto yy213;
+ if (yych <= '/') goto yy201;
+ goto yy215;
+ } else {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy201;
+ } else {
+ if (yych != ']') goto yy201;
+ }
+ }
+ }
+yy190:
+ YYDEBUG(190, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 550 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+}
+#line 2457 "Zend/zend_ini_scanner.c"
+yy191:
+ YYDEBUG(191, *YYCURSOR);
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy211;
+ }
+ if (yych <= '"') {
+ if (yych <= '\f') {
+ if (yych != '\n') goto yy201;
+ } else {
+ if (yych <= '\r') goto yy192;
+ if (yych <= '!') goto yy201;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych != '\'') goto yy201;
+ } else {
+ if (yych <= ';') goto yy192;
+ if (yych != ']') goto yy201;
+ }
+ }
+yy192:
+ YYDEBUG(192, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 546 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+}
+#line 2487 "Zend/zend_ini_scanner.c"
+yy193:
+ YYDEBUG(193, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy200;
+yy194:
+ YYDEBUG(194, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy197;
+yy195:
+ YYDEBUG(195, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 424 "Zend/zend_ini_scanner.l"
+ { /* End of section */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return ']';
+}
+#line 2506 "Zend/zend_ini_scanner.c"
+yy196:
+ YYDEBUG(196, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy197:
+ YYDEBUG(197, *YYCURSOR);
+ if (yybm[0+yych] & 2) {
+ goto yy196;
+ }
+ if (yych == '\n') goto yy198;
+ if (yych == '\r') goto yy199;
+ goto yy195;
+yy198:
+ YYDEBUG(198, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy195;
+yy199:
+ YYDEBUG(199, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy198;
+ goto yy195;
+yy200:
+ YYDEBUG(200, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy201:
+ YYDEBUG(201, *YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy200;
+ }
+ if (yych == '$') goto yy203;
+ if (yych != '\\') goto yy179;
+yy202:
+ YYDEBUG(202, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy200;
+yy203:
+ YYDEBUG(203, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy204;
+ if (yych <= '[') goto yy200;
+ goto yy205;
+ } else {
+ if (yych != '{') goto yy200;
+ }
+yy204:
+ YYDEBUG(204, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ if (yyaccept <= 1) {
+ if (yyaccept == 0) {
+ goto yy179;
+ } else {
+ goto yy182;
+ }
+ } else {
+ if (yyaccept == 2) {
+ goto yy190;
+ } else {
+ goto yy192;
+ }
+ }
+yy205:
+ YYDEBUG(205, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 8) {
+ goto yy206;
+ }
+ if (yych == '\\') goto yy208;
+ goto yy200;
+yy206:
+ YYDEBUG(206, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(207, *YYCURSOR);
+ if (yybm[0+yych] & 8) {
+ goto yy206;
+ }
+ if (yych == '\\') goto yy210;
+ goto yy200;
+yy208:
+ YYDEBUG(208, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(209, *YYCURSOR);
+ if (yybm[0+yych] & 8) {
+ goto yy206;
+ }
+ if (yych == '\\') goto yy208;
+ goto yy200;
+yy210:
+ YYDEBUG(210, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 8) {
+ goto yy206;
+ }
+ if (yych == '\\') goto yy208;
+ goto yy200;
+yy211:
+ YYDEBUG(211, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(212, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy211;
+ }
+ if (yych <= '$') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy192;
+ if (yych <= '\f') goto yy200;
+ goto yy192;
+ } else {
+ if (yych == '"') goto yy192;
+ if (yych <= '#') goto yy200;
+ goto yy203;
+ }
+ } else {
+ if (yych <= ';') {
+ if (yych == '\'') goto yy192;
+ if (yych <= ':') goto yy200;
+ goto yy192;
+ } else {
+ if (yych <= '[') goto yy200;
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy192;
+ goto yy200;
+ }
+ }
+yy213:
+ YYDEBUG(213, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(214, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy213;
+ }
+ if (yych <= '$') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy190;
+ if (yych <= '\f') goto yy200;
+ goto yy190;
+ } else {
+ if (yych == '"') goto yy190;
+ if (yych <= '#') goto yy200;
+ goto yy203;
+ }
+ } else {
+ if (yych <= ';') {
+ if (yych == '\'') goto yy190;
+ if (yych <= ':') goto yy200;
+ goto yy190;
+ } else {
+ if (yych <= '[') goto yy200;
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy190;
+ goto yy200;
+ }
+ }
+yy215:
+ YYDEBUG(215, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(216, *YYCURSOR);
+ if (yych <= '\'') {
+ if (yych <= '!') {
+ if (yych <= '\n') {
+ if (yych <= '\t') goto yy200;
+ goto yy190;
+ } else {
+ if (yych == '\r') goto yy190;
+ goto yy200;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= '"') goto yy190;
+ goto yy200;
+ } else {
+ if (yych <= '$') goto yy203;
+ if (yych <= '&') goto yy200;
+ goto yy190;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '.') {
+ if (yych <= '-') goto yy200;
+ goto yy213;
+ } else {
+ if (yych <= '/') goto yy200;
+ if (yych <= '9') goto yy215;
+ goto yy200;
+ }
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy190;
+ goto yy200;
+ } else {
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy190;
+ goto yy200;
+ }
+ }
+ }
+yy217:
+ YYDEBUG(217, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(218, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy190;
+ if (yych <= '\f') goto yy200;
+ goto yy190;
+ } else {
+ if (yych <= '"') {
+ if (yych <= '!') goto yy200;
+ goto yy190;
+ } else {
+ if (yych == '$') goto yy203;
+ goto yy200;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy190;
+ if (yych <= '/') goto yy200;
+ if (yych <= '9') goto yy217;
+ goto yy200;
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy190;
+ goto yy200;
+ } else {
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy190;
+ goto yy200;
+ }
+ }
+ }
+yy219:
+ YYDEBUG(219, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(220, *YYCURSOR);
+ if (yych <= '&') {
+ if (yych <= '\r') {
+ if (yych == '\n') goto yy190;
+ if (yych <= '\f') goto yy200;
+ goto yy190;
+ } else {
+ if (yych <= '"') {
+ if (yych <= '!') goto yy200;
+ goto yy190;
+ } else {
+ if (yych == '$') goto yy203;
+ goto yy200;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '\'') goto yy190;
+ if (yych <= '/') goto yy200;
+ if (yych <= '9') goto yy219;
+ goto yy200;
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy190;
+ goto yy200;
+ } else {
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy190;
+ goto yy200;
+ }
+ }
+ }
+yy221:
+ YYDEBUG(221, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(222, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy221;
+ }
+ YYDEBUG(223, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(224, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 415 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+ SCNG(yy_text)++;
+ yyleng = yyleng - 2;
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 2827 "Zend/zend_ini_scanner.c"
+yy225:
+ YYDEBUG(225, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(226, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 448 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+}
+#line 2838 "Zend/zend_ini_scanner.c"
+yy227:
+ YYDEBUG(227, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(228, *YYCURSOR);
+ if (yych <= '"') {
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy200;
+ if (yych <= '\t') goto yy227;
+ if (yych <= '\n') goto yy179;
+ goto yy200;
+ } else {
+ if (yych <= 0x1F) {
+ if (yych <= '\r') goto yy179;
+ goto yy200;
+ } else {
+ if (yych <= ' ') goto yy227;
+ if (yych <= '!') goto yy200;
+ }
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= '$') {
+ if (yych <= '#') goto yy200;
+ goto yy203;
+ } else {
+ if (yych == '\'') goto yy179;
+ goto yy200;
+ }
+ } else {
+ if (yych <= '[') {
+ if (yych <= ';') goto yy179;
+ goto yy200;
+ } else {
+ if (yych <= '\\') goto yy202;
+ if (yych <= ']') goto yy179;
+ goto yy200;
+ }
+ }
+ }
+yy229:
+ YYDEBUG(229, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy184;
+ }
+/* *********************************** */
+yyc_ST_VALUE:
+ {
+ static const unsigned char yybm[] = {
+ 160, 162, 162, 162, 162, 162, 162, 162,
+ 162, 176, 128, 162, 162, 128, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 176, 160, 160, 162, 168, 162, 160, 32,
+ 160, 160, 162, 162, 162, 162, 162, 162,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 162, 160, 162, 160, 162, 162,
+ 162, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 162, 162, 162, 160, 166,
+ 162, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166,
+ 166, 166, 166, 162, 160, 162, 160, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162,
+ };
+ YYDEBUG(230, *YYCURSOR);
+ YYFILL(6);
+ yych = *YYCURSOR;
+ YYDEBUG(-1, yych);
+ switch (yych) {
+ case 0x00: goto yy232;
+ case '\t':
+ case ' ': goto yy236;
+ case '\n': goto yy238;
+ case '\r': goto yy240;
+ case '!':
+ case '&':
+ case '(':
+ case ')':
+ case '^':
+ case '|':
+ case '~': goto yy241;
+ case '"': goto yy243;
+ case '$': goto yy245;
+ case '\'': goto yy246;
+ case '-': goto yy247;
+ case '.': goto yy248;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy249;
+ case ';': goto yy251;
+ case '=': goto yy252;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'z': goto yy254;
+ case 'F':
+ case 'f': goto yy256;
+ case 'N':
+ case 'n': goto yy257;
+ case 'O':
+ case 'o': goto yy258;
+ case 'T':
+ case 't': goto yy259;
+ case 'Y':
+ case 'y': goto yy260;
+ default: goto yy234;
+ }
+yy232:
+ YYDEBUG(232, *YYCURSOR);
+ ++YYCURSOR;
+yy233:
+ YYDEBUG(233, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 649 "Zend/zend_ini_scanner.l"
+ { /* End of option value (if EOF is reached before EOL */
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+}
+#line 3024 "Zend/zend_ini_scanner.c"
+yy234:
+ YYDEBUG(234, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy262;
+yy235:
+ YYDEBUG(235, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 568 "Zend/zend_ini_scanner.l"
+ { /* Get everything else as option/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+}
+#line 3037 "Zend/zend_ini_scanner.c"
+yy236:
+ YYDEBUG(236, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy316;
+yy237:
+ YYDEBUG(237, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 622 "Zend/zend_ini_scanner.l"
+ {
+ RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
+}
+#line 3050 "Zend/zend_ini_scanner.c"
+yy238:
+ YYDEBUG(238, *YYCURSOR);
+ ++YYCURSOR;
+yy239:
+ YYDEBUG(239, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 540 "Zend/zend_ini_scanner.l"
+ { /* End of option value */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 3063 "Zend/zend_ini_scanner.c"
+yy240:
+ YYDEBUG(240, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy314;
+ goto yy239;
+yy241:
+ YYDEBUG(241, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy313;
+yy242:
+ YYDEBUG(242, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 558 "Zend/zend_ini_scanner.l"
+ { /* Boolean operators */
+ return yytext[0];
+}
+#line 3081 "Zend/zend_ini_scanner.c"
+yy243:
+ YYDEBUG(243, *YYCURSOR);
+ ++YYCURSOR;
+yy244:
+ YYDEBUG(244, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 576 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+}
+#line 3093 "Zend/zend_ini_scanner.c"
+yy245:
+ YYDEBUG(245, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy233;
+ if (yych <= '[') goto yy261;
+ goto yy268;
+ } else {
+ if (yych == '{') goto yy310;
+ goto yy261;
+ }
+yy246:
+ YYDEBUG(246, *YYCURSOR);
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy306;
+ }
+ goto yy233;
+yy247:
+ YYDEBUG(247, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy262;
+ if (yych <= '9') goto yy304;
+ goto yy262;
+yy248:
+ YYDEBUG(248, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy262;
+ if (yych <= '9') goto yy302;
+ goto yy262;
+yy249:
+ YYDEBUG(249, *YYCURSOR);
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy250;
+ if (yych <= 0x08) goto yy262;
+ } else {
+ if (yych != '\r') goto yy262;
+ }
+ } else {
+ if (yych <= ')') {
+ if (yych <= '"') goto yy250;
+ if (yych <= '%') goto yy262;
+ } else {
+ if (yych == '.') goto yy298;
+ goto yy262;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= '9') goto yy300;
+ if (yych <= ':') goto yy262;
+ } else {
+ if (yych != '=') goto yy262;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy250;
+ if (yych <= '{') goto yy262;
+ } else {
+ if (yych != '~') goto yy262;
+ }
+ }
+ }
+yy250:
+ YYDEBUG(250, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 550 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+}
+#line 3172 "Zend/zend_ini_scanner.c"
+yy251:
+ YYDEBUG(251, *YYCURSOR);
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy294;
+yy252:
+ YYDEBUG(252, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(253, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 562 "Zend/zend_ini_scanner.l"
+ { /* Make = used in option value to trigger error */
+ yyless(0);
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+}
+#line 3189 "Zend/zend_ini_scanner.c"
+yy254:
+ YYDEBUG(254, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy263;
+ }
+ if (yych <= ':') {
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy262;
+ } else {
+ if (yych <= '\n') goto yy255;
+ if (yych <= '\f') goto yy262;
+ }
+ } else {
+ if (yych <= '"') {
+ if (yych <= 0x1F) goto yy262;
+ } else {
+ if (yych <= '%') goto yy262;
+ if (yych >= '*') goto yy262;
+ }
+ }
+ } else {
+ if (yych <= '^') {
+ if (yych <= '<') {
+ if (yych >= '<') goto yy262;
+ } else {
+ if (yych <= '=') goto yy255;
+ if (yych <= ']') goto yy262;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '{') goto yy262;
+ } else {
+ if (yych != '~') goto yy262;
+ }
+ }
+ }
+yy255:
+ YYDEBUG(255, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 546 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+}
+#line 3236 "Zend/zend_ini_scanner.c"
+yy256:
+ YYDEBUG(256, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '<') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ goto yy262;
+ } else {
+ if (yych <= '9') goto yy263;
+ if (yych == ';') goto yy255;
+ goto yy262;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= 'A') {
+ if (yych <= '=') goto yy255;
+ if (yych <= '@') goto yy262;
+ goto yy290;
+ } else {
+ if (yych <= 'Z') goto yy263;
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ goto yy263;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= '`') goto yy262;
+ if (yych <= 'a') goto yy290;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy257:
+ YYDEBUG(257, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 'N') {
+ if (yych <= '%') {
+ if (yych <= '\f') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ if (yych <= '\n') goto yy255;
+ goto yy262;
+ } else {
+ if (yych <= '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ if (yych <= '"') goto yy255;
+ goto yy262;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ if (yych <= '9') goto yy263;
+ goto yy262;
+ } else {
+ if (yych <= '<') {
+ if (yych <= ';') goto yy255;
+ goto yy262;
+ } else {
+ if (yych <= '=') goto yy255;
+ if (yych <= '@') goto yy262;
+ goto yy263;
+ }
+ }
+ }
+ } else {
+ if (yych <= 'n') {
+ if (yych <= 'Z') {
+ if (yych <= 'O') goto yy282;
+ if (yych == 'U') goto yy283;
+ goto yy263;
+ } else {
+ if (yych <= '^') {
+ if (yych <= ']') goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '`') goto yy262;
+ goto yy263;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= 'o') goto yy282;
+ if (yych == 'u') goto yy283;
+ goto yy263;
+ } else {
+ if (yych <= '|') {
+ if (yych <= '{') goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+ }
+yy258:
+ YYDEBUG(258, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 'E') {
+ if (yych <= '%') {
+ if (yych <= '\f') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ if (yych <= '\n') goto yy255;
+ goto yy262;
+ } else {
+ if (yych <= '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ if (yych <= '"') goto yy255;
+ goto yy262;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ if (yych <= '9') goto yy263;
+ goto yy262;
+ } else {
+ if (yych <= '<') {
+ if (yych <= ';') goto yy255;
+ goto yy262;
+ } else {
+ if (yych <= '=') goto yy255;
+ if (yych <= '@') goto yy262;
+ goto yy263;
+ }
+ }
+ }
+ } else {
+ if (yych <= 'e') {
+ if (yych <= 'Z') {
+ if (yych <= 'F') goto yy277;
+ if (yych == 'N') goto yy271;
+ goto yy263;
+ } else {
+ if (yych <= '^') {
+ if (yych <= ']') goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '`') goto yy262;
+ goto yy263;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= 'f') goto yy277;
+ if (yych == 'n') goto yy271;
+ goto yy263;
+ } else {
+ if (yych <= '|') {
+ if (yych <= '{') goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+ }
+yy259:
+ YYDEBUG(259, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'R') goto yy275;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'r') goto yy275;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy260:
+ YYDEBUG(260, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'E') goto yy265;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'e') goto yy265;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy261:
+ YYDEBUG(261, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy262:
+ YYDEBUG(262, *YYCURSOR);
+ if (yybm[0+yych] & 2) {
+ goto yy261;
+ }
+ if (yych == '$') goto yy266;
+ goto yy235;
+yy263:
+ YYDEBUG(263, *YYCURSOR);
+ yyaccept = 4;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(264, *YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy263;
+ }
+ if (yych <= ')') {
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych <= 0x00) goto yy255;
+ goto yy261;
+ } else {
+ if (yych <= '\n') goto yy255;
+ if (yych <= '\f') goto yy261;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= 0x1F) goto yy261;
+ if (yych <= '"') goto yy255;
+ goto yy261;
+ } else {
+ if (yych <= '$') goto yy266;
+ if (yych <= '%') goto yy261;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy261;
+ goto yy255;
+ } else {
+ if (yych == '=') goto yy255;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy255;
+ if (yych <= '{') goto yy261;
+ goto yy255;
+ } else {
+ if (yych == '~') goto yy255;
+ goto yy261;
+ }
+ }
+ }
+yy265:
+ YYDEBUG(265, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'S') goto yy271;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 's') goto yy271;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy266:
+ YYDEBUG(266, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yych <= '\\') {
+ if (yych <= 0x00) goto yy267;
+ if (yych <= '[') goto yy261;
+ goto yy268;
+ } else {
+ if (yych != '{') goto yy261;
+ }
+yy267:
+ YYDEBUG(267, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ if (yyaccept <= 3) {
+ if (yyaccept <= 1) {
+ if (yyaccept == 0) {
+ goto yy235;
+ } else {
+ goto yy237;
+ }
+ } else {
+ if (yyaccept == 2) {
+ goto yy233;
+ } else {
+ goto yy250;
+ }
+ }
+ } else {
+ if (yyaccept <= 5) {
+ if (yyaccept == 4) {
+ goto yy255;
+ } else {
+ goto yy272;
+ }
+ } else {
+ if (yyaccept == 6) {
+ goto yy279;
+ } else {
+ goto yy286;
+ }
+ }
+ }
+yy268:
+ YYDEBUG(268, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 8) {
+ goto yy269;
+ }
+ goto yy261;
+yy269:
+ YYDEBUG(269, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(270, *YYCURSOR);
+ if (yybm[0+yych] & 8) {
+ goto yy269;
+ }
+ if (yych <= 0x00) goto yy235;
+ if (yych == '\\') goto yy268;
+ goto yy261;
+yy271:
+ YYDEBUG(271, *YYCURSOR);
+ yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy273;
+ }
+ if (yych <= ';') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy272;
+ if (yych <= '\t') goto yy262;
+ } else {
+ if (yych != '\r') goto yy262;
+ }
+ } else {
+ if (yych <= ')') {
+ if (yych <= '"') goto yy272;
+ if (yych <= '%') goto yy262;
+ } else {
+ if (yych <= '/') goto yy262;
+ if (yych <= '9') goto yy263;
+ if (yych <= ':') goto yy262;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '@') {
+ if (yych != '=') goto yy262;
+ } else {
+ if (yych <= 'Z') goto yy263;
+ if (yych <= ']') goto yy262;
+ if (yych >= '_') goto yy263;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= '`') goto yy262;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych >= 0x7F) goto yy262;
+ }
+ }
+ }
+yy272:
+ YYDEBUG(272, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 468 "Zend/zend_ini_scanner.l"
+ { /* TRUE value (when used outside option value/offset this causes parse error!) */
+ RETURN_TOKEN(BOOL_TRUE, "1", 1);
+}
+#line 3752 "Zend/zend_ini_scanner.c"
+yy273:
+ YYDEBUG(273, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(274, *YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy273;
+ }
+ goto yy272;
+yy275:
+ YYDEBUG(275, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'U') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'u') goto yy276;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy276:
+ YYDEBUG(276, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'E') goto yy271;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'e') goto yy271;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy277:
+ YYDEBUG(277, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'F') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'f') goto yy278;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy278:
+ YYDEBUG(278, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy263;
+ }
+ if (yych <= ')') {
+ if (yych <= '\f') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy262;
+ } else {
+ if (yych <= '\t') goto yy280;
+ if (yych >= '\v') goto yy262;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= '\r') goto yy279;
+ if (yych <= 0x1F) goto yy262;
+ goto yy280;
+ } else {
+ if (yych <= '"') goto yy279;
+ if (yych <= '%') goto yy262;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy262;
+ } else {
+ if (yych != '=') goto yy262;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy279;
+ if (yych <= '{') goto yy262;
+ } else {
+ if (yych != '~') goto yy262;
+ }
+ }
+ }
+yy279:
+ YYDEBUG(279, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 472 "Zend/zend_ini_scanner.l"
+ { /* FALSE value (when used outside option value/offset this causes parse error!)*/
+ RETURN_TOKEN(BOOL_FALSE, "", 0);
+}
+#line 3962 "Zend/zend_ini_scanner.c"
+yy280:
+ YYDEBUG(280, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(281, *YYCURSOR);
+ if (yych == '\t') goto yy280;
+ if (yych == ' ') goto yy280;
+ goto yy279;
+yy282:
+ YYDEBUG(282, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '<') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy279;
+ if (yych <= 0x08) goto yy262;
+ if (yych <= '\t') goto yy280;
+ goto yy279;
+ } else {
+ if (yych == '\r') goto yy279;
+ if (yych <= 0x1F) goto yy262;
+ goto yy280;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych <= '"') goto yy279;
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy279;
+ goto yy262;
+ } else {
+ if (yych <= '9') goto yy263;
+ if (yych == ';') goto yy279;
+ goto yy262;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= 'N') {
+ if (yych <= '=') goto yy279;
+ if (yych <= '@') goto yy262;
+ if (yych <= 'M') goto yy263;
+ goto yy289;
+ } else {
+ if (yych <= 'Z') goto yy263;
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy279;
+ goto yy263;
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '`') goto yy262;
+ if (yych == 'n') goto yy289;
+ goto yy263;
+ } else {
+ if (yych <= '|') {
+ if (yych <= '{') goto yy262;
+ goto yy279;
+ } else {
+ if (yych == '~') goto yy279;
+ goto yy262;
+ }
+ }
+ }
+ }
+yy283:
+ YYDEBUG(283, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'L') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'l') goto yy284;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy284:
+ YYDEBUG(284, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'L') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'l') goto yy285;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy285:
+ YYDEBUG(285, *YYCURSOR);
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy263;
+ }
+ if (yych <= ')') {
+ if (yych <= '\f') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy262;
+ } else {
+ if (yych <= '\t') goto yy287;
+ if (yych >= '\v') goto yy262;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= '\r') goto yy286;
+ if (yych <= 0x1F) goto yy262;
+ goto yy287;
+ } else {
+ if (yych <= '"') goto yy286;
+ if (yych <= '%') goto yy262;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy262;
+ } else {
+ if (yych != '=') goto yy262;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy286;
+ if (yych <= '{') goto yy262;
+ } else {
+ if (yych != '~') goto yy262;
+ }
+ }
+ }
+yy286:
+ YYDEBUG(286, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 476 "Zend/zend_ini_scanner.l"
+ {
+ RETURN_TOKEN(NULL_NULL, "", 0);
+}
+#line 4177 "Zend/zend_ini_scanner.c"
+yy287:
+ YYDEBUG(287, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(288, *YYCURSOR);
+ if (yych == '\t') goto yy287;
+ if (yych == ' ') goto yy287;
+ goto yy286;
+yy289:
+ YYDEBUG(289, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'E') goto yy278;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'e') goto yy278;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy290:
+ YYDEBUG(290, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'L') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'l') goto yy291;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy291:
+ YYDEBUG(291, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych != 'S') goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 's') goto yy292;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy292:
+ YYDEBUG(292, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '=') {
+ if (yych <= '"') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy255;
+ if (yych <= 0x08) goto yy262;
+ goto yy255;
+ } else {
+ if (yych == '\r') goto yy255;
+ if (yych <= 0x1F) goto yy262;
+ goto yy255;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= '%') goto yy262;
+ if (yych <= ')') goto yy255;
+ if (yych <= '/') goto yy262;
+ goto yy263;
+ } else {
+ if (yych == ';') goto yy255;
+ if (yych <= '<') goto yy262;
+ goto yy255;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= 'Z') {
+ if (yych <= '@') goto yy262;
+ if (yych == 'E') goto yy278;
+ goto yy263;
+ } else {
+ if (yych <= ']') goto yy262;
+ if (yych <= '^') goto yy255;
+ if (yych <= '_') goto yy263;
+ goto yy262;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'e') goto yy278;
+ if (yych <= 'z') goto yy263;
+ goto yy262;
+ } else {
+ if (yych == '}') goto yy262;
+ if (yych <= '~') goto yy255;
+ goto yy262;
+ }
+ }
+ }
+yy293:
+ YYDEBUG(293, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy294:
+ YYDEBUG(294, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy293;
+ }
+ if (yych >= '\r') goto yy297;
+yy295:
+ YYDEBUG(295, *YYCURSOR);
+ ++YYCURSOR;
+yy296:
+ YYDEBUG(296, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 636 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+}
+#line 4412 "Zend/zend_ini_scanner.c"
+yy297:
+ YYDEBUG(297, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy295;
+ goto yy296;
+yy298:
+ YYDEBUG(298, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(299, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy298;
+ }
+ if (yych <= ')') {
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych <= 0x00) goto yy250;
+ goto yy261;
+ } else {
+ if (yych <= '\n') goto yy250;
+ if (yych <= '\f') goto yy261;
+ goto yy250;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= 0x1F) goto yy261;
+ if (yych <= '"') goto yy250;
+ goto yy261;
+ } else {
+ if (yych <= '$') goto yy266;
+ if (yych <= '%') goto yy261;
+ goto yy250;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= ':') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '=') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy250;
+ if (yych <= '{') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '~') goto yy250;
+ goto yy261;
+ }
+ }
+ }
+yy300:
+ YYDEBUG(300, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(301, *YYCURSOR);
+ if (yych <= '.') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy250;
+ if (yych <= 0x08) goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '\r') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych <= '"') goto yy250;
+ if (yych <= '#') goto yy261;
+ goto yy266;
+ } else {
+ if (yych <= '%') goto yy261;
+ if (yych <= ')') goto yy250;
+ if (yych <= '-') goto yy261;
+ goto yy298;
+ }
+ }
+ } else {
+ if (yych <= '=') {
+ if (yych <= ':') {
+ if (yych <= '/') goto yy261;
+ if (yych <= '9') goto yy300;
+ goto yy261;
+ } else {
+ if (yych == '<') goto yy261;
+ goto yy250;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == '^') goto yy250;
+ goto yy261;
+ } else {
+ if (yych == '}') goto yy261;
+ if (yych <= '~') goto yy250;
+ goto yy261;
+ }
+ }
+ }
+yy302:
+ YYDEBUG(302, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(303, *YYCURSOR);
+ if (yych <= '/') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy250;
+ if (yych <= 0x08) goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '\r') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych <= '"') goto yy250;
+ if (yych <= '#') goto yy261;
+ goto yy266;
+ } else {
+ if (yych <= '%') goto yy261;
+ if (yych <= ')') goto yy250;
+ goto yy261;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= '9') goto yy302;
+ if (yych <= ':') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '=') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy250;
+ if (yych <= '{') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '~') goto yy250;
+ goto yy261;
+ }
+ }
+ }
+yy304:
+ YYDEBUG(304, *YYCURSOR);
+ yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(305, *YYCURSOR);
+ if (yych <= '/') {
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy250;
+ if (yych <= 0x08) goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '\r') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '$') {
+ if (yych <= '"') goto yy250;
+ if (yych <= '#') goto yy261;
+ goto yy266;
+ } else {
+ if (yych <= '%') goto yy261;
+ if (yych <= ')') goto yy250;
+ goto yy261;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= ';') {
+ if (yych <= '9') goto yy304;
+ if (yych <= ':') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '=') goto yy250;
+ goto yy261;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '^') goto yy250;
+ if (yych <= '{') goto yy261;
+ goto yy250;
+ } else {
+ if (yych == '~') goto yy250;
+ goto yy261;
+ }
+ }
+ }
+yy306:
+ YYDEBUG(306, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(307, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy306;
+ }
+ YYDEBUG(308, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(309, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 415 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+ SCNG(yy_text)++;
+ yyleng = yyleng - 2;
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 4639 "Zend/zend_ini_scanner.c"
+yy310:
+ YYDEBUG(310, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(311, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 448 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+}
+#line 4650 "Zend/zend_ini_scanner.c"
+yy312:
+ YYDEBUG(312, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy313:
+ YYDEBUG(313, *YYCURSOR);
+ if (yych == '\t') goto yy312;
+ if (yych == ' ') goto yy312;
+ goto yy242;
+yy314:
+ YYDEBUG(314, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy239;
+yy315:
+ YYDEBUG(315, *YYCURSOR);
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
+yy316:
+ YYDEBUG(316, *YYCURSOR);
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x08) goto yy237;
+ if (yych <= '\t') goto yy315;
+ goto yy314;
+ } else {
+ if (yych == '\r') goto yy318;
+ goto yy237;
+ }
+ } else {
+ if (yych <= '"') {
+ if (yych <= ' ') goto yy315;
+ if (yych <= '!') goto yy237;
+ } else {
+ if (yych == ';') goto yy293;
+ goto yy237;
+ }
+ }
+ YYDEBUG(317, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy244;
+yy318:
+ YYDEBUG(318, *YYCURSOR);
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == '\n') goto yy314;
+ goto yy239;
+ }
+/* *********************************** */
+yyc_ST_VARNAME:
+ {
+ static const unsigned char yybm[] = {
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 0, 0, 128, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 0, 0, 128, 0, 128, 0, 128,
+ 0, 0, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 128, 128, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ };
+ YYDEBUG(319, *YYCURSOR);
+ YYFILL(2);
+ yych = *YYCURSOR;
+ if (yych <= ')') {
+ if (yych <= '"') {
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy321;
+ if (yych <= '\n') goto yy323;
+ } else {
+ if (yych <= '\r') goto yy323;
+ if (yych >= '!') goto yy323;
+ }
+ } else {
+ if (yych <= '%') {
+ if (yych == '$') goto yy323;
+ } else {
+ if (yych != '\'') goto yy323;
+ }
+ }
+ } else {
+ if (yych <= '[') {
+ if (yych <= '<') {
+ if (yych == ';') goto yy323;
+ } else {
+ if (yych <= '=') goto yy323;
+ if (yych >= '[') goto yy323;
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych == '^') goto yy323;
+ } else {
+ if (yych == '}') goto yy325;
+ if (yych <= '~') goto yy323;
+ }
+ }
+ }
+yy321:
+ YYDEBUG(321, *YYCURSOR);
+ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy328;
+yy322:
+ YYDEBUG(322, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 453 "Zend/zend_ini_scanner.l"
+ { /* Variable name */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+
+ /* Eat trailing whitespace */
+ EAT_TRAILING_WHITESPACE();
+
+ RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
+}
+#line 4791 "Zend/zend_ini_scanner.c"
+yy323:
+ YYDEBUG(323, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(324, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 654 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+}
+#line 4801 "Zend/zend_ini_scanner.c"
+yy325:
+ YYDEBUG(325, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(326, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 463 "Zend/zend_ini_scanner.l"
+ { /* Variable end */
+ yy_pop_state(TSRMLS_C);
+ return '}';
+}
+#line 4812 "Zend/zend_ini_scanner.c"
+yy327:
+ YYDEBUG(327, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+yy328:
+ YYDEBUG(328, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy327;
+ }
+ goto yy322;
+ }
+}
+#line 658 "Zend/zend_ini_scanner.l"
+
+}
diff --git a/Zend/zend_ini_scanner.h b/Zend/zend_ini_scanner.h
index aafe7efdd..c81e3605d 100644
--- a/Zend/zend_ini_scanner.h
+++ b/Zend/zend_ini_scanner.h
@@ -25,6 +25,7 @@
/* Scanner modes */
#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
#define ZEND_INI_SCANNER_RAW 1 /* Raw mode. Option values are not parsed */
+#define ZEND_INI_SCANNER_TYPED 2 /* Typed mode. */
BEGIN_EXTERN_C()
int zend_ini_scanner_get_lineno(TSRMLS_D);
diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l
index 6207c76b2..54c642c3a 100644
--- a/Zend/zend_ini_scanner.l
+++ b/Zend/zend_ini_scanner.l
@@ -24,6 +24,7 @@
#include <errno.h>
#include "zend.h"
+#include "zend_API.h"
#include "zend_globals.h"
#include <zend_ini_parser.h>
#include "zend_ini_scanner.h"
@@ -137,9 +138,55 @@ ZEND_API zend_ini_scanner_globals ini_scanner_globals;
Z_TYPE_P(retval) = IS_STRING; \
}
-#define RETURN_TOKEN(type, str, len) { \
- zend_ini_copy_value(ini_lval, str, len); \
- return type; \
+#define RETURN_TOKEN(type, str, len) { \
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \
+ zend_ini_copy_typed_value(ini_lval, type, str, len); \
+ } else { \
+ zend_ini_copy_value(ini_lval, str, len); \
+ } \
+ return type; \
+}
+
+static inline int convert_to_number(zval *retval, const char *str, const int str_len)
+{
+ zend_uchar type;
+ int overflow;
+ long lval;
+ double dval;
+
+ if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) {
+ if (type == IS_LONG) {
+ ZVAL_LONG(retval, lval);
+ return SUCCESS;
+ } else if (type == IS_DOUBLE && !overflow) {
+ ZVAL_DOUBLE(retval, dval);
+ return SUCCESS;
+ }
+ }
+
+ return FAILURE;
+}
+
+static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len)
+{
+ switch (type) {
+ case BOOL_FALSE:
+ case BOOL_TRUE:
+ ZVAL_BOOL(retval, type == BOOL_TRUE);
+ break;
+
+ case NULL_NULL:
+ ZVAL_NULL(retval);
+ break;
+
+ case TC_NUMBER:
+ if (convert_to_number(retval, str, len) == SUCCESS) {
+ break;
+ }
+ /* intentional fall-through */
+ default:
+ zend_ini_copy_value(retval, str, len);
+ }
}
static void _yy_push_state(int new_state TSRMLS_DC)
@@ -172,7 +219,7 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC)
{
/* Sanity check */
- if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW) {
+ if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
zend_error(E_WARNING, "Invalid scanner mode");
return FAILURE;
}
@@ -422,10 +469,14 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
RETURN_TOKEN(BOOL_TRUE, "1", 1);
}
-<INITIAL,ST_VALUE>("false"|"off"|"no"|"none"|"null"){TABS_AND_SPACES}* { /* FALSE value (when used outside option value/offset this causes parse error!)*/
+<INITIAL,ST_VALUE>("false"|"off"|"no"|"none"){TABS_AND_SPACES}* { /* FALSE value (when used outside option value/offset this causes parse error!)*/
RETURN_TOKEN(BOOL_FALSE, "", 0);
}
+<INITIAL,ST_VALUE>("null"){TABS_AND_SPACES}* {
+ RETURN_TOKEN(NULL_NULL, "", 0);
+}
+
<INITIAL>{LABEL} { /* Get option name */
/* Eat leading whitespace */
EAT_LEADING_WHITESPACE();
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index 0f9e184b7..8a41902a9 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -138,6 +138,7 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
ALLOC_HASHTABLE_REL(tmp_ht);
zend_hash_init(tmp_ht, zend_hash_num_elements(original_ht), NULL, ZVAL_PTR_DTOR, 0);
zend_hash_copy(tmp_ht, original_ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
+ tmp_ht->nNextFreeElement = original_ht->nNextFreeElement;
zvalue->value.ht = tmp_ht;
}
break;
diff --git a/acinclude.m4 b/acinclude.m4
index 3ccc7b262..81dc0db34 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2800,7 +2800,7 @@ AC_DEFUN([PHP_DETECT_ICC],
dnl PHP_DETECT_SUNCC
dnl Detect if the systems default compiler is suncc.
-dnl We also set some usefull CFLAGS if the user didn't set any
+dnl We also set some useful CFLAGS if the user didn't set any
AC_DEFUN([PHP_DETECT_SUNCC],[
SUNCC="no"
AC_MSG_CHECKING([for suncc])
diff --git a/aclocal.m4 b/aclocal.m4
index 2ce47c7b1..189149fbe 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -2800,7 +2800,7 @@ AC_DEFUN([PHP_DETECT_ICC],
dnl PHP_DETECT_SUNCC
dnl Detect if the systems default compiler is suncc.
-dnl We also set some usefull CFLAGS if the user didn't set any
+dnl We also set some useful CFLAGS if the user didn't set any
AC_DEFUN([PHP_DETECT_SUNCC],[
SUNCC="no"
AC_MSG_CHECKING([for suncc])
@@ -3648,7 +3648,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -3662,7 +3662,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -3681,7 +3684,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*)
diff --git a/build/libtool.m4 b/build/libtool.m4
index 4d948b907..37dc15988 100644
--- a/build/libtool.m4
+++ b/build/libtool.m4
@@ -615,7 +615,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -629,7 +629,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -648,7 +651,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*)
diff --git a/config.guess b/config.guess
index 1578aa173..63b63d81d 100644
--- a/config.guess
+++ b/config.guess
@@ -982,6 +982,12 @@ EOF
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-gnu
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-gnu
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
diff --git a/configure b/configure
index 34880e4c4..4851c2290 100755
--- a/configure
+++ b/configure
@@ -3665,7 +3665,7 @@ ac_config_headers="$ac_config_headers main/php_config.h"
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=0
+PHP_RELEASE_VERSION=1
PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
@@ -21113,7 +21113,8 @@ if test "$PHP_GCOV" = "yes"; then
as_fn_error $? "ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1." "$LINENO" 5
fi
- ltp_version_list="1.5 1.6 1.7 1.9 1.10"
+ ltp_version_min="105"
+ ltp_version_exclude="1.8"
# Extract the first word of "lcov", so it can be a program name with args.
set dummy lcov; ac_word=$2
@@ -21204,24 +21205,33 @@ if test "${php_cv_ltp_version+set}" = set; then :
else
php_cv_ltp_version=invalid
- ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
- for ltp_check_version in $ltp_version_list; do
- if test "$ltp_version" = "$ltp_check_version"; then
- php_cv_ltp_version="$ltp_check_version (ok)"
+ ltp_version_vars=`$LTP -v 2>/dev/null | $SED -e 's/^.* //' -e 's/\./ /g' | tr -d a-z`
+ if test -n "$ltp_version_vars"; then
+ set $ltp_version_vars
+ ltp_version="${1}.${2}"
+ ltp_version_num="`expr ${1} \* 100 + ${2}`"
+ if test $ltp_version_num -ge $ltp_version_min; then
+ php_cv_ltp_version="$ltp_version (ok)"
+ for ltp_check_version in $ltp_version_exclude; do
+ if test "$ltp_version" = "$ltp_check_version"; then
+ php_cv_ltp_version=invalid
+ break
+ fi
+ done
fi
- done
+ fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $php_cv_ltp_version" >&5
$as_echo "$php_cv_ltp_version" >&6; }
else
- ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
+ ltp_msg="To enable code coverage reporting you must have LTP installed"
as_fn_error $? "$ltp_msg" "$LINENO" 5
fi
case $php_cv_ltp_version in
""|invalid)
- ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
+ ltp_msg="This LTP version is not supported (found: $ltp_version, min: $ltp_version_min, excluded: $ltp_version_exclude)."
as_fn_error $? "$ltp_msg" "$LINENO" 5
LTP="exit 0;"
;;
@@ -104003,6 +104013,52 @@ if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes" || test "$
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether whether compiler supports Decimal32/64/128 types" >&5
+$as_echo_n "checking whether whether compiler supports Decimal32/64/128 types... " >&6; }
+if test "${ac_cv_decimal_fp_supported+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+if test "$cross_compiling" = yes; then :
+
+ ac_cv_decimal_fp_supported=no
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ typedef float dec32 __attribute__((mode(SD)));
+ dec32 k = 99.49f;
+ double d2 = (double)k;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+ ac_cv_decimal_fp_supported=yes
+
+else
+
+ ac_cv_decimal_fp_supported=no
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decimal_fp_supported" >&5
+$as_echo "$ac_cv_decimal_fp_supported" >&6; }
+if test "$ac_cv_decimal_fp_supported" = "yes"; then
+
+$as_echo "#define HAVE_DECIMAL_FP_SUPPORT 1" >>confdefs.h
+
+fi
+
if test "$PHP_RECODE" != "no"; then
test "$PHP_IMAP" != "no" && recode_conflict="$recode_conflict imap"
@@ -105244,7 +105300,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 105247 "configure"
+#line 105303 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -107156,7 +107212,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 107159 "configure"' > conftest.$ac_ext
+ echo '#line 107215 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -107191,7 +107247,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -107209,7 +107265,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -107228,7 +107287,10 @@ s390*-*linux*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*)
@@ -108548,7 +108610,7 @@ else
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
cat > conftest.$ac_ext <<EOF
-#line 108551 "configure"
+#line 108613 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -108706,11 +108768,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:108709: $lt_compile\"" >&5)
+ (eval echo "\"configure:108771: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:108713: \$? = $ac_status" >&5
+ echo "configure:108775: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -109004,11 +109066,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:109007: $lt_compile\"" >&5)
+ (eval echo "\"configure:109069: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:109011: \$? = $ac_status" >&5
+ echo "configure:109073: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -109108,11 +109170,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:109111: $lt_compile\"" >&5)
+ (eval echo "\"configure:109173: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:109115: \$? = $ac_status" >&5
+ echo "configure:109177: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -109572,7 +109634,7 @@ _LT_EOF
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 109575 "configure"
+#line 109637 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -109614,7 +109676,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 109617 "configure"
+#line 109679 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -111131,7 +111193,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 111134 "configure"
+#line 111196 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -111231,7 +111293,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 111234 "configure"
+#line 111296 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -112296,7 +112358,7 @@ case $host_os in
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 112299 "configure"
+#line 112361 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -112339,7 +112401,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 112342 "configure"
+#line 112404 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -113591,11 +113653,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:113594: $lt_compile\"" >&5)
+ (eval echo "\"configure:113656: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:113598: \$? = $ac_status" >&5
+ echo "configure:113660: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -113695,11 +113757,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:113698: $lt_compile\"" >&5)
+ (eval echo "\"configure:113760: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:113702: \$? = $ac_status" >&5
+ echo "configure:113764: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
diff --git a/configure.in b/configure.in
index 1037b71c2..d69a55a9f 100644
--- a/configure.in
+++ b/configure.in
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=0
+PHP_RELEASE_VERSION=1
PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
@@ -787,7 +787,12 @@ if test "$PHP_GCOV" = "yes"; then
AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
fi
- ltp_version_list="1.5 1.6 1.7 1.9 1.10"
+ dnl min: 1.5 (i.e. 105, major * 100 + minor for easier comparison)
+ ltp_version_min="105"
+ dnl non-working versions, e.g. "1.8 1.18";
+ dnl remove "none" when introducing the first incompatible LTP version an
+ dnl separate any following additions by spaces
+ ltp_version_exclude="1.8"
AC_CHECK_PROG(LTP, lcov, lcov)
AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
@@ -797,21 +802,30 @@ if test "$PHP_GCOV" = "yes"; then
if test "$LTP"; then
AC_CACHE_CHECK([for ltp version], php_cv_ltp_version, [
php_cv_ltp_version=invalid
- ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
- for ltp_check_version in $ltp_version_list; do
- if test "$ltp_version" = "$ltp_check_version"; then
- php_cv_ltp_version="$ltp_check_version (ok)"
+ ltp_version_vars=`$LTP -v 2>/dev/null | $SED -e 's/^.* //' -e 's/\./ /g' | tr -d a-z`
+ if test -n "$ltp_version_vars"; then
+ set $ltp_version_vars
+ ltp_version="${1}.${2}"
+ ltp_version_num="`expr ${1} \* 100 + ${2}`"
+ if test $ltp_version_num -ge $ltp_version_min; then
+ php_cv_ltp_version="$ltp_version (ok)"
+ for ltp_check_version in $ltp_version_exclude; do
+ if test "$ltp_version" = "$ltp_check_version"; then
+ php_cv_ltp_version=invalid
+ break
+ fi
+ done
fi
- done
+ fi
])
else
- ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
+ ltp_msg="To enable code coverage reporting you must have LTP installed"
AC_MSG_ERROR([$ltp_msg])
fi
case $php_cv_ltp_version in
""|invalid[)]
- ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
+ ltp_msg="This LTP version is not supported (found: $ltp_version, min: $ltp_version_min, excluded: $ltp_version_exclude)."
AC_MSG_ERROR([$ltp_msg])
LTP="exit 0;"
;;
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index 6849fa938..d16878a3c 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Jul 31 14:33:37 2014 */
+/* Generated by re2c 0.13.5 on Mon Aug 18 18:28:27 2014 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -669,7 +669,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
}
}
-const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
+const static timelib_tz_lookup_table* abbr_search(const char *word, long gmtoffset, int isdst)
{
int first_found = 0;
const timelib_tz_lookup_table *tp, *first_found_elem = NULL;
@@ -697,25 +697,6 @@ const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffs
return first_found_elem;
}
- for (tp = timelib_timezone_lookup; tp->name; tp++) {
- if (tp->full_tz_name && strcasecmp(word, tp->full_tz_name) == 0) {
- if (!first_found) {
- first_found = 1;
- first_found_elem = tp;
- if (gmtoffset == -1) {
- return tp;
- }
- }
- if (tp->gmtoffset == gmtoffset) {
- return tp;
- }
- }
- }
- if (first_found) {
- return first_found_elem;
- }
-
-
/* Still didn't find anything, let's find the zone solely based on
* offset/isdst then */
for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
@@ -726,7 +707,7 @@ const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffs
return NULL;
}
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
+static long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, int *found)
{
char *word;
char *begin = *ptr, *end;
@@ -740,7 +721,7 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found
word = calloc(1, end - begin + 1);
memcpy(word, begin, end - begin);
- if ((tp = zone_search(word, -1, 0))) {
+ if ((tp = abbr_search(word, -1, 0))) {
value = -tp->gmtoffset / 60;
*dst = tp->type;
value += tp->type * 60;
@@ -784,33 +765,26 @@ long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found
retval = timelib_parse_tz_cor(ptr);
} else {
int found = 0;
- long offset;
+ long offset = 0;
char *tz_abbr;
t->is_localtime = 1;
- offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+ /* First, we lookup by abbreviation only */
+ offset = timelib_lookup_abbr(ptr, dst, &tz_abbr, &found);
if (found) {
t->zone_type = TIMELIB_ZONETYPE_ABBR;
+ timelib_time_tz_abbr_update(t, tz_abbr);
}
-#if 0
- /* If we found a TimeZone identifier, use it */
- if (tz_name) {
- t->tz_info = timelib_parse_tzfile(tz_name);
- t->zone_type = TIMELIB_ZONETYPE_ID;
- }
-#endif
- /* If we have a TimeZone identifier to start with, use it */
- if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
+
+ /* Otherwise, we look if we have a TimeZone identifier */
+ if (!found || strcmp("UTC", tz_abbr) == 0) {
if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
t->tz_info = res;
t->zone_type = TIMELIB_ZONETYPE_ID;
found++;
}
}
- if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
- timelib_time_tz_abbr_update(t, tz_abbr);
- }
free(tz_abbr);
*tz_not_found = (found == 0);
retval = offset;
@@ -19805,7 +19779,7 @@ yy1315:
TIMELIB_HAVE_RELATIVE();
/* skip "last day of" or "first day of" */
- if (*ptr == 'l') {
+ if (*ptr == 'l' || *ptr == 'L') {
s->time->relative.first_last_day_of = 2;
} else {
s->time->relative.first_last_day_of = 1;
@@ -25125,7 +25099,7 @@ char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst)
{
const timelib_tz_lookup_table *tp;
- tp = zone_search(abbr, gmtoffset, isdst);
+ tp = abbr_search(abbr, gmtoffset, isdst);
if (tp) {
return (tp->full_tz_name);
} else {
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index 760caea33..c7953e75b 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -668,7 +668,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
}
}
-const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
+const static timelib_tz_lookup_table* abbr_search(const char *word, long gmtoffset, int isdst)
{
int first_found = 0;
const timelib_tz_lookup_table *tp, *first_found_elem = NULL;
@@ -696,25 +696,6 @@ const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffs
return first_found_elem;
}
- for (tp = timelib_timezone_lookup; tp->name; tp++) {
- if (tp->full_tz_name && strcasecmp(word, tp->full_tz_name) == 0) {
- if (!first_found) {
- first_found = 1;
- first_found_elem = tp;
- if (gmtoffset == -1) {
- return tp;
- }
- }
- if (tp->gmtoffset == gmtoffset) {
- return tp;
- }
- }
- }
- if (first_found) {
- return first_found_elem;
- }
-
-
/* Still didn't find anything, let's find the zone solely based on
* offset/isdst then */
for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
@@ -725,7 +706,7 @@ const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffs
return NULL;
}
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
+static long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, int *found)
{
char *word;
char *begin = *ptr, *end;
@@ -739,7 +720,7 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found
word = calloc(1, end - begin + 1);
memcpy(word, begin, end - begin);
- if ((tp = zone_search(word, -1, 0))) {
+ if ((tp = abbr_search(word, -1, 0))) {
value = -tp->gmtoffset / 60;
*dst = tp->type;
value += tp->type * 60;
@@ -783,33 +764,26 @@ long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found
retval = timelib_parse_tz_cor(ptr);
} else {
int found = 0;
- long offset;
+ long offset = 0;
char *tz_abbr;
t->is_localtime = 1;
- offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+ /* First, we lookup by abbreviation only */
+ offset = timelib_lookup_abbr(ptr, dst, &tz_abbr, &found);
if (found) {
t->zone_type = TIMELIB_ZONETYPE_ABBR;
+ timelib_time_tz_abbr_update(t, tz_abbr);
}
-#if 0
- /* If we found a TimeZone identifier, use it */
- if (tz_name) {
- t->tz_info = timelib_parse_tzfile(tz_name);
- t->zone_type = TIMELIB_ZONETYPE_ID;
- }
-#endif
- /* If we have a TimeZone identifier to start with, use it */
- if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
+
+ /* Otherwise, we look if we have a TimeZone identifier */
+ if (!found || strcmp("UTC", tz_abbr) == 0) {
if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
t->tz_info = res;
t->zone_type = TIMELIB_ZONETYPE_ID;
found++;
}
}
- if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
- timelib_time_tz_abbr_update(t, tz_abbr);
- }
free(tz_abbr);
*tz_not_found = (found == 0);
retval = offset;
@@ -1055,7 +1029,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
TIMELIB_HAVE_RELATIVE();
/* skip "last day of" or "first day of" */
- if (*ptr == 'l') {
+ if (*ptr == 'l' || *ptr == 'L') {
s->time->relative.first_last_day_of = 2;
} else {
s->time->relative.first_last_day_of = 1;
@@ -2232,7 +2206,7 @@ char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst)
{
const timelib_tz_lookup_table *tp;
- tp = zone_search(abbr, gmtoffset, isdst);
+ tp = abbr_search(abbr, gmtoffset, isdst);
if (tp) {
return (tp->full_tz_name);
} else {
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index 5423a58d2..a23104f68 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -30,13 +30,13 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[582] = {
{ "Africa/Khartoum" , 0x001670 },
{ "Africa/Kigali" , 0x001783 },
{ "Africa/Kinshasa" , 0x0017D8 },
- { "Africa/Lagos" , 0x001833 },
- { "Africa/Libreville" , 0x001888 },
- { "Africa/Lome" , 0x0018DD },
- { "Africa/Luanda" , 0x001932 },
- { "Africa/Lubumbashi" , 0x001987 },
- { "Africa/Lusaka" , 0x0019E2 },
- { "Africa/Malabo" , 0x001A37 },
+ { "Africa/Lagos" , 0x001844 },
+ { "Africa/Libreville" , 0x001899 },
+ { "Africa/Lome" , 0x0018EE },
+ { "Africa/Luanda" , 0x001943 },
+ { "Africa/Lubumbashi" , 0x001998 },
+ { "Africa/Lusaka" , 0x0019F3 },
+ { "Africa/Malabo" , 0x001A48 },
{ "Africa/Maputo" , 0x001A9D },
{ "Africa/Maseru" , 0x001AF2 },
{ "Africa/Mbabane" , 0x001B5A },
@@ -45,545 +45,545 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[582] = {
{ "Africa/Nairobi" , 0x001C71 },
{ "Africa/Ndjamena" , 0x001CF0 },
{ "Africa/Niamey" , 0x001D5C },
- { "Africa/Nouakchott" , 0x001DCF },
- { "Africa/Ouagadougou" , 0x001E24 },
- { "Africa/Porto-Novo" , 0x001E79 },
- { "Africa/Sao_Tome" , 0x001EDF },
- { "Africa/Timbuktu" , 0x001F34 },
- { "Africa/Tripoli" , 0x001F89 },
- { "Africa/Tunis" , 0x002092 },
- { "Africa/Windhoek" , 0x0021A4 },
- { "America/Adak" , 0x0023EB },
- { "America/Anchorage" , 0x002761 },
- { "America/Anguilla" , 0x002AD5 },
- { "America/Antigua" , 0x002B2A },
- { "America/Araguaina" , 0x002B90 },
- { "America/Argentina/Buenos_Aires" , 0x002CF5 },
- { "America/Argentina/Catamarca" , 0x002EA3 },
- { "America/Argentina/ComodRivadavia" , 0x003064 },
- { "America/Argentina/Cordoba" , 0x00320A },
- { "America/Argentina/Jujuy" , 0x0033DF },
- { "America/Argentina/La_Rioja" , 0x003593 },
- { "America/Argentina/Mendoza" , 0x00374B },
- { "America/Argentina/Rio_Gallegos" , 0x00390B },
- { "America/Argentina/Salta" , 0x003AC0 },
- { "America/Argentina/San_Juan" , 0x003C6C },
- { "America/Argentina/San_Luis" , 0x003E24 },
- { "America/Argentina/Tucuman" , 0x003FEA },
- { "America/Argentina/Ushuaia" , 0x0041A6 },
- { "America/Aruba" , 0x004361 },
- { "America/Asuncion" , 0x0043C7 },
- { "America/Atikokan" , 0x0046AC },
- { "America/Atka" , 0x004782 },
- { "America/Bahia" , 0x004AE8 },
- { "America/Bahia_Banderas" , 0x004C7B },
- { "America/Barbados" , 0x004EF4 },
- { "America/Belem" , 0x004F8E },
- { "America/Belize" , 0x005089 },
- { "America/Blanc-Sablon" , 0x005205 },
- { "America/Boa_Vista" , 0x0052B9 },
- { "America/Bogota" , 0x0053C2 },
- { "America/Boise" , 0x00542E },
- { "America/Buenos_Aires" , 0x0057C5 },
- { "America/Cambridge_Bay" , 0x00595E },
- { "America/Campo_Grande" , 0x005C86 },
- { "America/Cancun" , 0x005F75 },
- { "America/Caracas" , 0x0061B7 },
- { "America/Catamarca" , 0x00621E },
- { "America/Cayenne" , 0x0063C4 },
- { "America/Cayman" , 0x006426 },
- { "America/Chicago" , 0x00647B },
- { "America/Chihuahua" , 0x006992 },
- { "America/Coral_Harbour" , 0x006BFD },
- { "America/Cordoba" , 0x006C8F },
- { "America/Costa_Rica" , 0x006E35 },
- { "America/Creston" , 0x006EBF },
- { "America/Cuiaba" , 0x006F4B },
- { "America/Curacao" , 0x007229 },
- { "America/Danmarkshavn" , 0x00728F },
- { "America/Dawson" , 0x0073D3 },
- { "America/Dawson_Creek" , 0x0076F0 },
- { "America/Denver" , 0x0078CA },
- { "America/Detroit" , 0x007C50 },
- { "America/Dominica" , 0x007FAF },
- { "America/Edmonton" , 0x008004 },
- { "America/Eirunepe" , 0x0083BC },
- { "America/El_Salvador" , 0x0084D4 },
- { "America/Ensenada" , 0x008549 },
- { "America/Fort_Wayne" , 0x0089F0 },
- { "America/Fortaleza" , 0x0088B2 },
- { "America/Glace_Bay" , 0x008C5A },
- { "America/Godthab" , 0x008FD1 },
- { "America/Goose_Bay" , 0x009295 },
- { "America/Grand_Turk" , 0x009752 },
- { "America/Grenada" , 0x009A01 },
- { "America/Guadeloupe" , 0x009A56 },
- { "America/Guatemala" , 0x009AAB },
- { "America/Guayaquil" , 0x009B34 },
- { "America/Guyana" , 0x009B91 },
- { "America/Halifax" , 0x009C12 },
- { "America/Havana" , 0x00A128 },
- { "America/Hermosillo" , 0x00A49B },
- { "America/Indiana/Indianapolis" , 0x00A579 },
- { "America/Indiana/Knox" , 0x00A80A },
- { "America/Indiana/Marengo" , 0x00ABA1 },
- { "America/Indiana/Petersburg" , 0x00AE47 },
- { "America/Indiana/Tell_City" , 0x00B394 },
- { "America/Indiana/Vevay" , 0x00B62D },
- { "America/Indiana/Vincennes" , 0x00B868 },
- { "America/Indiana/Winamac" , 0x00BB1C },
- { "America/Indianapolis" , 0x00B12A },
- { "America/Inuvik" , 0x00BDD5 },
- { "America/Iqaluit" , 0x00C0CC },
- { "America/Jamaica" , 0x00C3EE },
- { "America/Jujuy" , 0x00C4B3 },
- { "America/Juneau" , 0x00C65D },
- { "America/Kentucky/Louisville" , 0x00C9DB },
- { "America/Kentucky/Monticello" , 0x00CDF9 },
- { "America/Knox_IN" , 0x00D17E },
- { "America/Kralendijk" , 0x00D4EF },
- { "America/La_Paz" , 0x00D555 },
- { "America/Lima" , 0x00D5BC },
- { "America/Los_Angeles" , 0x00D664 },
- { "America/Louisville" , 0x00DA75 },
- { "America/Lower_Princes" , 0x00DE6A },
- { "America/Maceio" , 0x00DED0 },
- { "America/Managua" , 0x00E00A },
- { "America/Manaus" , 0x00E0BD },
- { "America/Marigot" , 0x00E1BF },
- { "America/Martinique" , 0x00E214 },
- { "America/Matamoros" , 0x00E280 },
- { "America/Mazatlan" , 0x00E4D9 },
- { "America/Mendoza" , 0x00E746 },
- { "America/Menominee" , 0x00E8FA },
- { "America/Merida" , 0x00EC7B },
- { "America/Metlakatla" , 0x00EEB6 },
- { "America/Mexico_City" , 0x00EFF1 },
- { "America/Miquelon" , 0x00F26C },
- { "America/Moncton" , 0x00F4DE },
- { "America/Monterrey" , 0x00F975 },
- { "America/Montevideo" , 0x00FBD8 },
- { "America/Montreal" , 0x00FEEA },
- { "America/Montserrat" , 0x0103DA },
- { "America/Nassau" , 0x01042F },
- { "America/New_York" , 0x010774 },
- { "America/Nipigon" , 0x010C7F },
- { "America/Nome" , 0x010FD0 },
- { "America/Noronha" , 0x01134E },
- { "America/North_Dakota/Beulah" , 0x01147E },
- { "America/North_Dakota/Center" , 0x011812 },
- { "America/North_Dakota/New_Salem" , 0x011BA6 },
- { "America/Ojinaga" , 0x011F4F },
- { "America/Panama" , 0x0121B0 },
- { "America/Pangnirtung" , 0x012205 },
- { "America/Paramaribo" , 0x01253B },
- { "America/Phoenix" , 0x0125CD },
- { "America/Port-au-Prince" , 0x01268B },
- { "America/Port_of_Spain" , 0x0129AF },
- { "America/Porto_Acre" , 0x0128AB },
- { "America/Porto_Velho" , 0x012A04 },
- { "America/Puerto_Rico" , 0x012AFA },
- { "America/Rainy_River" , 0x012B65 },
- { "America/Rankin_Inlet" , 0x012E9D },
- { "America/Recife" , 0x013183 },
- { "America/Regina" , 0x0132AD },
- { "America/Resolute" , 0x01346B },
- { "America/Rio_Branco" , 0x013753 },
- { "America/Rosario" , 0x01385B },
- { "America/Santa_Isabel" , 0x013A01 },
- { "America/Santarem" , 0x013DA4 },
- { "America/Santiago" , 0x013EA9 },
- { "America/Santo_Domingo" , 0x014252 },
- { "America/Sao_Paulo" , 0x014318 },
- { "America/Scoresbysund" , 0x014627 },
- { "America/Shiprock" , 0x014915 },
- { "America/Sitka" , 0x014C8E },
- { "America/St_Barthelemy" , 0x015016 },
- { "America/St_Johns" , 0x01506B },
- { "America/St_Kitts" , 0x0155BE },
- { "America/St_Lucia" , 0x015613 },
- { "America/St_Thomas" , 0x015668 },
- { "America/St_Vincent" , 0x0156BD },
- { "America/Swift_Current" , 0x015712 },
- { "America/Tegucigalpa" , 0x015833 },
- { "America/Thule" , 0x0158B2 },
- { "America/Thunder_Bay" , 0x015AF9 },
- { "America/Tijuana" , 0x015E42 },
- { "America/Toronto" , 0x0161DB },
- { "America/Tortola" , 0x0166FB },
- { "America/Vancouver" , 0x016750 },
- { "America/Virgin" , 0x016B8D },
- { "America/Whitehorse" , 0x016BE2 },
- { "America/Winnipeg" , 0x016EFF },
- { "America/Yakutat" , 0x01733F },
- { "America/Yellowknife" , 0x0176AA },
- { "Antarctica/Casey" , 0x0179BA },
- { "Antarctica/Davis" , 0x017A58 },
- { "Antarctica/DumontDUrville" , 0x017AF9 },
- { "Antarctica/Macquarie" , 0x017B8B },
- { "Antarctica/Mawson" , 0x017DD8 },
- { "Antarctica/McMurdo" , 0x017E54 },
- { "Antarctica/Palmer" , 0x0181FF },
- { "Antarctica/Rothera" , 0x01851B },
- { "Antarctica/South_Pole" , 0x018591 },
- { "Antarctica/Syowa" , 0x01890F },
- { "Antarctica/Troll" , 0x01897D },
- { "Antarctica/Vostok" , 0x018B4F },
- { "Arctic/Longyearbyen" , 0x018BC0 },
- { "Asia/Aden" , 0x018EF2 },
- { "Asia/Almaty" , 0x018F47 },
- { "Asia/Amman" , 0x0190C6 },
- { "Asia/Anadyr" , 0x01937C },
- { "Asia/Aqtau" , 0x01957E },
- { "Asia/Aqtobe" , 0x01977D },
- { "Asia/Ashgabat" , 0x019935 },
- { "Asia/Ashkhabad" , 0x019A52 },
- { "Asia/Baghdad" , 0x019B6F },
- { "Asia/Bahrain" , 0x019CE4 },
- { "Asia/Baku" , 0x019D4A },
- { "Asia/Bangkok" , 0x01A032 },
- { "Asia/Beirut" , 0x01A087 },
- { "Asia/Bishkek" , 0x01A394 },
- { "Asia/Brunei" , 0x01A540 },
- { "Asia/Calcutta" , 0x01A5A2 },
- { "Asia/Chita" , 0x01A61B },
- { "Asia/Choibalsan" , 0x01A830 },
- { "Asia/Chongqing" , 0x01A9A9 },
- { "Asia/Chungking" , 0x01AA49 },
- { "Asia/Colombo" , 0x01AAE9 },
- { "Asia/Dacca" , 0x01AB85 },
- { "Asia/Damascus" , 0x01AC2B },
- { "Asia/Dhaka" , 0x01AF7B },
- { "Asia/Dili" , 0x01B021 },
- { "Asia/Dubai" , 0x01B0AB },
- { "Asia/Dushanbe" , 0x01B100 },
- { "Asia/Gaza" , 0x01B203 },
- { "Asia/Harbin" , 0x01B556 },
- { "Asia/Hebron" , 0x01B5F6 },
- { "Asia/Ho_Chi_Minh" , 0x01B952 },
- { "Asia/Hong_Kong" , 0x01B9CA },
- { "Asia/Hovd" , 0x01BB8C },
- { "Asia/Irkutsk" , 0x01BD04 },
- { "Asia/Istanbul" , 0x01BEEF },
- { "Asia/Jakarta" , 0x01C2DC },
- { "Asia/Jayapura" , 0x01C386 },
- { "Asia/Jerusalem" , 0x01C423 },
- { "Asia/Kabul" , 0x01C752 },
- { "Asia/Kamchatka" , 0x01C7A3 },
- { "Asia/Karachi" , 0x01C99C },
- { "Asia/Kashgar" , 0x01CA51 },
- { "Asia/Kathmandu" , 0x01CAA6 },
- { "Asia/Katmandu" , 0x01CB0C },
- { "Asia/Khandyga" , 0x01CB72 },
- { "Asia/Kolkata" , 0x01CD9C },
- { "Asia/Krasnoyarsk" , 0x01CE15 },
- { "Asia/Kuala_Lumpur" , 0x01D002 },
- { "Asia/Kuching" , 0x01D0BF },
- { "Asia/Kuwait" , 0x01D1AD },
- { "Asia/Macao" , 0x01D202 },
- { "Asia/Macau" , 0x01D33D },
- { "Asia/Magadan" , 0x01D478 },
- { "Asia/Makassar" , 0x01D67C },
- { "Asia/Manila" , 0x01D741 },
- { "Asia/Muscat" , 0x01D7C6 },
- { "Asia/Nicosia" , 0x01D81B },
- { "Asia/Novokuznetsk" , 0x01DB03 },
- { "Asia/Novosibirsk" , 0x01DD23 },
- { "Asia/Omsk" , 0x01DF13 },
- { "Asia/Oral" , 0x01E0FF },
- { "Asia/Phnom_Penh" , 0x01E2CF },
- { "Asia/Pontianak" , 0x01E347 },
- { "Asia/Pyongyang" , 0x01E409 },
- { "Asia/Qatar" , 0x01E499 },
- { "Asia/Qyzylorda" , 0x01E4FF },
- { "Asia/Rangoon" , 0x01E6D5 },
- { "Asia/Riyadh" , 0x01E74D },
- { "Asia/Saigon" , 0x01E7A2 },
- { "Asia/Sakhalin" , 0x01E81A },
- { "Asia/Samarkand" , 0x01EA17 },
- { "Asia/Seoul" , 0x01EB4D },
- { "Asia/Shanghai" , 0x01EC14 },
- { "Asia/Singapore" , 0x01ECC0 },
- { "Asia/Srednekolymsk" , 0x01ED77 },
- { "Asia/Taipei" , 0x01EF77 },
- { "Asia/Tashkent" , 0x01F0A8 },
- { "Asia/Tbilisi" , 0x01F1D9 },
- { "Asia/Tehran" , 0x01F393 },
- { "Asia/Tel_Aviv" , 0x01F601 },
- { "Asia/Thimbu" , 0x01F930 },
- { "Asia/Thimphu" , 0x01F996 },
- { "Asia/Tokyo" , 0x01F9FC },
- { "Asia/Ujung_Pandang" , 0x01FA86 },
- { "Asia/Ulaanbaatar" , 0x01FB03 },
- { "Asia/Ulan_Bator" , 0x01FC5E },
- { "Asia/Urumqi" , 0x01FDAB },
- { "Asia/Ust-Nera" , 0x01FE0D },
- { "Asia/Vientiane" , 0x02001F },
- { "Asia/Vladivostok" , 0x020097 },
- { "Asia/Yakutsk" , 0x020281 },
- { "Asia/Yekaterinburg" , 0x02046B },
- { "Asia/Yerevan" , 0x02067B },
- { "Atlantic/Azores" , 0x02087B },
- { "Atlantic/Bermuda" , 0x020D7E },
- { "Atlantic/Canary" , 0x02105F },
- { "Atlantic/Cape_Verde" , 0x021335 },
- { "Atlantic/Faeroe" , 0x0213AE },
- { "Atlantic/Faroe" , 0x021652 },
- { "Atlantic/Jan_Mayen" , 0x0218F6 },
- { "Atlantic/Madeira" , 0x021C28 },
- { "Atlantic/Reykjavik" , 0x022131 },
- { "Atlantic/South_Georgia" , 0x0222EA },
- { "Atlantic/St_Helena" , 0x0224FC },
- { "Atlantic/Stanley" , 0x02232E },
- { "Australia/ACT" , 0x022551 },
- { "Australia/Adelaide" , 0x022874 },
- { "Australia/Brisbane" , 0x022BA6 },
- { "Australia/Broken_Hill" , 0x022C73 },
- { "Australia/Canberra" , 0x022FB7 },
- { "Australia/Currie" , 0x0232DA },
- { "Australia/Darwin" , 0x023613 },
- { "Australia/Eucla" , 0x02369F },
- { "Australia/Hobart" , 0x02377B },
- { "Australia/LHI" , 0x023ADF },
- { "Australia/Lindeman" , 0x023D80 },
- { "Australia/Lord_Howe" , 0x023E67 },
- { "Australia/Melbourne" , 0x024118 },
- { "Australia/North" , 0x024443 },
- { "Australia/NSW" , 0x0244BD },
- { "Australia/Perth" , 0x0247E0 },
- { "Australia/Queensland" , 0x0248BE },
- { "Australia/South" , 0x024970 },
- { "Australia/Sydney" , 0x024C93 },
- { "Australia/Tasmania" , 0x024FD6 },
- { "Australia/Victoria" , 0x025321 },
- { "Australia/West" , 0x025644 },
- { "Australia/Yancowinna" , 0x025700 },
- { "Brazil/Acre" , 0x025A28 },
- { "Brazil/DeNoronha" , 0x025B2C },
- { "Brazil/East" , 0x025C4C },
- { "Brazil/West" , 0x025F29 },
- { "Canada/Atlantic" , 0x026021 },
- { "Canada/Central" , 0x026509 },
- { "Canada/East-Saskatchewan" , 0x026E13 },
- { "Canada/Eastern" , 0x026923 },
- { "Canada/Mountain" , 0x026F9C },
- { "Canada/Newfoundland" , 0x027312 },
- { "Canada/Pacific" , 0x02783D },
- { "Canada/Saskatchewan" , 0x027C56 },
- { "Canada/Yukon" , 0x027DDF },
- { "CET" , 0x0280E2 },
- { "Chile/Continental" , 0x0283EB },
- { "Chile/EasterIsland" , 0x028786 },
- { "CST6CDT" , 0x028AC8 },
- { "Cuba" , 0x028E19 },
- { "EET" , 0x02918C },
- { "Egypt" , 0x02943F },
- { "Eire" , 0x029826 },
- { "EST" , 0x029D37 },
- { "EST5EDT" , 0x029D7B },
- { "Etc/GMT" , 0x02A0CC },
- { "Etc/GMT+0" , 0x02A198 },
- { "Etc/GMT+1" , 0x02A222 },
- { "Etc/GMT+10" , 0x02A2AF },
- { "Etc/GMT+11" , 0x02A33D },
- { "Etc/GMT+12" , 0x02A3CB },
- { "Etc/GMT+2" , 0x02A4E6 },
- { "Etc/GMT+3" , 0x02A572 },
- { "Etc/GMT+4" , 0x02A5FE },
- { "Etc/GMT+5" , 0x02A68A },
- { "Etc/GMT+6" , 0x02A716 },
- { "Etc/GMT+7" , 0x02A7A2 },
- { "Etc/GMT+8" , 0x02A82E },
- { "Etc/GMT+9" , 0x02A8BA },
- { "Etc/GMT-0" , 0x02A154 },
- { "Etc/GMT-1" , 0x02A1DC },
- { "Etc/GMT-10" , 0x02A268 },
- { "Etc/GMT-11" , 0x02A2F6 },
- { "Etc/GMT-12" , 0x02A384 },
- { "Etc/GMT-13" , 0x02A412 },
- { "Etc/GMT-14" , 0x02A459 },
- { "Etc/GMT-2" , 0x02A4A0 },
- { "Etc/GMT-3" , 0x02A52C },
- { "Etc/GMT-4" , 0x02A5B8 },
- { "Etc/GMT-5" , 0x02A644 },
- { "Etc/GMT-6" , 0x02A6D0 },
- { "Etc/GMT-7" , 0x02A75C },
- { "Etc/GMT-8" , 0x02A7E8 },
- { "Etc/GMT-9" , 0x02A874 },
- { "Etc/GMT0" , 0x02A110 },
- { "Etc/Greenwich" , 0x02A900 },
- { "Etc/UCT" , 0x02A944 },
- { "Etc/Universal" , 0x02A988 },
- { "Etc/UTC" , 0x02A9CC },
- { "Etc/Zulu" , 0x02AA10 },
- { "Europe/Amsterdam" , 0x02AA54 },
- { "Europe/Andorra" , 0x02AE92 },
- { "Europe/Athens" , 0x02B10E },
- { "Europe/Belfast" , 0x02B451 },
- { "Europe/Belgrade" , 0x02B988 },
- { "Europe/Berlin" , 0x02BC51 },
- { "Europe/Bratislava" , 0x02BFB5 },
- { "Europe/Brussels" , 0x02C2E7 },
- { "Europe/Bucharest" , 0x02C71E },
- { "Europe/Budapest" , 0x02CA48 },
- { "Europe/Busingen" , 0x02CDB1 },
- { "Europe/Chisinau" , 0x02D068 },
- { "Europe/Copenhagen" , 0x02D3F6 },
- { "Europe/Dublin" , 0x02D700 },
- { "Europe/Gibraltar" , 0x02DC11 },
- { "Europe/Guernsey" , 0x02E068 },
- { "Europe/Helsinki" , 0x02E59F },
- { "Europe/Isle_of_Man" , 0x02E855 },
- { "Europe/Istanbul" , 0x02ED8C },
- { "Europe/Jersey" , 0x02F179 },
- { "Europe/Kaliningrad" , 0x02F6B0 },
- { "Europe/Kiev" , 0x02F91B },
- { "Europe/Lisbon" , 0x02FC37 },
- { "Europe/Ljubljana" , 0x03013B },
- { "Europe/London" , 0x030404 },
- { "Europe/Luxembourg" , 0x03093B },
- { "Europe/Madrid" , 0x030D91 },
- { "Europe/Malta" , 0x031157 },
- { "Europe/Mariehamn" , 0x031510 },
- { "Europe/Minsk" , 0x0317C6 },
- { "Europe/Monaco" , 0x0319D4 },
- { "Europe/Moscow" , 0x031E0F },
- { "Europe/Nicosia" , 0x032069 },
- { "Europe/Oslo" , 0x032351 },
- { "Europe/Paris" , 0x032683 },
- { "Europe/Podgorica" , 0x032AC9 },
- { "Europe/Prague" , 0x032D92 },
- { "Europe/Riga" , 0x0330C4 },
- { "Europe/Rome" , 0x033409 },
- { "Europe/Samara" , 0x0337CC },
- { "Europe/San_Marino" , 0x033A35 },
- { "Europe/Sarajevo" , 0x033DF8 },
- { "Europe/Simferopol" , 0x0340C1 },
- { "Europe/Skopje" , 0x034312 },
- { "Europe/Sofia" , 0x0345DB },
- { "Europe/Stockholm" , 0x0348E3 },
- { "Europe/Tallinn" , 0x034B92 },
- { "Europe/Tirane" , 0x034ECC },
- { "Europe/Tiraspol" , 0x0351D2 },
- { "Europe/Uzhgorod" , 0x035560 },
- { "Europe/Vaduz" , 0x035877 },
- { "Europe/Vatican" , 0x035B26 },
- { "Europe/Vienna" , 0x035EE9 },
- { "Europe/Vilnius" , 0x036216 },
- { "Europe/Volgograd" , 0x036555 },
- { "Europe/Warsaw" , 0x036776 },
- { "Europe/Zagreb" , 0x036B57 },
- { "Europe/Zaporozhye" , 0x036E20 },
- { "Europe/Zurich" , 0x037161 },
- { "Factory" , 0x037410 },
- { "GB" , 0x037481 },
- { "GB-Eire" , 0x0379B8 },
- { "GMT" , 0x037EEF },
- { "GMT+0" , 0x037FBB },
- { "GMT-0" , 0x037F77 },
- { "GMT0" , 0x037F33 },
- { "Greenwich" , 0x037FFF },
- { "Hongkong" , 0x038043 },
- { "HST" , 0x038205 },
- { "Iceland" , 0x038249 },
- { "Indian/Antananarivo" , 0x038402 },
- { "Indian/Chagos" , 0x038476 },
- { "Indian/Christmas" , 0x0384D8 },
- { "Indian/Cocos" , 0x03851C },
- { "Indian/Comoro" , 0x038560 },
- { "Indian/Kerguelen" , 0x0385B5 },
- { "Indian/Mahe" , 0x03860A },
- { "Indian/Maldives" , 0x03865F },
- { "Indian/Mauritius" , 0x0386B4 },
- { "Indian/Mayotte" , 0x03872A },
- { "Indian/Reunion" , 0x03877F },
- { "Iran" , 0x0387D4 },
- { "Israel" , 0x038A42 },
- { "Jamaica" , 0x038D71 },
- { "Japan" , 0x038E36 },
- { "Kwajalein" , 0x038EC0 },
- { "Libya" , 0x038F23 },
- { "MET" , 0x03902C },
- { "Mexico/BajaNorte" , 0x039335 },
- { "Mexico/BajaSur" , 0x03969E },
- { "Mexico/General" , 0x0398E3 },
- { "MST" , 0x039B41 },
- { "MST7MDT" , 0x039B85 },
- { "Navajo" , 0x039ED6 },
- { "NZ" , 0x03A24F },
- { "NZ-CHAT" , 0x03A5CD },
- { "Pacific/Apia" , 0x03A8B1 },
- { "Pacific/Auckland" , 0x03AA4D },
- { "Pacific/Chatham" , 0x03ADD9 },
- { "Pacific/Chuuk" , 0x03B0CC },
- { "Pacific/Easter" , 0x03B125 },
- { "Pacific/Efate" , 0x03B474 },
- { "Pacific/Enderbury" , 0x03B53A },
- { "Pacific/Fakaofo" , 0x03B5A8 },
- { "Pacific/Fiji" , 0x03B5F9 },
- { "Pacific/Funafuti" , 0x03B78C },
- { "Pacific/Galapagos" , 0x03B7D0 },
- { "Pacific/Gambier" , 0x03B848 },
- { "Pacific/Guadalcanal" , 0x03B8AD },
- { "Pacific/Guam" , 0x03B902 },
- { "Pacific/Honolulu" , 0x03B958 },
- { "Pacific/Johnston" , 0x03B9CF },
- { "Pacific/Kiritimati" , 0x03BA4E },
- { "Pacific/Kosrae" , 0x03BAB9 },
- { "Pacific/Kwajalein" , 0x03BB16 },
- { "Pacific/Majuro" , 0x03BB82 },
- { "Pacific/Marquesas" , 0x03BBE1 },
- { "Pacific/Midway" , 0x03BC48 },
- { "Pacific/Nauru" , 0x03BCD2 },
- { "Pacific/Niue" , 0x03BD4A },
- { "Pacific/Norfolk" , 0x03BDA8 },
- { "Pacific/Noumea" , 0x03BDFD },
- { "Pacific/Pago_Pago" , 0x03BE8D },
- { "Pacific/Palau" , 0x03BF04 },
- { "Pacific/Pitcairn" , 0x03BF48 },
- { "Pacific/Pohnpei" , 0x03BF9D },
- { "Pacific/Ponape" , 0x03BFF2 },
- { "Pacific/Port_Moresby" , 0x03C037 },
- { "Pacific/Rarotonga" , 0x03C07B },
- { "Pacific/Saipan" , 0x03C157 },
- { "Pacific/Samoa" , 0x03C1BA },
- { "Pacific/Tahiti" , 0x03C231 },
- { "Pacific/Tarawa" , 0x03C296 },
- { "Pacific/Tongatapu" , 0x03C2EA },
- { "Pacific/Truk" , 0x03C376 },
- { "Pacific/Wake" , 0x03C3BB },
- { "Pacific/Wallis" , 0x03C40B },
- { "Pacific/Yap" , 0x03C44F },
- { "Poland" , 0x03C494 },
- { "Portugal" , 0x03C875 },
- { "PRC" , 0x03CD71 },
- { "PST8PDT" , 0x03CE11 },
- { "ROC" , 0x03D162 },
- { "ROK" , 0x03D293 },
- { "Singapore" , 0x03D35A },
- { "Turkey" , 0x03D411 },
- { "UCT" , 0x03D7FE },
- { "Universal" , 0x03D842 },
- { "US/Alaska" , 0x03D886 },
- { "US/Aleutian" , 0x03DBEF },
- { "US/Arizona" , 0x03DF55 },
- { "US/Central" , 0x03DFE3 },
- { "US/East-Indiana" , 0x03E9ED },
- { "US/Eastern" , 0x03E4EE },
- { "US/Hawaii" , 0x03EC57 },
- { "US/Indiana-Starke" , 0x03ECC8 },
- { "US/Michigan" , 0x03F039 },
- { "US/Mountain" , 0x03F370 },
- { "US/Pacific" , 0x03F6E9 },
- { "US/Pacific-New" , 0x03FAEE },
- { "US/Samoa" , 0x03FEF3 },
- { "UTC" , 0x03FF6A },
- { "W-SU" , 0x040261 },
- { "WET" , 0x03FFAE },
- { "Zulu" , 0x0404A4 },
+ { "Africa/Nouakchott" , 0x001DB1 },
+ { "Africa/Ouagadougou" , 0x001E06 },
+ { "Africa/Porto-Novo" , 0x001E5B },
+ { "Africa/Sao_Tome" , 0x001EB0 },
+ { "Africa/Timbuktu" , 0x001F05 },
+ { "Africa/Tripoli" , 0x001F5A },
+ { "Africa/Tunis" , 0x002063 },
+ { "Africa/Windhoek" , 0x002175 },
+ { "America/Adak" , 0x0023BC },
+ { "America/Anchorage" , 0x002732 },
+ { "America/Anguilla" , 0x002AA6 },
+ { "America/Antigua" , 0x002AFB },
+ { "America/Araguaina" , 0x002B61 },
+ { "America/Argentina/Buenos_Aires" , 0x002CC6 },
+ { "America/Argentina/Catamarca" , 0x002E74 },
+ { "America/Argentina/ComodRivadavia" , 0x003035 },
+ { "America/Argentina/Cordoba" , 0x0031DB },
+ { "America/Argentina/Jujuy" , 0x0033B0 },
+ { "America/Argentina/La_Rioja" , 0x003564 },
+ { "America/Argentina/Mendoza" , 0x00371C },
+ { "America/Argentina/Rio_Gallegos" , 0x0038DC },
+ { "America/Argentina/Salta" , 0x003A91 },
+ { "America/Argentina/San_Juan" , 0x003C3D },
+ { "America/Argentina/San_Luis" , 0x003DF5 },
+ { "America/Argentina/Tucuman" , 0x003FBB },
+ { "America/Argentina/Ushuaia" , 0x004177 },
+ { "America/Aruba" , 0x004332 },
+ { "America/Asuncion" , 0x004398 },
+ { "America/Atikokan" , 0x00467D },
+ { "America/Atka" , 0x004753 },
+ { "America/Bahia" , 0x004AB9 },
+ { "America/Bahia_Banderas" , 0x004C4C },
+ { "America/Barbados" , 0x004EC5 },
+ { "America/Belem" , 0x004F5F },
+ { "America/Belize" , 0x00505A },
+ { "America/Blanc-Sablon" , 0x0051D6 },
+ { "America/Boa_Vista" , 0x00528A },
+ { "America/Bogota" , 0x005393 },
+ { "America/Boise" , 0x0053FF },
+ { "America/Buenos_Aires" , 0x005796 },
+ { "America/Cambridge_Bay" , 0x00592F },
+ { "America/Campo_Grande" , 0x005C57 },
+ { "America/Cancun" , 0x005F46 },
+ { "America/Caracas" , 0x006188 },
+ { "America/Catamarca" , 0x0061EF },
+ { "America/Cayenne" , 0x006395 },
+ { "America/Cayman" , 0x0063F7 },
+ { "America/Chicago" , 0x00644C },
+ { "America/Chihuahua" , 0x006963 },
+ { "America/Coral_Harbour" , 0x006BCE },
+ { "America/Cordoba" , 0x006C60 },
+ { "America/Costa_Rica" , 0x006E06 },
+ { "America/Creston" , 0x006E90 },
+ { "America/Cuiaba" , 0x006F1C },
+ { "America/Curacao" , 0x0071FA },
+ { "America/Danmarkshavn" , 0x007260 },
+ { "America/Dawson" , 0x0073A4 },
+ { "America/Dawson_Creek" , 0x0076C1 },
+ { "America/Denver" , 0x00789B },
+ { "America/Detroit" , 0x007C21 },
+ { "America/Dominica" , 0x007F80 },
+ { "America/Edmonton" , 0x007FD5 },
+ { "America/Eirunepe" , 0x00838D },
+ { "America/El_Salvador" , 0x0084A5 },
+ { "America/Ensenada" , 0x00851A },
+ { "America/Fort_Wayne" , 0x0089C1 },
+ { "America/Fortaleza" , 0x008883 },
+ { "America/Glace_Bay" , 0x008C2B },
+ { "America/Godthab" , 0x008FA2 },
+ { "America/Goose_Bay" , 0x009266 },
+ { "America/Grand_Turk" , 0x009723 },
+ { "America/Grenada" , 0x0098F8 },
+ { "America/Guadeloupe" , 0x00994D },
+ { "America/Guatemala" , 0x0099A2 },
+ { "America/Guayaquil" , 0x009A2B },
+ { "America/Guyana" , 0x009A88 },
+ { "America/Halifax" , 0x009B09 },
+ { "America/Havana" , 0x00A01F },
+ { "America/Hermosillo" , 0x00A392 },
+ { "America/Indiana/Indianapolis" , 0x00A470 },
+ { "America/Indiana/Knox" , 0x00A701 },
+ { "America/Indiana/Marengo" , 0x00AA98 },
+ { "America/Indiana/Petersburg" , 0x00AD3E },
+ { "America/Indiana/Tell_City" , 0x00B28B },
+ { "America/Indiana/Vevay" , 0x00B524 },
+ { "America/Indiana/Vincennes" , 0x00B75F },
+ { "America/Indiana/Winamac" , 0x00BA13 },
+ { "America/Indianapolis" , 0x00B021 },
+ { "America/Inuvik" , 0x00BCCC },
+ { "America/Iqaluit" , 0x00BFC3 },
+ { "America/Jamaica" , 0x00C2E5 },
+ { "America/Jujuy" , 0x00C3AA },
+ { "America/Juneau" , 0x00C554 },
+ { "America/Kentucky/Louisville" , 0x00C8D2 },
+ { "America/Kentucky/Monticello" , 0x00CCF0 },
+ { "America/Knox_IN" , 0x00D075 },
+ { "America/Kralendijk" , 0x00D3E6 },
+ { "America/La_Paz" , 0x00D44C },
+ { "America/Lima" , 0x00D4B3 },
+ { "America/Los_Angeles" , 0x00D55B },
+ { "America/Louisville" , 0x00D96C },
+ { "America/Lower_Princes" , 0x00DD61 },
+ { "America/Maceio" , 0x00DDC7 },
+ { "America/Managua" , 0x00DF01 },
+ { "America/Manaus" , 0x00DFB4 },
+ { "America/Marigot" , 0x00E0B6 },
+ { "America/Martinique" , 0x00E10B },
+ { "America/Matamoros" , 0x00E177 },
+ { "America/Mazatlan" , 0x00E3D0 },
+ { "America/Mendoza" , 0x00E63D },
+ { "America/Menominee" , 0x00E7F1 },
+ { "America/Merida" , 0x00EB72 },
+ { "America/Metlakatla" , 0x00EDAD },
+ { "America/Mexico_City" , 0x00EEE8 },
+ { "America/Miquelon" , 0x00F163 },
+ { "America/Moncton" , 0x00F3D5 },
+ { "America/Monterrey" , 0x00F86C },
+ { "America/Montevideo" , 0x00FACF },
+ { "America/Montreal" , 0x00FDE1 },
+ { "America/Montserrat" , 0x0102D1 },
+ { "America/Nassau" , 0x010326 },
+ { "America/New_York" , 0x01066B },
+ { "America/Nipigon" , 0x010B76 },
+ { "America/Nome" , 0x010EC7 },
+ { "America/Noronha" , 0x011245 },
+ { "America/North_Dakota/Beulah" , 0x011375 },
+ { "America/North_Dakota/Center" , 0x011709 },
+ { "America/North_Dakota/New_Salem" , 0x011A9D },
+ { "America/Ojinaga" , 0x011E46 },
+ { "America/Panama" , 0x0120A7 },
+ { "America/Pangnirtung" , 0x0120FC },
+ { "America/Paramaribo" , 0x012432 },
+ { "America/Phoenix" , 0x0124C4 },
+ { "America/Port-au-Prince" , 0x012582 },
+ { "America/Port_of_Spain" , 0x0128A6 },
+ { "America/Porto_Acre" , 0x0127A2 },
+ { "America/Porto_Velho" , 0x0128FB },
+ { "America/Puerto_Rico" , 0x0129F1 },
+ { "America/Rainy_River" , 0x012A5C },
+ { "America/Rankin_Inlet" , 0x012D94 },
+ { "America/Recife" , 0x01307A },
+ { "America/Regina" , 0x0131A4 },
+ { "America/Resolute" , 0x013362 },
+ { "America/Rio_Branco" , 0x01364A },
+ { "America/Rosario" , 0x013752 },
+ { "America/Santa_Isabel" , 0x0138F8 },
+ { "America/Santarem" , 0x013C9B },
+ { "America/Santiago" , 0x013DA0 },
+ { "America/Santo_Domingo" , 0x014149 },
+ { "America/Sao_Paulo" , 0x01420F },
+ { "America/Scoresbysund" , 0x01451E },
+ { "America/Shiprock" , 0x01480C },
+ { "America/Sitka" , 0x014B85 },
+ { "America/St_Barthelemy" , 0x014F0D },
+ { "America/St_Johns" , 0x014F62 },
+ { "America/St_Kitts" , 0x0154B5 },
+ { "America/St_Lucia" , 0x01550A },
+ { "America/St_Thomas" , 0x01555F },
+ { "America/St_Vincent" , 0x0155B4 },
+ { "America/Swift_Current" , 0x015609 },
+ { "America/Tegucigalpa" , 0x01572A },
+ { "America/Thule" , 0x0157A9 },
+ { "America/Thunder_Bay" , 0x0159F0 },
+ { "America/Tijuana" , 0x015D39 },
+ { "America/Toronto" , 0x0160D2 },
+ { "America/Tortola" , 0x0165F2 },
+ { "America/Vancouver" , 0x016647 },
+ { "America/Virgin" , 0x016A84 },
+ { "America/Whitehorse" , 0x016AD9 },
+ { "America/Winnipeg" , 0x016DF6 },
+ { "America/Yakutat" , 0x017236 },
+ { "America/Yellowknife" , 0x0175A1 },
+ { "Antarctica/Casey" , 0x0178B1 },
+ { "Antarctica/Davis" , 0x01794F },
+ { "Antarctica/DumontDUrville" , 0x0179F0 },
+ { "Antarctica/Macquarie" , 0x017A81 },
+ { "Antarctica/Mawson" , 0x017CCE },
+ { "Antarctica/McMurdo" , 0x017D4A },
+ { "Antarctica/Palmer" , 0x0180F5 },
+ { "Antarctica/Rothera" , 0x018411 },
+ { "Antarctica/South_Pole" , 0x018487 },
+ { "Antarctica/Syowa" , 0x018805 },
+ { "Antarctica/Troll" , 0x018873 },
+ { "Antarctica/Vostok" , 0x018A45 },
+ { "Arctic/Longyearbyen" , 0x018AB6 },
+ { "Asia/Aden" , 0x018DE8 },
+ { "Asia/Almaty" , 0x018E3D },
+ { "Asia/Amman" , 0x018FBC },
+ { "Asia/Anadyr" , 0x019272 },
+ { "Asia/Aqtau" , 0x019474 },
+ { "Asia/Aqtobe" , 0x019673 },
+ { "Asia/Ashgabat" , 0x01982B },
+ { "Asia/Ashkhabad" , 0x019948 },
+ { "Asia/Baghdad" , 0x019A65 },
+ { "Asia/Bahrain" , 0x019BDA },
+ { "Asia/Baku" , 0x019C40 },
+ { "Asia/Bangkok" , 0x019F28 },
+ { "Asia/Beirut" , 0x019F7D },
+ { "Asia/Bishkek" , 0x01A28A },
+ { "Asia/Brunei" , 0x01A436 },
+ { "Asia/Calcutta" , 0x01A498 },
+ { "Asia/Chita" , 0x01A511 },
+ { "Asia/Choibalsan" , 0x01A726 },
+ { "Asia/Chongqing" , 0x01A89F },
+ { "Asia/Chungking" , 0x01A93F },
+ { "Asia/Colombo" , 0x01A9DF },
+ { "Asia/Dacca" , 0x01AA7B },
+ { "Asia/Damascus" , 0x01AB21 },
+ { "Asia/Dhaka" , 0x01AE71 },
+ { "Asia/Dili" , 0x01AF17 },
+ { "Asia/Dubai" , 0x01AFA1 },
+ { "Asia/Dushanbe" , 0x01AFF6 },
+ { "Asia/Gaza" , 0x01B0F9 },
+ { "Asia/Harbin" , 0x01B44C },
+ { "Asia/Hebron" , 0x01B4EC },
+ { "Asia/Ho_Chi_Minh" , 0x01B848 },
+ { "Asia/Hong_Kong" , 0x01B8C0 },
+ { "Asia/Hovd" , 0x01BA82 },
+ { "Asia/Irkutsk" , 0x01BBFA },
+ { "Asia/Istanbul" , 0x01BDE5 },
+ { "Asia/Jakarta" , 0x01C1D2 },
+ { "Asia/Jayapura" , 0x01C27C },
+ { "Asia/Jerusalem" , 0x01C319 },
+ { "Asia/Kabul" , 0x01C648 },
+ { "Asia/Kamchatka" , 0x01C699 },
+ { "Asia/Karachi" , 0x01C892 },
+ { "Asia/Kashgar" , 0x01C947 },
+ { "Asia/Kathmandu" , 0x01C99C },
+ { "Asia/Katmandu" , 0x01CA02 },
+ { "Asia/Khandyga" , 0x01CA68 },
+ { "Asia/Kolkata" , 0x01CC92 },
+ { "Asia/Krasnoyarsk" , 0x01CD0B },
+ { "Asia/Kuala_Lumpur" , 0x01CEF8 },
+ { "Asia/Kuching" , 0x01CFB5 },
+ { "Asia/Kuwait" , 0x01D0A3 },
+ { "Asia/Macao" , 0x01D0F8 },
+ { "Asia/Macau" , 0x01D233 },
+ { "Asia/Magadan" , 0x01D36E },
+ { "Asia/Makassar" , 0x01D572 },
+ { "Asia/Manila" , 0x01D637 },
+ { "Asia/Muscat" , 0x01D6BC },
+ { "Asia/Nicosia" , 0x01D711 },
+ { "Asia/Novokuznetsk" , 0x01D9F9 },
+ { "Asia/Novosibirsk" , 0x01DC19 },
+ { "Asia/Omsk" , 0x01DE09 },
+ { "Asia/Oral" , 0x01DFF5 },
+ { "Asia/Phnom_Penh" , 0x01E1C5 },
+ { "Asia/Pontianak" , 0x01E23D },
+ { "Asia/Pyongyang" , 0x01E2FF },
+ { "Asia/Qatar" , 0x01E38F },
+ { "Asia/Qyzylorda" , 0x01E3F5 },
+ { "Asia/Rangoon" , 0x01E5CB },
+ { "Asia/Riyadh" , 0x01E643 },
+ { "Asia/Saigon" , 0x01E698 },
+ { "Asia/Sakhalin" , 0x01E710 },
+ { "Asia/Samarkand" , 0x01E90D },
+ { "Asia/Seoul" , 0x01EA43 },
+ { "Asia/Shanghai" , 0x01EB0A },
+ { "Asia/Singapore" , 0x01EBB6 },
+ { "Asia/Srednekolymsk" , 0x01EC6D },
+ { "Asia/Taipei" , 0x01EE6D },
+ { "Asia/Tashkent" , 0x01EF9E },
+ { "Asia/Tbilisi" , 0x01F0CF },
+ { "Asia/Tehran" , 0x01F289 },
+ { "Asia/Tel_Aviv" , 0x01F4F7 },
+ { "Asia/Thimbu" , 0x01F826 },
+ { "Asia/Thimphu" , 0x01F88C },
+ { "Asia/Tokyo" , 0x01F8F2 },
+ { "Asia/Ujung_Pandang" , 0x01F97C },
+ { "Asia/Ulaanbaatar" , 0x01F9F9 },
+ { "Asia/Ulan_Bator" , 0x01FB54 },
+ { "Asia/Urumqi" , 0x01FCA1 },
+ { "Asia/Ust-Nera" , 0x01FD03 },
+ { "Asia/Vientiane" , 0x01FF15 },
+ { "Asia/Vladivostok" , 0x01FF8D },
+ { "Asia/Yakutsk" , 0x020177 },
+ { "Asia/Yekaterinburg" , 0x020361 },
+ { "Asia/Yerevan" , 0x020582 },
+ { "Atlantic/Azores" , 0x020782 },
+ { "Atlantic/Bermuda" , 0x020C85 },
+ { "Atlantic/Canary" , 0x020F66 },
+ { "Atlantic/Cape_Verde" , 0x02123C },
+ { "Atlantic/Faeroe" , 0x0212B5 },
+ { "Atlantic/Faroe" , 0x021559 },
+ { "Atlantic/Jan_Mayen" , 0x0217FD },
+ { "Atlantic/Madeira" , 0x021B2F },
+ { "Atlantic/Reykjavik" , 0x022038 },
+ { "Atlantic/South_Georgia" , 0x0221F1 },
+ { "Atlantic/St_Helena" , 0x022403 },
+ { "Atlantic/Stanley" , 0x022235 },
+ { "Australia/ACT" , 0x022458 },
+ { "Australia/Adelaide" , 0x02277B },
+ { "Australia/Brisbane" , 0x022AAD },
+ { "Australia/Broken_Hill" , 0x022B7A },
+ { "Australia/Canberra" , 0x022EBE },
+ { "Australia/Currie" , 0x0231E1 },
+ { "Australia/Darwin" , 0x02351A },
+ { "Australia/Eucla" , 0x0235A6 },
+ { "Australia/Hobart" , 0x023682 },
+ { "Australia/LHI" , 0x0239E6 },
+ { "Australia/Lindeman" , 0x023C87 },
+ { "Australia/Lord_Howe" , 0x023D6E },
+ { "Australia/Melbourne" , 0x02401F },
+ { "Australia/North" , 0x02434A },
+ { "Australia/NSW" , 0x0243C4 },
+ { "Australia/Perth" , 0x0246E7 },
+ { "Australia/Queensland" , 0x0247C5 },
+ { "Australia/South" , 0x024877 },
+ { "Australia/Sydney" , 0x024B9A },
+ { "Australia/Tasmania" , 0x024EDD },
+ { "Australia/Victoria" , 0x025228 },
+ { "Australia/West" , 0x02554B },
+ { "Australia/Yancowinna" , 0x025607 },
+ { "Brazil/Acre" , 0x02592F },
+ { "Brazil/DeNoronha" , 0x025A33 },
+ { "Brazil/East" , 0x025B53 },
+ { "Brazil/West" , 0x025E30 },
+ { "Canada/Atlantic" , 0x025F28 },
+ { "Canada/Central" , 0x026410 },
+ { "Canada/East-Saskatchewan" , 0x026D1A },
+ { "Canada/Eastern" , 0x02682A },
+ { "Canada/Mountain" , 0x026EA3 },
+ { "Canada/Newfoundland" , 0x027219 },
+ { "Canada/Pacific" , 0x027744 },
+ { "Canada/Saskatchewan" , 0x027B5D },
+ { "Canada/Yukon" , 0x027CE6 },
+ { "CET" , 0x027FE9 },
+ { "Chile/Continental" , 0x0282F2 },
+ { "Chile/EasterIsland" , 0x02868D },
+ { "CST6CDT" , 0x0289CF },
+ { "Cuba" , 0x028D20 },
+ { "EET" , 0x029093 },
+ { "Egypt" , 0x029346 },
+ { "Eire" , 0x02972D },
+ { "EST" , 0x029C3E },
+ { "EST5EDT" , 0x029C82 },
+ { "Etc/GMT" , 0x029FD3 },
+ { "Etc/GMT+0" , 0x02A09F },
+ { "Etc/GMT+1" , 0x02A129 },
+ { "Etc/GMT+10" , 0x02A1B6 },
+ { "Etc/GMT+11" , 0x02A244 },
+ { "Etc/GMT+12" , 0x02A2D2 },
+ { "Etc/GMT+2" , 0x02A3ED },
+ { "Etc/GMT+3" , 0x02A479 },
+ { "Etc/GMT+4" , 0x02A505 },
+ { "Etc/GMT+5" , 0x02A591 },
+ { "Etc/GMT+6" , 0x02A61D },
+ { "Etc/GMT+7" , 0x02A6A9 },
+ { "Etc/GMT+8" , 0x02A735 },
+ { "Etc/GMT+9" , 0x02A7C1 },
+ { "Etc/GMT-0" , 0x02A05B },
+ { "Etc/GMT-1" , 0x02A0E3 },
+ { "Etc/GMT-10" , 0x02A16F },
+ { "Etc/GMT-11" , 0x02A1FD },
+ { "Etc/GMT-12" , 0x02A28B },
+ { "Etc/GMT-13" , 0x02A319 },
+ { "Etc/GMT-14" , 0x02A360 },
+ { "Etc/GMT-2" , 0x02A3A7 },
+ { "Etc/GMT-3" , 0x02A433 },
+ { "Etc/GMT-4" , 0x02A4BF },
+ { "Etc/GMT-5" , 0x02A54B },
+ { "Etc/GMT-6" , 0x02A5D7 },
+ { "Etc/GMT-7" , 0x02A663 },
+ { "Etc/GMT-8" , 0x02A6EF },
+ { "Etc/GMT-9" , 0x02A77B },
+ { "Etc/GMT0" , 0x02A017 },
+ { "Etc/Greenwich" , 0x02A807 },
+ { "Etc/UCT" , 0x02A84B },
+ { "Etc/Universal" , 0x02A88F },
+ { "Etc/UTC" , 0x02A8D3 },
+ { "Etc/Zulu" , 0x02A917 },
+ { "Europe/Amsterdam" , 0x02A95B },
+ { "Europe/Andorra" , 0x02AD99 },
+ { "Europe/Athens" , 0x02B015 },
+ { "Europe/Belfast" , 0x02B358 },
+ { "Europe/Belgrade" , 0x02B88F },
+ { "Europe/Berlin" , 0x02BB58 },
+ { "Europe/Bratislava" , 0x02BEBC },
+ { "Europe/Brussels" , 0x02C1EE },
+ { "Europe/Bucharest" , 0x02C625 },
+ { "Europe/Budapest" , 0x02C94F },
+ { "Europe/Busingen" , 0x02CCB8 },
+ { "Europe/Chisinau" , 0x02CF6F },
+ { "Europe/Copenhagen" , 0x02D2FD },
+ { "Europe/Dublin" , 0x02D607 },
+ { "Europe/Gibraltar" , 0x02DB18 },
+ { "Europe/Guernsey" , 0x02DF6F },
+ { "Europe/Helsinki" , 0x02E4A6 },
+ { "Europe/Isle_of_Man" , 0x02E75C },
+ { "Europe/Istanbul" , 0x02EC93 },
+ { "Europe/Jersey" , 0x02F080 },
+ { "Europe/Kaliningrad" , 0x02F5B7 },
+ { "Europe/Kiev" , 0x02F822 },
+ { "Europe/Lisbon" , 0x02FB3E },
+ { "Europe/Ljubljana" , 0x030042 },
+ { "Europe/London" , 0x03030B },
+ { "Europe/Luxembourg" , 0x030842 },
+ { "Europe/Madrid" , 0x030C98 },
+ { "Europe/Malta" , 0x03105E },
+ { "Europe/Mariehamn" , 0x031417 },
+ { "Europe/Minsk" , 0x0316CD },
+ { "Europe/Monaco" , 0x0318DB },
+ { "Europe/Moscow" , 0x031D16 },
+ { "Europe/Nicosia" , 0x031F70 },
+ { "Europe/Oslo" , 0x032258 },
+ { "Europe/Paris" , 0x03258A },
+ { "Europe/Podgorica" , 0x0329D0 },
+ { "Europe/Prague" , 0x032C99 },
+ { "Europe/Riga" , 0x032FCB },
+ { "Europe/Rome" , 0x033310 },
+ { "Europe/Samara" , 0x0336D3 },
+ { "Europe/San_Marino" , 0x03393C },
+ { "Europe/Sarajevo" , 0x033CFF },
+ { "Europe/Simferopol" , 0x033FC8 },
+ { "Europe/Skopje" , 0x034219 },
+ { "Europe/Sofia" , 0x0344E2 },
+ { "Europe/Stockholm" , 0x0347EA },
+ { "Europe/Tallinn" , 0x034A99 },
+ { "Europe/Tirane" , 0x034DD3 },
+ { "Europe/Tiraspol" , 0x0350D9 },
+ { "Europe/Uzhgorod" , 0x035467 },
+ { "Europe/Vaduz" , 0x03577E },
+ { "Europe/Vatican" , 0x035A2D },
+ { "Europe/Vienna" , 0x035DF0 },
+ { "Europe/Vilnius" , 0x03611D },
+ { "Europe/Volgograd" , 0x03645C },
+ { "Europe/Warsaw" , 0x03667D },
+ { "Europe/Zagreb" , 0x036A5E },
+ { "Europe/Zaporozhye" , 0x036D27 },
+ { "Europe/Zurich" , 0x037068 },
+ { "Factory" , 0x037317 },
+ { "GB" , 0x037388 },
+ { "GB-Eire" , 0x0378BF },
+ { "GMT" , 0x037DF6 },
+ { "GMT+0" , 0x037EC2 },
+ { "GMT-0" , 0x037E7E },
+ { "GMT0" , 0x037E3A },
+ { "Greenwich" , 0x037F06 },
+ { "Hongkong" , 0x037F4A },
+ { "HST" , 0x03810C },
+ { "Iceland" , 0x038150 },
+ { "Indian/Antananarivo" , 0x038309 },
+ { "Indian/Chagos" , 0x03837D },
+ { "Indian/Christmas" , 0x0383DF },
+ { "Indian/Cocos" , 0x038423 },
+ { "Indian/Comoro" , 0x038467 },
+ { "Indian/Kerguelen" , 0x0384BC },
+ { "Indian/Mahe" , 0x038511 },
+ { "Indian/Maldives" , 0x038566 },
+ { "Indian/Mauritius" , 0x0385BB },
+ { "Indian/Mayotte" , 0x038631 },
+ { "Indian/Reunion" , 0x038686 },
+ { "Iran" , 0x0386DB },
+ { "Israel" , 0x038949 },
+ { "Jamaica" , 0x038C78 },
+ { "Japan" , 0x038D3D },
+ { "Kwajalein" , 0x038DC7 },
+ { "Libya" , 0x038E2A },
+ { "MET" , 0x038F33 },
+ { "Mexico/BajaNorte" , 0x03923C },
+ { "Mexico/BajaSur" , 0x0395A5 },
+ { "Mexico/General" , 0x0397EA },
+ { "MST" , 0x039A48 },
+ { "MST7MDT" , 0x039A8C },
+ { "Navajo" , 0x039DDD },
+ { "NZ" , 0x03A156 },
+ { "NZ-CHAT" , 0x03A4D4 },
+ { "Pacific/Apia" , 0x03A7B8 },
+ { "Pacific/Auckland" , 0x03A954 },
+ { "Pacific/Chatham" , 0x03ACE0 },
+ { "Pacific/Chuuk" , 0x03AFD3 },
+ { "Pacific/Easter" , 0x03B02C },
+ { "Pacific/Efate" , 0x03B37B },
+ { "Pacific/Enderbury" , 0x03B441 },
+ { "Pacific/Fakaofo" , 0x03B4AF },
+ { "Pacific/Fiji" , 0x03B500 },
+ { "Pacific/Funafuti" , 0x03B693 },
+ { "Pacific/Galapagos" , 0x03B6D7 },
+ { "Pacific/Gambier" , 0x03B74F },
+ { "Pacific/Guadalcanal" , 0x03B7B4 },
+ { "Pacific/Guam" , 0x03B809 },
+ { "Pacific/Honolulu" , 0x03B85F },
+ { "Pacific/Johnston" , 0x03B8D6 },
+ { "Pacific/Kiritimati" , 0x03B955 },
+ { "Pacific/Kosrae" , 0x03B9C0 },
+ { "Pacific/Kwajalein" , 0x03BA1D },
+ { "Pacific/Majuro" , 0x03BA89 },
+ { "Pacific/Marquesas" , 0x03BAE8 },
+ { "Pacific/Midway" , 0x03BB4F },
+ { "Pacific/Nauru" , 0x03BBD9 },
+ { "Pacific/Niue" , 0x03BC51 },
+ { "Pacific/Norfolk" , 0x03BCAF },
+ { "Pacific/Noumea" , 0x03BD04 },
+ { "Pacific/Pago_Pago" , 0x03BD94 },
+ { "Pacific/Palau" , 0x03BE0B },
+ { "Pacific/Pitcairn" , 0x03BE4F },
+ { "Pacific/Pohnpei" , 0x03BEA4 },
+ { "Pacific/Ponape" , 0x03BEF9 },
+ { "Pacific/Port_Moresby" , 0x03BF3E },
+ { "Pacific/Rarotonga" , 0x03BF82 },
+ { "Pacific/Saipan" , 0x03C05E },
+ { "Pacific/Samoa" , 0x03C0C1 },
+ { "Pacific/Tahiti" , 0x03C138 },
+ { "Pacific/Tarawa" , 0x03C19D },
+ { "Pacific/Tongatapu" , 0x03C1F1 },
+ { "Pacific/Truk" , 0x03C27D },
+ { "Pacific/Wake" , 0x03C2C2 },
+ { "Pacific/Wallis" , 0x03C312 },
+ { "Pacific/Yap" , 0x03C356 },
+ { "Poland" , 0x03C39B },
+ { "Portugal" , 0x03C77C },
+ { "PRC" , 0x03CC78 },
+ { "PST8PDT" , 0x03CD18 },
+ { "ROC" , 0x03D069 },
+ { "ROK" , 0x03D19A },
+ { "Singapore" , 0x03D261 },
+ { "Turkey" , 0x03D318 },
+ { "UCT" , 0x03D705 },
+ { "Universal" , 0x03D749 },
+ { "US/Alaska" , 0x03D78D },
+ { "US/Aleutian" , 0x03DAF6 },
+ { "US/Arizona" , 0x03DE5C },
+ { "US/Central" , 0x03DEEA },
+ { "US/East-Indiana" , 0x03E8F4 },
+ { "US/Eastern" , 0x03E3F5 },
+ { "US/Hawaii" , 0x03EB5E },
+ { "US/Indiana-Starke" , 0x03EBCF },
+ { "US/Michigan" , 0x03EF40 },
+ { "US/Mountain" , 0x03F277 },
+ { "US/Pacific" , 0x03F5F0 },
+ { "US/Pacific-New" , 0x03F9F5 },
+ { "US/Samoa" , 0x03FDFA },
+ { "UTC" , 0x03FE71 },
+ { "W-SU" , 0x040168 },
+ { "WET" , 0x03FEB5 },
+ { "Zulu" , 0x0403AB },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[263400] = {
+const unsigned char timelib_timezone_db_data_builtin[263151] = {
/* Africa/Abidjan */
@@ -673,8 +673,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Bangui */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x7D, 0x14,
-0x01, 0x00, 0x00, 0x11, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFD, 0xFA, 0x01, 0x2F, 0x03,
0x9D, 0x00, 0x00, 0x00, 0x00,
@@ -689,7 +689,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Bissau */
0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x91, 0xC4, 0x93, 0x1C,
+0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9D, 0x1C,
0x09, 0x67, 0x61, 0x10, 0x01, 0x02, 0xFF, 0xFF, 0xF1, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00,
0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x69, 0x28, 0x00, 0xFA,
@@ -706,8 +706,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Brazzaville */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x80, 0x2C,
-0x01, 0x00, 0x00, 0x0E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xD1, 0x95, 0x01, 0x29, 0xFA,
0x8D, 0x00, 0x00, 0x00, 0x00,
@@ -911,8 +911,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Douala */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0x68,
-0x01, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x82, 0x48, 0x01, 0x21, 0x75,
0x90, 0x00, 0x00, 0x00, 0x00,
@@ -1047,11 +1047,12 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Kinshasa */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10,
-0x00, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x82, 0xC4, 0x90, 0x01, 0x2A, 0x01, 0x10,
-0x00, 0x00, 0x00, 0x17, 0x77, 0x65, 0x73, 0x74, 0x20, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65,
-0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, 0x6F,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xC4, 0x90, 0x01, 0x2A, 0x01,
+0x10, 0x00, 0x00, 0x00, 0x17, 0x77, 0x65, 0x73, 0x74, 0x20, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52,
+0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, 0x6F,
/* Africa/Lagos */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1064,8 +1065,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Libreville */
0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0xA4,
-0x01, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xE9, 0xFD, 0x01, 0x21, 0x13,
0xE8, 0x00, 0x00, 0x00, 0x00,
@@ -1080,8 +1081,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Luanda */
0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xC4, 0x78, 0x4C,
-0x01, 0x00, 0x00, 0x0C, 0x34, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x41, 0x4F, 0x54,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE6, 0xC0, 0x01, 0x26, 0xD9,
0xC5, 0x00, 0x00, 0x00, 0x00,
@@ -1103,12 +1104,11 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Malabo */
0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x86, 0x44,
-0xF4, 0x9F, 0xBE, 0x80, 0x01, 0x02, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
-0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x0D, 0x18, 0x01, 0x20,
-0x0F, 0x7D, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x0D, 0x18, 0x01, 0x20, 0x0F,
+0x7D, 0x00, 0x00, 0x00, 0x00,
/* Africa/Maputo */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1173,13 +1173,11 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Niamey */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x8C, 0x84,
-0xBC, 0x92, 0xC6, 0x90, 0xED, 0x30, 0x08, 0x80, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0xFC, 0x00,
-0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E,
-0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xF4, 0x32, 0x01, 0x15, 0xE3, 0x52, 0x00,
-0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xF4, 0x32, 0x01, 0x15, 0xE3,
+0x52, 0x00, 0x00, 0x00, 0x00,
/* Africa/Nouakchott */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1199,12 +1197,11 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Africa/Porto-Novo */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x8C, 0x0C,
-0xBC, 0x92, 0xB8, 0x80, 0x01, 0x02, 0x00, 0x00, 0x02, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
-0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x38, 0xCD, 0x01, 0x16,
-0xA6, 0xA2, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50,
+0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54,
+0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x38, 0xCD, 0x01, 0x16, 0xA6,
+0xA2, 0x00, 0x00, 0x00, 0x00,
/* Africa/Sao_Tome */
0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -3305,8 +3302,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* America/Grand_Turk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x0F, 0xB4, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x93, 0x0F, 0xB4, 0xFF,
0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0,
0x15, 0x49, 0x29, 0xF0, 0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0, 0x18, 0x22, 0x29, 0x60,
0x19, 0x08, 0xED, 0xF0, 0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70, 0x1B, 0xE1, 0xED, 0x60,
@@ -3325,28 +3322,15 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60,
0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60,
0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60,
-0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0,
-0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0,
-0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0,
-0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60,
-0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60,
-0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60,
-0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0,
-0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0,
-0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60,
-0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60,
-0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60,
-0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
-0xFF, 0xB8, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00,
-0x08, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xAA, 0x15, 0xAA, 0x00, 0xA6, 0x1E, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x00, 0xFF,
+0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00,
+0x0C, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x15, 0xAA, 0x00, 0xA6, 0x1E,
+0x0A, 0x00, 0x00, 0x00, 0x00,
/* America/Grenada */
0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -7221,10 +7205,10 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0xDE, 0x34, 0x60, 0x60, 0xE7, 0x3C, 0x02, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x08, 0x7A, 0x7A, 0x7A,
0x00, 0x50, 0x4D, 0x54, 0x00, 0x44, 0x44, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, 0x4E, 0x82, 0x00, 0x00, 0x00, 0x26, 0x44, 0x75, 0x6D, 0x6F,
+0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, 0x4E, 0x82, 0x00, 0x00, 0x00, 0x25, 0x44, 0x75, 0x6D, 0x6F,
0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, 0x72, 0x76, 0x69, 0x6C, 0x6C, 0x65, 0x20, 0x53, 0x74, 0x61,
-0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x65, 0x72, 0x72, 0x65, 0x20, 0x41, 0x64, 0x65, 0x6C,
-0x69, 0x65,
+0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x41, 0x64, 0x65, 0x6C, 0x69, 0x65, 0x20, 0x4C, 0x61, 0x6E,
+0x64,
/* Antarctica/Macquarie */
0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -8076,7 +8060,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1B, 0xCA, 0xDB, 0x86, 0xB0,
0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xDD, 0xA8, 0xD2, 0x98, 0x02, 0x4F, 0x9D, 0x20,
-0x4A, 0x3B, 0xC4, 0x10, 0x4B, 0x3C, 0xD8, 0x54, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0x04, 0x00,
+0x4A, 0x3B, 0xC4, 0x10, 0x4B, 0x3C, 0xD8, 0x90, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0x04, 0x00,
0x00, 0x52, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00,
0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x54, 0x60, 0x00, 0x12, 0x00, 0x00, 0x62,
0x70, 0x01, 0x16, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00,
@@ -8145,7 +8129,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1B, 0xCA, 0xDB, 0x86, 0xB0,
0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xDD, 0xA8, 0xD2, 0x98, 0x02, 0x4F, 0x9D, 0x20,
-0x4A, 0x3B, 0xC4, 0x10, 0x4B, 0x3C, 0xD8, 0x54, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0x04, 0x00,
+0x4A, 0x3B, 0xC4, 0x10, 0x4B, 0x3C, 0xD8, 0x90, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0x04, 0x00,
0x00, 0x52, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00,
0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x54, 0x60, 0x00, 0x12, 0x00, 0x00, 0x62,
0x70, 0x01, 0x16, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00,
@@ -8386,7 +8370,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Irkutsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA2, 0x12, 0x0F, 0xB5,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA2, 0x12, 0x0F, 0xBF,
0xB5, 0xA3, 0xD3, 0x10, 0x15, 0x27, 0x61, 0x80, 0x16, 0x18, 0x95, 0xF0, 0x17, 0x08, 0x95, 0x00,
0x17, 0xF9, 0xC9, 0x70, 0x18, 0xE9, 0xC8, 0x80, 0x19, 0xDA, 0xFC, 0xF0, 0x1A, 0xCC, 0x4D, 0x80,
0x1B, 0xBC, 0x5A, 0xA0, 0x1C, 0xAC, 0x4B, 0xA0, 0x1D, 0x9C, 0x3C, 0xA0, 0x1E, 0x8C, 0x2D, 0xA0,
@@ -8407,7 +8391,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08,
-0x04, 0x00, 0x00, 0x61, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E,
+0x04, 0x00, 0x00, 0x61, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E,
0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00,
0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00,
0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x49, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00,
@@ -8691,7 +8675,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Krasnoyarsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xF9, 0x0D, 0xF8,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xF9, 0x0D, 0xF2,
0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10,
0x17, 0xF9, 0xD7, 0x80, 0x18, 0xE9, 0xD6, 0x90, 0x19, 0xDB, 0x0B, 0x00, 0x1A, 0xCC, 0x5B, 0x90,
0x1B, 0xBC, 0x68, 0xB0, 0x1C, 0xAC, 0x59, 0xB0, 0x1D, 0x9C, 0x4A, 0xB0, 0x1E, 0x8C, 0x3B, 0xB0,
@@ -8712,7 +8696,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08,
-0x04, 0x00, 0x00, 0x57, 0x08, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70,
+0x04, 0x00, 0x00, 0x57, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70,
0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00,
0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00,
0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00,
@@ -8996,7 +8980,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Omsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xB3, 0x40, 0xB0,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xB3, 0x40, 0xB6,
0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20,
0x17, 0xF9, 0xE5, 0x90, 0x18, 0xE9, 0xE4, 0xA0, 0x19, 0xDB, 0x19, 0x10, 0x1A, 0xCC, 0x69, 0xA0,
0x1B, 0xBC, 0x76, 0xC0, 0x1C, 0xAC, 0x67, 0xC0, 0x1D, 0x9C, 0x58, 0xC0, 0x1E, 0x8C, 0x49, 0xC0,
@@ -9017,7 +9001,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08,
-0x04, 0x00, 0x00, 0x44, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62,
+0x04, 0x00, 0x00, 0x44, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62,
0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00,
0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00,
0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x54, 0x00,
@@ -9201,7 +9185,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Samarkand */
0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1D, 0xAA, 0x19, 0x85, 0x60,
+0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1D, 0xAA, 0x19, 0x85, 0x37,
0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xB1, 0x20,
0x17, 0xF9, 0xF3, 0xA0, 0x18, 0xE9, 0xF2, 0xB0, 0x19, 0xDB, 0x27, 0x20, 0x1A, 0xCC, 0x77, 0xB0,
0x1B, 0xBC, 0x84, 0xD0, 0x1C, 0xAC, 0x75, 0xD0, 0x1D, 0x9C, 0x66, 0xD0, 0x1E, 0x8C, 0x57, 0xD0,
@@ -9210,7 +9194,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x27, 0x05, 0x0B, 0x50, 0x27, 0xF4, 0xFC, 0x50, 0x28, 0xBF, 0xD9, 0x20, 0x28, 0xE4, 0xED, 0x50,
0x29, 0x60, 0xBE, 0x30, 0x01, 0x02, 0x03, 0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05,
0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x08, 0x07, 0x09, 0x00, 0x00,
-0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04,
+0x3E, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04,
0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50,
0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x14, 0x00, 0x00,
0x54, 0x60, 0x01, 0x18, 0x00, 0x00, 0x46, 0x50, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41,
@@ -9344,7 +9328,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Tbilisi */
0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xAA, 0x19, 0x9A, 0x06,
+0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xAA, 0x19, 0x9A, 0x01,
0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40,
0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30, 0x1A, 0xCC, 0x85, 0xC0,
0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, 0x1D, 0x9C, 0x74, 0xE0, 0x1E, 0x8C, 0x65, 0xE0,
@@ -9361,7 +9345,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x08, 0x07, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0B,
0x0A, 0x0B, 0x0A, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A,
-0x0B, 0x0A, 0x08, 0x07, 0x0B, 0x00, 0x00, 0x29, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00,
+0x0B, 0x0A, 0x08, 0x07, 0x0B, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00,
0x05, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0A, 0x00, 0x00, 0x38, 0x40, 0x00, 0x05, 0x00, 0x00, 0x38,
0x40, 0x00, 0x05, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0A, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0A, 0x00,
0x00, 0x2A, 0x30, 0x00, 0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x14, 0x00, 0x00, 0x2A, 0x30, 0x00,
@@ -9609,7 +9593,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Vladivostok */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x5A,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x5D,
0xB5, 0xA3, 0xB6, 0xF0, 0x15, 0x27, 0x45, 0x60, 0x16, 0x18, 0x79, 0xD0, 0x17, 0x08, 0x78, 0xE0,
0x17, 0xF9, 0xAD, 0x50, 0x18, 0xE9, 0xAC, 0x60, 0x19, 0xDA, 0xE0, 0xD0, 0x1A, 0xCC, 0x31, 0x60,
0x1B, 0xBC, 0x3E, 0x80, 0x1C, 0xAC, 0x2F, 0x80, 0x1D, 0x9C, 0x20, 0x80, 0x1E, 0x8C, 0x11, 0x80,
@@ -9630,7 +9614,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08,
-0x04, 0x00, 0x00, 0x7B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A,
+0x04, 0x00, 0x00, 0x7B, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A,
0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00,
0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00,
0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00,
@@ -9642,7 +9626,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Yakutsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0xEA, 0x70,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0xEA, 0x5E,
0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0, 0x17, 0x08, 0x86, 0xF0,
0x17, 0xF9, 0xBB, 0x60, 0x18, 0xE9, 0xBA, 0x70, 0x19, 0xDA, 0xEE, 0xE0, 0x1A, 0xCC, 0x3F, 0x70,
0x1B, 0xBC, 0x4C, 0x90, 0x1C, 0xAC, 0x3D, 0x90, 0x1D, 0x9C, 0x2E, 0x90, 0x1E, 0x8C, 0x1F, 0x90,
@@ -9663,7 +9647,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08,
-0x04, 0x00, 0x00, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C,
+0x04, 0x00, 0x00, 0x79, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C,
0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00,
0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00,
0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00,
@@ -9674,39 +9658,40 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Asia/Yekaterinburg */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x12, 0xAD, 0xE7,
-0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xBF, 0x30,
-0x17, 0xF9, 0xF3, 0xA0, 0x18, 0xE9, 0xF2, 0xB0, 0x19, 0xDB, 0x27, 0x20, 0x1A, 0xCC, 0x77, 0xB0,
-0x1B, 0xBC, 0x84, 0xD0, 0x1C, 0xAC, 0x75, 0xD0, 0x1D, 0x9C, 0x66, 0xD0, 0x1E, 0x8C, 0x57, 0xD0,
-0x1F, 0x7C, 0x48, 0xD0, 0x20, 0x6C, 0x39, 0xD0, 0x21, 0x5C, 0x2A, 0xD0, 0x22, 0x4C, 0x1B, 0xD0,
-0x23, 0x3C, 0x0C, 0xD0, 0x24, 0x2B, 0xFD, 0xD0, 0x25, 0x1B, 0xEE, 0xD0, 0x26, 0x0B, 0xDF, 0xD0,
-0x27, 0x05, 0x0B, 0x50, 0x27, 0xF4, 0xFC, 0x50, 0x28, 0xE4, 0xFB, 0x60, 0x29, 0x78, 0xA3, 0x60,
-0x29, 0xD4, 0xB4, 0x20, 0x2A, 0xC4, 0x97, 0x10, 0x2B, 0xB4, 0xC0, 0x50, 0x2C, 0xA4, 0xB1, 0x50,
-0x2D, 0x94, 0xA2, 0x50, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x75, 0x50,
-0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0x7B, 0xD0, 0x33, 0x3D, 0x82, 0xD0, 0x34, 0x52, 0x5D, 0xD0,
-0x35, 0x1D, 0x64, 0xD0, 0x36, 0x32, 0x3F, 0xD0, 0x36, 0xFD, 0x46, 0xD0, 0x38, 0x1B, 0x5C, 0x50,
-0x38, 0xDD, 0x28, 0xD0, 0x39, 0xFB, 0x3E, 0x50, 0x3A, 0xBD, 0x0A, 0xD0, 0x3B, 0xDB, 0x20, 0x50,
-0x3C, 0xA6, 0x27, 0x50, 0x3D, 0xBB, 0x02, 0x50, 0x3E, 0x86, 0x09, 0x50, 0x3F, 0x9A, 0xE4, 0x50,
-0x40, 0x65, 0xEB, 0x50, 0x41, 0x84, 0x00, 0xD0, 0x42, 0x45, 0xCD, 0x50, 0x43, 0x63, 0xE2, 0xD0,
-0x44, 0x25, 0xAF, 0x50, 0x45, 0x43, 0xC4, 0xD0, 0x46, 0x05, 0x91, 0x50, 0x47, 0x23, 0xA6, 0xD0,
-0x47, 0xEE, 0xAD, 0xD0, 0x49, 0x03, 0x88, 0xD0, 0x49, 0xCE, 0x8F, 0xD0, 0x4A, 0xE3, 0x6A, 0xD0,
-0x4B, 0xAE, 0x71, 0xD0, 0x4C, 0xCC, 0x87, 0x50, 0x4D, 0x8E, 0x53, 0xD0, 0x54, 0x4C, 0x01, 0x40,
-0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x0B, 0x08, 0x09, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A,
-0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A,
-0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0C,
-0x0B, 0x00, 0x00, 0x38, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x54,
-0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00,
-0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00,
-0x04, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54,
-0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54, 0x60, 0x00, 0x15, 0x4C,
-0x4D, 0x54, 0x00, 0x53, 0x56, 0x45, 0x54, 0x00, 0x53, 0x56, 0x45, 0x53, 0x54, 0x00, 0x59, 0x45,
-0x4B, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x09, 0x27,
+0xA1, 0x12, 0xB1, 0xFF, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20,
+0x17, 0x08, 0xBF, 0x30, 0x17, 0xF9, 0xF3, 0xA0, 0x18, 0xE9, 0xF2, 0xB0, 0x19, 0xDB, 0x27, 0x20,
+0x1A, 0xCC, 0x77, 0xB0, 0x1B, 0xBC, 0x84, 0xD0, 0x1C, 0xAC, 0x75, 0xD0, 0x1D, 0x9C, 0x66, 0xD0,
+0x1E, 0x8C, 0x57, 0xD0, 0x1F, 0x7C, 0x48, 0xD0, 0x20, 0x6C, 0x39, 0xD0, 0x21, 0x5C, 0x2A, 0xD0,
+0x22, 0x4C, 0x1B, 0xD0, 0x23, 0x3C, 0x0C, 0xD0, 0x24, 0x2B, 0xFD, 0xD0, 0x25, 0x1B, 0xEE, 0xD0,
+0x26, 0x0B, 0xDF, 0xD0, 0x27, 0x05, 0x0B, 0x50, 0x27, 0xF4, 0xFC, 0x50, 0x28, 0xE4, 0xFB, 0x60,
+0x29, 0x78, 0xA3, 0x60, 0x29, 0xD4, 0xB4, 0x20, 0x2A, 0xC4, 0x97, 0x10, 0x2B, 0xB4, 0xC0, 0x50,
+0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xA2, 0x50, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0x84, 0x50,
+0x30, 0x64, 0x75, 0x50, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0x7B, 0xD0, 0x33, 0x3D, 0x82, 0xD0,
+0x34, 0x52, 0x5D, 0xD0, 0x35, 0x1D, 0x64, 0xD0, 0x36, 0x32, 0x3F, 0xD0, 0x36, 0xFD, 0x46, 0xD0,
+0x38, 0x1B, 0x5C, 0x50, 0x38, 0xDD, 0x28, 0xD0, 0x39, 0xFB, 0x3E, 0x50, 0x3A, 0xBD, 0x0A, 0xD0,
+0x3B, 0xDB, 0x20, 0x50, 0x3C, 0xA6, 0x27, 0x50, 0x3D, 0xBB, 0x02, 0x50, 0x3E, 0x86, 0x09, 0x50,
+0x3F, 0x9A, 0xE4, 0x50, 0x40, 0x65, 0xEB, 0x50, 0x41, 0x84, 0x00, 0xD0, 0x42, 0x45, 0xCD, 0x50,
+0x43, 0x63, 0xE2, 0xD0, 0x44, 0x25, 0xAF, 0x50, 0x45, 0x43, 0xC4, 0xD0, 0x46, 0x05, 0x91, 0x50,
+0x47, 0x23, 0xA6, 0xD0, 0x47, 0xEE, 0xAD, 0xD0, 0x49, 0x03, 0x88, 0xD0, 0x49, 0xCE, 0x8F, 0xD0,
+0x4A, 0xE3, 0x6A, 0xD0, 0x4B, 0xAE, 0x71, 0xD0, 0x4C, 0xCC, 0x87, 0x50, 0x4D, 0x8E, 0x53, 0xD0,
+0x54, 0x4C, 0x01, 0x40, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06,
+0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x0C, 0x09, 0x0A,
+0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C,
+0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C,
+0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0C, 0x00, 0x00, 0x38, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x34, 0xC1,
+0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0D, 0x00, 0x00,
+0x46, 0x50, 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x00, 0x08, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0D,
+0x00, 0x00, 0x46, 0x50, 0x01, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x54, 0x60,
+0x01, 0x13, 0x00, 0x00, 0x46, 0x50, 0x00, 0x19, 0x00, 0x00, 0x54, 0x60, 0x01, 0x13, 0x00, 0x00,
+0x46, 0x50, 0x00, 0x19, 0x00, 0x00, 0x54, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4D,
+0x54, 0x00, 0x53, 0x56, 0x45, 0x54, 0x00, 0x53, 0x56, 0x45, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B,
+0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xE0, 0x13, 0x48, 0x01, 0x6F, 0x20, 0x60, 0x00, 0x00, 0x00, 0x11, 0x4D,
-0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x32, 0x20, 0x2D, 0x20, 0x55, 0x72, 0x61, 0x6C, 0x73,
-
+0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x13, 0x48, 0x01, 0x6F, 0x20, 0x60, 0x00, 0x00, 0x00, 0x11,
+0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x32, 0x20, 0x2D, 0x20, 0x55, 0x72, 0x61, 0x6C,
+0x73,
/* Asia/Yerevan */
0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -9746,7 +9731,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Atlantic/Azores */
0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0x91, 0xC1, 0xFC, 0x58,
+0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0x92, 0xE6, 0xA9, 0x58,
0x9B, 0x4B, 0x89, 0x90, 0x9B, 0xFE, 0xE3, 0xA0, 0x9C, 0x9D, 0x09, 0x90, 0x9D, 0xC9, 0x9F, 0x90,
0x9E, 0x7F, 0x8E, 0x90, 0x9F, 0xAA, 0xD3, 0x10, 0xA0, 0x5F, 0x70, 0x90, 0xA1, 0x8C, 0x06, 0x90,
0xA2, 0x41, 0xF5, 0x90, 0xA3, 0x6E, 0x8B, 0x90, 0xA4, 0x23, 0x29, 0x10, 0xA5, 0x4F, 0xBF, 0x10,
@@ -10080,7 +10065,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Atlantic/Madeira */
0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x91, 0xC1, 0xF1, 0x58,
+0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x92, 0xE6, 0x9E, 0x58,
0x9B, 0x4B, 0x7B, 0x80, 0x9B, 0xFE, 0xD5, 0x90, 0x9C, 0x9C, 0xFB, 0x80, 0x9D, 0xC9, 0x91, 0x80,
0x9E, 0x7F, 0x80, 0x80, 0x9F, 0xAA, 0xC5, 0x00, 0xA0, 0x5F, 0x62, 0x80, 0xA1, 0x8B, 0xF8, 0x80,
0xA2, 0x41, 0xE7, 0x80, 0xA3, 0x6E, 0x7D, 0x80, 0xA4, 0x23, 0x1B, 0x00, 0xA5, 0x4F, 0xB1, 0x00,
@@ -13945,7 +13930,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Europe/Lisbon */
0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x10,
+0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x1D,
0x9B, 0x4B, 0x6D, 0x70, 0x9B, 0xFE, 0xC7, 0x80, 0x9C, 0x9C, 0xED, 0x70, 0x9D, 0xC9, 0x83, 0x70,
0x9E, 0x7F, 0x72, 0x70, 0x9F, 0xAA, 0xB6, 0xF0, 0xA0, 0x5F, 0x54, 0x70, 0xA1, 0x8B, 0xEA, 0x70,
0xA2, 0x41, 0xD9, 0x70, 0xA3, 0x6E, 0x6F, 0x70, 0xA4, 0x23, 0x0C, 0xF0, 0xA5, 0x4F, 0xA2, 0xF0,
@@ -14015,7 +14000,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xF7,
-0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
+0x63, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01,
0x0D, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C,
0x20, 0x01, 0x16, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C,
@@ -14824,8 +14809,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Europe/Riga */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x22, 0x9E, 0xB9, 0x88, 0x04,
-0x9F, 0x84, 0x8F, 0x04, 0xA0, 0x88, 0x46, 0x84, 0xA0, 0xCB, 0x83, 0x04, 0xAD, 0xE7, 0xF1, 0xE4,
+0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x22, 0x9E, 0xB9, 0x87, 0xFE,
+0x9F, 0x84, 0x8E, 0xFE, 0xA0, 0x88, 0x46, 0x7E, 0xA0, 0xCB, 0x82, 0xFE, 0xAD, 0xE7, 0xF1, 0xDE,
0xC8, 0xAF, 0x64, 0x60, 0xCA, 0x62, 0x65, 0x50, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90,
0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD0, 0x90, 0x89, 0x70,
0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0,
@@ -14864,8 +14849,8 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C,
0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C,
0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C,
-0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x00, 0x00, 0x16, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x24,
-0xAC, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00,
+0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x00, 0x00, 0x16, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x24,
+0xB2, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00,
0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01,
0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38,
0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00,
@@ -14942,7 +14927,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Europe/Samara */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x2B, 0xA1, 0x00, 0x26, 0x9C,
+0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x2B, 0xA1, 0x00, 0x26, 0xAC,
0xB5, 0xA4, 0x0B, 0x50, 0xBE, 0x4C, 0x26, 0xC0, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30,
0x17, 0x08, 0xCD, 0x40, 0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30,
0x1A, 0xCC, 0x85, 0xC0, 0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, 0x1D, 0x9C, 0x74, 0xE0,
@@ -14963,7 +14948,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x05, 0x06, 0x05, 0x07, 0x08, 0x07, 0x08, 0x09, 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x0E, 0x0D, 0x0E,
0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E,
0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0F, 0x10,
-0x0E, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38,
+0x0E, 0x00, 0x00, 0x2E, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38,
0x40, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0F, 0x00,
0x00, 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x01,
0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x18, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1C, 0x00, 0x00, 0x1C,
@@ -17513,7 +17498,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
/* Portugal */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x10,
+0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x1D,
0x9B, 0x4B, 0x6D, 0x70, 0x9B, 0xFE, 0xC7, 0x80, 0x9C, 0x9C, 0xED, 0x70, 0x9D, 0xC9, 0x83, 0x70,
0x9E, 0x7F, 0x72, 0x70, 0x9F, 0xAA, 0xB6, 0xF0, 0xA0, 0x5F, 0x54, 0x70, 0xA1, 0x8B, 0xEA, 0x70,
0xA2, 0x41, 0xD9, 0x70, 0xA3, 0x6E, 0x6F, 0x70, 0xA4, 0x23, 0x0C, 0xF0, 0xA5, 0x4F, 0xA2, 0xF0,
@@ -17583,7 +17568,7 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xF7,
-0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
+0x63, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01,
0x0D, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C,
0x20, 0x01, 0x16, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C,
@@ -18545,4 +18530,4 @@ const unsigned char timelib_timezone_db_data_builtin[263400] = {
0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80,
0x00, 0x00, 0x00, 0x00, };
-const timelib_tzdb timezonedb_builtin = { "2014.6", 582, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2014.7", 582, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 29f855872..64a40a21e 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2680,9 +2680,6 @@ PHP_FUNCTION(date_create_immutable)
if (!php_date_initialize(zend_object_store_get_object(&datetime_object TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) {
zval_dtor(&datetime_object);
RETURN_FALSE;
- } else {
- zval *datetime_object_ptr = &datetime_object;
- RETVAL_ZVAL(datetime_object_ptr, 0, 0);
}
RETVAL_ZVAL(&datetime_object, 0, 0);
}
@@ -2729,9 +2726,6 @@ PHP_FUNCTION(date_create_immutable_from_format)
if (!php_date_initialize(zend_object_store_get_object(&datetime_object TSRMLS_CC), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) {
zval_dtor(&datetime_object);
RETURN_FALSE;
- } else {
- zval *datetime_object_ptr = &datetime_object;
- RETVAL_ZVAL(datetime_object_ptr, 0, 0);
}
RETVAL_ZVAL(&datetime_object, 0, 0);
}
diff --git a/ext/date/tests/bug66985.phpt b/ext/date/tests/bug66985.phpt
new file mode 100644
index 000000000..0045ca29d
--- /dev/null
+++ b/ext/date/tests/bug66985.phpt
@@ -0,0 +1,175 @@
+--TEST--
+Bug #66986 (Some timezones are no longer valid in PHP 5.5.10)
+--FILE--
+<?php
+$zones = array(
+ "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "Factory", "GB-Eire",
+ "GMT0", "Greenwich", "Hongkong", "Iceland", "Iran", "Israel", "Jamaica",
+ "Japan", "Kwajalein", "Libya", "MST7MDT", "Navajo", "NZ-CHAT", "Poland",
+ "Portugal", "PST8PDT", "Singapore", "Turkey", "Universal", "W-SU",
+
+ "UTC", "GMT", "GMT+0100", "-0230",
+);
+
+foreach ( $zones as $zone )
+{
+ $d = new DateTimeZone( $zone );
+ print_r($d);
+}
+?>
+--EXPECT--
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => CST6CDT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Cuba
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Egypt
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Eire
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => EST5EDT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Factory
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => GB-Eire
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => GMT0
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Greenwich
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Hongkong
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Iceland
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Iran
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Israel
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Jamaica
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Japan
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Kwajalein
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Libya
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => MST7MDT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Navajo
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => NZ-CHAT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Poland
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Portugal
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => PST8PDT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Singapore
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Turkey
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => Universal
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => W-SU
+)
+DateTimeZone Object
+(
+ [timezone_type] => 3
+ [timezone] => UTC
+)
+DateTimeZone Object
+(
+ [timezone_type] => 2
+ [timezone] => GMT
+)
+DateTimeZone Object
+(
+ [timezone_type] => 1
+ [timezone] => +01:00
+)
+DateTimeZone Object
+(
+ [timezone_type] => 1
+ [timezone] => -02:30
+)
diff --git a/ext/date/tests/bug67109.phpt b/ext/date/tests/bug67109.phpt
new file mode 100644
index 000000000..a36bb98bb
--- /dev/null
+++ b/ext/date/tests/bug67109.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #67109 (First uppercase letter breaks date string parsing)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+var_dump(date('d.m.Y',strtotime('last day of april')));
+var_dump(date('d.m.Y',strtotime('Last day of april')));
+var_dump(date('d.m.Y',strtotime('lAst Day of April')));
+?>
+--EXPECTF--
+string(10) "30.04.%d"
+string(10) "30.04.%d"
+string(10) "30.04.%d"
diff --git a/ext/dom/attr.c b/ext/dom/attr.c
index ebbc41f6f..2976add46 100644
--- a/ext/dom/attr.c
+++ b/ext/dom/attr.c
@@ -183,14 +183,7 @@ int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
node_list_unlink(attrp->children TSRMLS_CC);
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
xmlNodeSetContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c
index 92eb28015..606886fed 100644
--- a/ext/dom/characterdata.c
+++ b/ext/dom/characterdata.c
@@ -112,14 +112,7 @@ int dom_characterdata_data_write(dom_object *obj, zval *newval TSRMLS_DC)
return FAILURE;
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
diff --git a/ext/dom/document.c b/ext/dom/document.c
index 095f96dc0..3d8a1571d 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -361,14 +361,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
return FAILURE;
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval));
@@ -428,12 +421,7 @@ int dom_document_standalone_write(dom_object *obj, zval *newval TSRMLS_DC)
return FAILURE;
}
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_long(newval);
+ convert_to_long_copy(newval, value_copy);
standalone = Z_LVAL_P(newval);
if (standalone > 0) {
@@ -500,14 +488,7 @@ int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC)
xmlFree((xmlChar *) docp->version );
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
docp->version = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
@@ -544,12 +525,7 @@ int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRML
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -587,12 +563,7 @@ int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC)
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -629,12 +600,7 @@ int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -671,12 +637,7 @@ int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -713,12 +674,7 @@ int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -755,12 +711,7 @@ int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC)
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -797,12 +748,7 @@ int dom_document_substitue_entities_write(dom_object *obj, zval *newval TSRMLS_D
zval value_copy;
dom_doc_propsptr doc_prop;
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
+ convert_to_boolean_copy(newval, value_copy);
if (obj->document) {
doc_prop = dom_get_doc_props(obj->document);
@@ -861,14 +807,7 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC)
xmlFree((xmlChar *) docp->URL);
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
docp->URL = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
diff --git a/ext/dom/node.c b/ext/dom/node.c
index ae74ea04c..2c484adae 100644
--- a/ext/dom/node.c
+++ b/ext/dom/node.c
@@ -352,14 +352,7 @@ int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC)
case XML_COMMENT_NODE:
case XML_CDATA_SECTION_NODE:
case XML_PI_NODE:
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
if (newval == &value_copy) {
zval_dtor(newval);
@@ -794,14 +787,7 @@ int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC)
nsnode = xmlDocGetRootElement(nodep->doc);
}
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ convert_to_string_copy(newval, value_copy);
prefix = Z_STRVAL_P(newval);
if (nsnode && nodep->ns != NULL && !xmlStrEqual(nodep->ns->prefix, (xmlChar *)prefix)) {
strURI = (char *) nodep->ns->href;
@@ -942,6 +928,23 @@ int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC)
int dom_node_text_content_write(dom_object *obj, zval *newval TSRMLS_DC)
{
+ xmlNode *nodep = dom_object_get_node(obj);
+ zval value_copy;
+ xmlChar *enc_str;
+
+ if (nodep == NULL) {
+ php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
+ return FAILURE;
+ }
+
+ convert_to_string_copy(newval, value_copy);
+ enc_str = xmlEncodeEntitiesReentrant(nodep->doc, Z_STRVAL_P(newval));
+ xmlNodeSetContent(nodep, enc_str);
+ xmlFree(enc_str);
+ if (newval == &value_copy) {
+ zval_dtor(newval);
+ }
+
return SUCCESS;
}
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 0623dbdcd..a9621eeb4 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -518,7 +518,7 @@ static HashTable* dom_get_debug_info_helper(zval *object, int *is_temp TSRMLS_DC
value = null_value;
} else if (Z_TYPE_P(value) == IS_OBJECT) {
/* these are zvalues create on demand, with refcount and is_ref
- * status left in an uninitalized stated */
+ * status left in an uninitialized stated */
zval_dtor(value);
efree(value);
diff --git a/ext/dom/php_dom.h b/ext/dom/php_dom.h
index f2bccf7b8..f5f0bc6a7 100644
--- a/ext/dom/php_dom.h
+++ b/ext/dom/php_dom.h
@@ -146,6 +146,20 @@ entry = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not yet implemented"); \
return;
+#define convert_to_copy_master(orig, copy, lower_type, upper_type) \
+ if (Z_TYPE_P(orig) != IS_##upper_type) { \
+ if (Z_REFCOUNT_P(orig) > 1) { \
+ copy = *orig; \
+ zval_copy_ctor(&copy); \
+ orig = &copy; \
+ } \
+ convert_to_##lower_type(orig); \
+ }
+
+#define convert_to_string_copy(orig, copy) convert_to_copy_master(orig, copy, string, STRING);
+#define convert_to_long_copy(orig, copy) convert_to_copy_master(orig, copy, long, LONG);
+#define convert_to_boolean_copy(orig, copy) convert_to_copy_master(orig, copy, boolean, BOOL);
+
#define DOM_NODELIST 0
#define DOM_NAMEDNODEMAP 1
diff --git a/ext/dom/tests/node_textcontent.phpt b/ext/dom/tests/node_textcontent.phpt
new file mode 100644
index 000000000..a731a264a
--- /dev/null
+++ b/ext/dom/tests/node_textcontent.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Testing reading and writing to DOMNode::textContent
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$html = <<<HTML
+<div id="test"><span>hi there</span></div>
+HTML;
+
+$text = '<p>hello world &trade;</p>';
+
+$dom = new DOMDocument('1.0', 'UTF-8');
+$dom->loadHTML($html);
+
+$node = $dom->getElementById('test');
+var_dump($node->textContent);
+$node->textContent = $text;
+var_dump($node->textContent == $text);
+
+var_dump($dom->saveHTML($node));
+
+?>
+--EXPECT--
+string(8) "hi there"
+bool(true)
+string(63) "<div id="test">&lt;p&gt;hello world &amp;trade;&lt;/p&gt;</div>"
+
diff --git a/ext/ereg/tests/eregi_basic.phpt b/ext/ereg/tests/eregi_basic.phpt
index 14b4b7d39..cbcfdb655 100644
--- a/ext/ereg/tests/eregi_basic.phpt
+++ b/ext/ereg/tests/eregi_basic.phpt
@@ -9,7 +9,7 @@ Test eregi() function : basic functionality - confirm case insensitivity
*/
/*
- * Test basic funtionality of eregi()
+ * Test basic functionality of eregi()
*/
echo "*** Testing eregi() : basic functionality ***\n";
diff --git a/ext/fileinfo/libmagic/funcs.c b/ext/fileinfo/libmagic/funcs.c
index e1aa7b9c3..bd6d3d592 100644
--- a/ext/fileinfo/libmagic/funcs.c
+++ b/ext/fileinfo/libmagic/funcs.c
@@ -27,7 +27,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: funcs.c,v 1.67 2014/02/12 23:20:53 christos Exp $")
+FILE_RCSID("@(#)$File: funcs.c,v 1.68 2014/02/18 11:09:31 kim Exp $")
#endif /* lint */
#include "magic.h"
@@ -173,8 +173,7 @@ file_buffer(struct magic_set *ms, php_stream *stream, const char *inname, const
const char *code_mime = "binary";
const char *type = "application/octet-stream";
const char *def = "data";
-
-
+ const char *ftype = NULL;
if (nb == 0) {
def = "empty";
@@ -187,7 +186,7 @@ file_buffer(struct magic_set *ms, php_stream *stream, const char *inname, const
if ((ms->flags & MAGIC_NO_CHECK_ENCODING) == 0) {
looks_text = file_encoding(ms, ubuf, nb, &u8buf, &ulen,
- &code, &code_mime, &type);
+ &code, &code_mime, &ftype);
}
#ifdef __EMX__
@@ -272,7 +271,7 @@ file_buffer(struct magic_set *ms, php_stream *stream, const char *inname, const
if ((ms->flags & MAGIC_NO_CHECK_ENCODING) == 0) {
if (looks_text == 0)
if ((m = file_ascmagic_with_encoding( ms, ubuf,
- nb, u8buf, ulen, code, type, looks_text))
+ nb, u8buf, ulen, code, ftype, looks_text))
!= 0) {
if ((ms->flags & MAGIC_DEBUG) != 0)
(void)fprintf(stderr,
diff --git a/ext/fileinfo/tests/finfo_buffer_basic.phpt b/ext/fileinfo/tests/finfo_buffer_basic.phpt
index d8dcfab7a..0c3c64138 100644
--- a/ext/fileinfo/tests/finfo_buffer_basic.phpt
+++ b/ext/fileinfo/tests/finfo_buffer_basic.phpt
@@ -48,7 +48,7 @@ string(15) "MIFF image data"
string(25) "RIFF (little-endian) data"
string(28) "text/plain; charset=us-ascii"
string(26) "text/plain; charset=ebcdic"
-string(22) "binary; charset=binary"
+string(40) "application/octet-stream; charset=binary"
string(28) "text/plain; charset=us-ascii"
string(28) "text/plain; charset=us-ascii"
string(25) "text/plain; charset=utf-8"
diff --git a/ext/fileinfo/tests/finfo_buffer_variation1.phpt b/ext/fileinfo/tests/finfo_buffer_variation1.phpt
index d9c9be03e..4fdd2be27 100644
--- a/ext/fileinfo/tests/finfo_buffer_variation1.phpt
+++ b/ext/fileinfo/tests/finfo_buffer_variation1.phpt
@@ -47,7 +47,7 @@ string(15) "MIFF image data"
string(25) "RIFF (little-endian) data"
string(28) "text/plain; charset=us-ascii"
string(26) "text/plain; charset=ebcdic"
-string(22) "binary; charset=binary"
+string(40) "application/octet-stream; charset=binary"
string(28) "text/plain; charset=us-ascii"
string(28) "text/plain; charset=us-ascii"
string(25) "text/plain; charset=utf-8"
diff --git a/ext/gd/libgd/gdft.c b/ext/gd/libgd/gdft.c
index f4ee63908..3d7b46c41 100644
--- a/ext/gd/libgd/gdft.c
+++ b/ext/gd/libgd/gdft.c
@@ -390,9 +390,10 @@ static void *fontFetch (char **error, void *key)
fontlist = gdEstrdup(a->fontlist);
/*
- * Must use gd_strtok_r else pointer corrupted by strtok in nested loop.
+ * Must use gd_strtok_r becasuse strtok() isn't thread safe
*/
for (name = gd_strtok_r (fontlist, LISTSEPARATOR, &strtok_ptr); name; name = gd_strtok_r (0, LISTSEPARATOR, &strtok_ptr)) {
+ char *strtok_ptr_path;
/* make a fresh copy each time - strtok corrupts it. */
path = gdEstrdup (fontsearchpath);
@@ -408,7 +409,8 @@ static void *fontFetch (char **error, void *key)
break;
}
}
- for (dir = strtok (path, PATHSEPARATOR); dir; dir = strtok (0, PATHSEPARATOR)) {
+ for (dir = gd_strtok_r (path, PATHSEPARATOR, &strtok_ptr_path); dir;
+ dir = gd_strtok_r (0, PATHSEPARATOR, &strtok_ptr_path)) {
if (!strcmp(dir, ".")) {
TSRMLS_FETCH();
#if HAVE_GETCWD
diff --git a/ext/gd/tests/bug48801_1.phpt b/ext/gd/tests/bug48801_1.phpt
index 11af80cd4..ef2aa1dba 100644
--- a/ext/gd/tests/bug48801_1.phpt
+++ b/ext/gd/tests/bug48801_1.phpt
@@ -1,12 +1,13 @@
--TEST--
-Bug #48801 (Problem with imagettfbbox) freetype >= 2.4.10
+Bug #48801 (Problem with imagettfbbox) freetype >= 2.4.10 and < 2.4.12
--SKIPIF--
<?php
if(!extension_loaded('gd')){ die('skip gd extension not available'); }
if(!function_exists('imageftbbox')) die('skip imageftbbox() not available');
include dirname(__FILE__) . '/func.inc';
- if(version_compare(get_freetype_version(), '2.4.10') == -1) die('skip for freetype >= 2.4.10');
+ if(version_compare(get_freetype_version(), '2.4.10') < 0) die('skip for freetype >= 2.4.10');
+ if(version_compare(get_freetype_version(), '2.4.12') >= 0) die('skip for freetype < 2.4.12');
?>
--FILE--
<?php
diff --git a/ext/gd/tests/bug48801_2.phpt b/ext/gd/tests/bug48801_2.phpt
new file mode 100644
index 000000000..b2a719fa0
--- /dev/null
+++ b/ext/gd/tests/bug48801_2.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #48801 (Problem with imagettfbbox) freetype >= 2.4.12
+--SKIPIF--
+<?php
+ if(!extension_loaded('gd')){ die('skip gd extension not available'); }
+ if(!function_exists('imageftbbox')) die('skip imageftbbox() not available');
+
+ include dirname(__FILE__) . '/func.inc';
+ if(version_compare(get_freetype_version(), '2.4.12') < 0) die('skip for freetype >= 2.4.12');
+?>
+--FILE--
+<?php
+$cwd = dirname(__FILE__);
+$font = "$cwd/Tuffy.ttf";
+$bbox = imageftbbox(50, 0, $font, "image");
+echo '(' . $bbox[0] . ', ' . $bbox[1] . ")\n";
+echo '(' . $bbox[2] . ', ' . $bbox[3] . ")\n";
+echo '(' . $bbox[4] . ', ' . $bbox[5] . ")\n";
+echo '(' . $bbox[6] . ', ' . $bbox[7] . ")\n";
+?>
+--EXPECTF--
+(-1, 15)
+(155, 15)
+(155, -48)
+(-1, -48)
diff --git a/ext/gmp/bug67917.phpt b/ext/gmp/bug67917.phpt
new file mode 100644
index 000000000..93d46cbb6
--- /dev/null
+++ b/ext/gmp/bug67917.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug #67917: Using GMP objects with overloaded operators can cause memory exhaustion
+--FILE--
+<?php
+
+$mem1 = memory_get_usage();
+for ($i = 0; $i < 1000; $i++) {
+ $gmp = gmp_init(42);
+ $gmp <<= 1;
+}
+$mem2 = memory_get_usage();
+
+var_dump($mem2 - $mem1 < 100000);
+
+?>
+--EXPECT--
+bool(true)
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c
index cd50896cc..bad610c0b 100644
--- a/ext/gmp/gmp.c
+++ b/ext/gmp/gmp.c
@@ -43,6 +43,18 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_init, 0, 0, 1)
ZEND_ARG_INFO(0, base)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_import, 0, 0, 1)
+ ZEND_ARG_INFO(0, data)
+ ZEND_ARG_INFO(0, word_size)
+ ZEND_ARG_INFO(0, options)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_export, 0, 0, 1)
+ ZEND_ARG_INFO(0, gmpnumber)
+ ZEND_ARG_INFO(0, word_size)
+ ZEND_ARG_INFO(0, options)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_intval, 0, 0, 1)
ZEND_ARG_INFO(0, gmpnumber)
ZEND_END_ARG_INFO()
@@ -117,6 +129,8 @@ static ZEND_GINIT_FUNCTION(gmp);
*/
const zend_function_entry gmp_functions[] = {
ZEND_FE(gmp_init, arginfo_gmp_init)
+ ZEND_FE(gmp_import, arginfo_gmp_import)
+ ZEND_FE(gmp_export, arginfo_gmp_export)
ZEND_FE(gmp_intval, arginfo_gmp_intval)
ZEND_FE(gmp_strval, arginfo_gmp_strval)
ZEND_FE(gmp_add, arginfo_gmp_binary)
@@ -204,6 +218,12 @@ typedef struct _gmp_temp {
#define GMP_ROUND_PLUSINF 1
#define GMP_ROUND_MINUSINF 2
+#define GMP_MSW_FIRST (1 << 0)
+#define GMP_LSW_FIRST (1 << 1)
+#define GMP_LITTLE_ENDIAN (1 << 2)
+#define GMP_BIG_ENDIAN (1 << 3)
+#define GMP_NATIVE_ENDIAN (1 << 4)
+
#define GMP_42_OR_NEWER \
((__GNU_MP_VERSION >= 5) || (__GNU_MP_VERSION >= 4 && __GNU_MP_VERSION_MINOR >= 2))
@@ -297,7 +317,7 @@ static void gmp_strval(zval *result, mpz_t gmpnum, long base);
static int convert_to_gmp(mpz_t gmpnumber, zval *val, int base TSRMLS_DC);
static void gmp_cmp(zval *return_value, zval *a_arg, zval *b_arg TSRMLS_DC);
-/*
+/*
* The gmp_*_op functions provide an implementation for several common types
* of GMP functions. The gmp_zval_(unary|binary)_*_op functions have to be manually
* passed zvals to work on, whereas the gmp_(unary|binary)_*_op macros already
@@ -523,7 +543,7 @@ static void shift_operator_helper(gmp_binary_ui_op_t op, zval *return_value, zva
gmp_zval_unary_op(result, op1, op TSRMLS_CC); \
return SUCCESS;
-static int gmp_do_operation(zend_uchar opcode, zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */
+static int gmp_do_operation_ex(zend_uchar opcode, zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */
{
switch (opcode) {
case ZEND_ADD:
@@ -560,6 +580,26 @@ static int gmp_do_operation(zend_uchar opcode, zval *result, zval *op1, zval *op
}
/* }}} */
+static int gmp_do_operation(zend_uchar opcode, zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */
+{
+ zval op1_copy;
+ int retval;
+
+ if (result == op1) {
+ ZVAL_COPY_VALUE(&op1_copy, op1);
+ op1 = &op1_copy;
+ }
+
+ retval = gmp_do_operation_ex(opcode, result, op1, op2 TSRMLS_CC);
+
+ if (retval == SUCCESS && op1 == &op1_copy) {
+ zval_dtor(op1);
+ }
+
+ return retval;
+}
+/* }}} */
+
static int gmp_compare(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */
{
gmp_cmp(result, op1, op2 TSRMLS_CC);
@@ -579,7 +619,7 @@ static int gmp_serialize(zval *object, unsigned char **buffer, zend_uint *buf_le
PHP_VAR_SERIALIZE_INIT(serialize_data);
INIT_PZVAL(zv_ptr);
-
+
gmp_strval(zv_ptr, gmpnum, 10);
php_var_serialize(&buf, &zv_ptr, &serialize_data TSRMLS_CC);
zval_dtor(zv_ptr);
@@ -677,6 +717,12 @@ ZEND_MINIT_FUNCTION(gmp)
#endif
REGISTER_STRING_CONSTANT("GMP_VERSION", (char *)gmp_version, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GMP_MSW_FIRST", GMP_MSW_FIRST, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GMP_LSW_FIRST", GMP_LSW_FIRST, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GMP_LITTLE_ENDIAN", GMP_LITTLE_ENDIAN, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GMP_BIG_ENDIAN", GMP_BIG_ENDIAN, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GMP_NATIVE_ENDIAN", GMP_NATIVE_ENDIAN, CONST_CS | CONST_PERSISTENT);
+
mp_set_memory_functions(gmp_emalloc, gmp_erealloc, gmp_efree);
return SUCCESS;
@@ -714,7 +760,7 @@ ZEND_MODULE_INFO_D(gmp)
/* {{{ convert_to_gmp
* Convert zval to be gmp number */
-static int convert_to_gmp(mpz_t gmpnumber, zval *val, int base TSRMLS_DC)
+static int convert_to_gmp(mpz_t gmpnumber, zval *val, int base TSRMLS_DC)
{
switch (Z_TYPE_P(val)) {
case IS_LONG:
@@ -727,15 +773,13 @@ static int convert_to_gmp(mpz_t gmpnumber, zval *val, int base TSRMLS_DC)
int skip_lead = 0;
int ret;
- if (Z_STRLEN_P(val) > 2) {
- if (numstr[0] == '0') {
- if (numstr[1] == 'x' || numstr[1] == 'X') {
- base = 16;
- skip_lead = 1;
- } else if (base != 16 && (numstr[1] == 'b' || numstr[1] == 'B')) {
- base = 2;
- skip_lead = 1;
- }
+ if (Z_STRLEN_P(val) > 2 && numstr[0] == '0') {
+ if ((base == 0 || base == 16) && (numstr[1] == 'x' || numstr[1] == 'X')) {
+ base = 16;
+ skip_lead = 1;
+ } else if ((base == 0 || base == 2) && (numstr[1] == 'b' || numstr[1] == 'B')) {
+ base = 2;
+ skip_lead = 1;
}
}
@@ -768,8 +812,8 @@ static void gmp_strval(zval *result, mpz_t gmpnum, long base) /* {{{ */
out_string = emalloc(num_len + 1);
mpz_get_str(out_string, base, gmpnum);
-
- /*
+
+ /*
* From GMP documentation for mpz_sizeinbase():
* The returned value will be exact or 1 too big. If base is a power of
* 2, the returned value will always be exact.
@@ -811,7 +855,7 @@ static void gmp_cmp(zval *return_value, zval *a_arg, zval *b_arg TSRMLS_DC) /* {
FREE_GMP_TEMP(temp_a);
FREE_GMP_TEMP(temp_b);
-
+
RETURN_LONG(res);
}
/* }}} */
@@ -819,14 +863,14 @@ static void gmp_cmp(zval *return_value, zval *a_arg, zval *b_arg TSRMLS_DC) /* {
/* {{{ gmp_zval_binary_ui_op
Execute GMP binary operation.
*/
-static inline void gmp_zval_binary_ui_op(zval *return_value, zval *a_arg, zval *b_arg, gmp_binary_op_t gmp_op, gmp_binary_ui_op_t gmp_ui_op, int check_b_zero TSRMLS_DC)
+static inline void gmp_zval_binary_ui_op(zval *return_value, zval *a_arg, zval *b_arg, gmp_binary_op_t gmp_op, gmp_binary_ui_op_t gmp_ui_op, int check_b_zero TSRMLS_DC)
{
mpz_ptr gmpnum_a, gmpnum_b, gmpnum_result;
int use_ui = 0;
gmp_temp_t temp_a, temp_b;
FETCH_GMP_ZVAL(gmpnum_a, a_arg, temp_a);
-
+
if (gmp_ui_op && Z_TYPE_P(b_arg) == IS_LONG && Z_LVAL_P(b_arg) >= 0) {
use_ui = 1;
temp_b.is_used = 0;
@@ -922,7 +966,7 @@ static inline void _gmp_binary_ui_op(INTERNAL_FUNCTION_PARAMETERS, gmp_binary_op
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &a_arg, &b_arg) == FAILURE){
return;
}
-
+
gmp_zval_binary_ui_op(return_value, a_arg, b_arg, gmp_op, gmp_ui_op, check_b_zero TSRMLS_CC);
}
/* }}} */
@@ -931,11 +975,11 @@ static inline void _gmp_binary_ui_op(INTERNAL_FUNCTION_PARAMETERS, gmp_binary_op
/* {{{ gmp_zval_unary_op
*/
-static inline void gmp_zval_unary_op(zval *return_value, zval *a_arg, gmp_unary_op_t gmp_op TSRMLS_DC)
+static inline void gmp_zval_unary_op(zval *return_value, zval *a_arg, gmp_unary_op_t gmp_op TSRMLS_DC)
{
mpz_ptr gmpnum_a, gmpnum_result;
gmp_temp_t temp_a;
-
+
FETCH_GMP_ZVAL(gmpnum_a, a_arg, temp_a);
INIT_GMP_RETVAL(gmpnum_result);
@@ -980,7 +1024,7 @@ static inline void _gmp_unary_op(INTERNAL_FUNCTION_PARAMETERS, gmp_unary_op_t gm
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a_arg) == FAILURE){
return;
}
-
+
gmp_zval_unary_op(return_value, a_arg, gmp_op TSRMLS_CC);
}
/* }}} */
@@ -996,7 +1040,7 @@ static inline void _gmp_unary_opl(INTERNAL_FUNCTION_PARAMETERS, gmp_unary_opl_t
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a_arg) == FAILURE){
return;
}
-
+
FETCH_GMP_ZVAL(gmpnum_a, a_arg, temp_a);
RETVAL_LONG(gmp_op(gmpnum_a));
FREE_GMP_TEMP(temp_a);
@@ -1050,6 +1094,118 @@ ZEND_FUNCTION(gmp_init)
}
/* }}} */
+int gmp_import_export_validate(long size, long options, int *order, int *endian TSRMLS_DC)
+{
+ if (size < 1) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "Word size must be positive, %ld given", size);
+ return FAILURE;
+ }
+
+ switch (options & (GMP_LSW_FIRST | GMP_MSW_FIRST)) {
+ case GMP_LSW_FIRST:
+ *order = -1;
+ break;
+ case GMP_MSW_FIRST:
+ case 0: /* default */
+ *order = 1;
+ break;
+ default:
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "Invalid options: Conflicting word orders");
+ return FAILURE;
+ }
+
+ switch (options & (GMP_LITTLE_ENDIAN | GMP_BIG_ENDIAN | GMP_NATIVE_ENDIAN)) {
+ case GMP_LITTLE_ENDIAN:
+ *endian = -1;
+ break;
+ case GMP_BIG_ENDIAN:
+ *endian = 1;
+ break;
+ case GMP_NATIVE_ENDIAN:
+ case 0: /* default */
+ *endian = 0;
+ break;
+ default:
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "Invalid options: Conflicting word endianness");
+ return FAILURE;
+ }
+
+ return SUCCESS;
+}
+
+/* {{{ proto GMP gmp_import(string data [, int word_size = 1, int options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN])
+ Imports a GMP number from a binary string */
+ZEND_FUNCTION(gmp_import)
+{
+ char *data;
+ int data_len;
+ long size = 1;
+ long options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN;
+ int order, endian;
+ mpz_ptr gmpnumber;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &data, &data_len, &size, &options) == FAILURE) {
+ return;
+ }
+
+ if (gmp_import_export_validate(size, options, &order, &endian TSRMLS_CC) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if ((data_len % size) != 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "Input length must be a multiple of word size");
+ RETURN_FALSE;
+ }
+
+ INIT_GMP_RETVAL(gmpnumber);
+
+ mpz_import(gmpnumber, data_len / size, order, size, endian, 0, data);
+}
+/* }}} */
+
+/* {{{ proto string gmp_export(GMP gmpnumber [, int word_size = 1, int options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN])
+ Exports a GMP number to a binary string */
+ZEND_FUNCTION(gmp_export)
+{
+ zval *gmpnumber_arg;
+ long size = 1;
+ long options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN;
+ int order, endian;
+ mpz_ptr gmpnumber;
+ gmp_temp_t temp_a;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|ll", &gmpnumber_arg, &size, &options) == FAILURE) {
+ return;
+ }
+
+ if (gmp_import_export_validate(size, options, &order, &endian TSRMLS_CC) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ FETCH_GMP_ZVAL(gmpnumber, gmpnumber_arg, temp_a);
+
+ if (mpz_sgn(gmpnumber) == 0) {
+ RETURN_EMPTY_STRING();
+ } else {
+ size_t bits_per_word = size * 8;
+ size_t count = (mpz_sizeinbase(gmpnumber, 2) + bits_per_word - 1) / bits_per_word;
+ size_t out_len = count * size;
+
+ char *out_string = emalloc(out_len + 1);
+ mpz_export(out_string, NULL, order, size, endian, 0, gmpnumber);
+ out_string[out_len] = '\0';
+
+ RETURN_STRINGL(out_string, out_len, 0);
+ }
+
+ FREE_GMP_TEMP(temp_a);
+}
+/* }}} */
+
/* {{{ proto int gmp_intval(mixed gmpnumber)
Gets signed long value of GMP number */
ZEND_FUNCTION(gmp_intval)
@@ -1059,7 +1215,7 @@ ZEND_FUNCTION(gmp_intval)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &gmpnumber_arg) == FAILURE){
return;
}
-
+
if (IS_GMP(gmpnumber_arg)) {
RETVAL_LONG(mpz_get_si(GET_GMP_FROM_ZVAL(gmpnumber_arg)));
} else {
@@ -1206,7 +1362,7 @@ ZEND_FUNCTION(gmp_div_q)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid rounding mode");
RETURN_FALSE;
}
-
+
}
/* }}} */
@@ -1286,7 +1442,7 @@ ZEND_FUNCTION(gmp_pow)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Negative exponent not supported");
RETURN_FALSE;
}
-
+
INIT_GMP_RETVAL(gmpnum_result);
if (Z_TYPE_P(base_arg) == IS_LONG && Z_LVAL_P(base_arg) >= 0) {
mpz_ui_pow_ui(gmpnum_result, Z_LVAL_P(base_arg), exp);
@@ -1328,10 +1484,9 @@ ZEND_FUNCTION(gmp_powm)
FETCH_GMP_ZVAL_DEP_DEP(gmpnum_mod, mod_arg, temp_mod, temp_exp, temp_base);
if (!mpz_cmp_ui(gmpnum_mod, 0)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Modulus may not be zero");
FREE_GMP_TEMP(temp_base);
- if (use_ui) {
- FREE_GMP_TEMP(temp_exp);
- }
+ FREE_GMP_TEMP(temp_exp);
FREE_GMP_TEMP(temp_mod);
RETURN_FALSE;
}
@@ -1360,14 +1515,14 @@ ZEND_FUNCTION(gmp_sqrt)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a_arg) == FAILURE){
return;
}
-
+
FETCH_GMP_ZVAL(gmpnum_a, a_arg, temp_a);
if (mpz_sgn(gmpnum_a) < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number has to be greater than or equal to 0");
FREE_GMP_TEMP(temp_a);
RETURN_FALSE;
- }
+ }
INIT_GMP_RETVAL(gmpnum_result);
mpz_sqrt(gmpnum_result, gmpnum_a);
@@ -1394,7 +1549,7 @@ ZEND_FUNCTION(gmp_sqrtrem)
FREE_GMP_TEMP(temp_a);
RETURN_FALSE;
}
-
+
array_init(return_value);
add_index_zval(return_value, 0, gmp_create(&gmpnum_result1 TSRMLS_CC));
add_index_zval(return_value, 1, gmp_create(&gmpnum_result2 TSRMLS_CC));
@@ -1474,7 +1629,7 @@ ZEND_FUNCTION(gmp_rootrem)
mpz_sub(gmpnum_result2, gmpnum_a, gmpnum_result2);
mpz_abs(gmpnum_result2, gmpnum_result2);
#endif
-
+
FREE_GMP_TEMP(temp_a);
}
/* }}} */
diff --git a/ext/gmp/php_gmp.h b/ext/gmp/php_gmp.h
index 05bd56fa9..b3706c534 100644
--- a/ext/gmp/php_gmp.h
+++ b/ext/gmp/php_gmp.h
@@ -31,6 +31,8 @@ ZEND_MODULE_DEACTIVATE_D(gmp);
ZEND_MODULE_INFO_D(gmp);
ZEND_FUNCTION(gmp_init);
+ZEND_FUNCTION(gmp_import);
+ZEND_FUNCTION(gmp_export);
ZEND_FUNCTION(gmp_intval);
ZEND_FUNCTION(gmp_strval);
ZEND_FUNCTION(gmp_add);
diff --git a/ext/gmp/tests/001.phpt b/ext/gmp/tests/001.phpt
deleted file mode 100644
index 5126f7314..000000000
--- a/ext/gmp/tests/001.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-Check for gmp presence
---SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip"; ?>
---FILE--
-<?php
-echo "gmp extension is available";
-/*
- you can add regression tests for your extension here
-
- the output of your test code has to be equal to the
- text in the --EXPECT-- section below for the tests
- to pass, differences between the output and the
- expected text are interpreted as failure
-
- see php5/tests/README for further information on
- writing regression tests
-*/
-?>
---EXPECT--
-gmp extension is available
diff --git a/ext/gmp/tests/bug50175.phpt b/ext/gmp/tests/bug50175.phpt
new file mode 100644
index 000000000..0998e029c
--- /dev/null
+++ b/ext/gmp/tests/bug50175.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Bug #50175: gmp_init() results 0 on given base and number starting with 0x or 0b
+--FILE--
+<?php
+
+var_dump(gmp_init('0bcd', 16));
+var_dump(gmp_init('0xyz', 36));
+
+?>
+--EXPECTF--
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(4) "3021"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(5) "44027"
+}
diff --git a/ext/gmp/tests/013.phpt b/ext/gmp/tests/gmp_abs.phpt
index bb35891f2..bb35891f2 100644
--- a/ext/gmp/tests/013.phpt
+++ b/ext/gmp/tests/gmp_abs.phpt
diff --git a/ext/gmp/tests/029.phpt b/ext/gmp/tests/gmp_and.phpt
index 9bc401031..9bc401031 100644
--- a/ext/gmp/tests/029.phpt
+++ b/ext/gmp/tests/gmp_and.phpt
diff --git a/ext/gmp/tests/034.phpt b/ext/gmp/tests/gmp_clrbit.phpt
index 079d5d669..079d5d669 100644
--- a/ext/gmp/tests/034.phpt
+++ b/ext/gmp/tests/gmp_clrbit.phpt
diff --git a/ext/gmp/tests/026.phpt b/ext/gmp/tests/gmp_cmp.phpt
index 83e7910d1..83e7910d1 100644
--- a/ext/gmp/tests/026.phpt
+++ b/ext/gmp/tests/gmp_cmp.phpt
diff --git a/ext/gmp/tests/031.phpt b/ext/gmp/tests/gmp_com.phpt
index 1e0c1b469..1e0c1b469 100644
--- a/ext/gmp/tests/031.phpt
+++ b/ext/gmp/tests/gmp_com.phpt
diff --git a/ext/gmp/tests/009.phpt b/ext/gmp/tests/gmp_div_q.phpt
index 3b75a48e1..3b75a48e1 100644
--- a/ext/gmp/tests/009.phpt
+++ b/ext/gmp/tests/gmp_div_q.phpt
diff --git a/ext/gmp/tests/007.phpt b/ext/gmp/tests/gmp_div_qr.phpt
index e391c121f..90099249d 100644
--- a/ext/gmp/tests/007.phpt
+++ b/ext/gmp/tests/gmp_div_qr.phpt
@@ -10,11 +10,13 @@ var_dump(gmp_div_qr(""));
var_dump(gmp_div_qr(0,1));
var_dump(gmp_div_qr(1,0));
+var_dump(gmp_div_qr(gmp_init(1), gmp_init(0)));
var_dump(gmp_div_qr(12653,23482734));
var_dump(gmp_div_qr(12653,23482734, 10));
var_dump(gmp_div_qr(1123123,123));
var_dump(gmp_div_qr(1123123,123, 1));
var_dump(gmp_div_qr(1123123,123, 2));
+var_dump(gmp_div_qr(gmp_init(1123123), gmp_init(123)));
var_dump(gmp_div_qr(1123123,123, GMP_ROUND_ZERO));
var_dump(gmp_div_qr(1123123,123, GMP_ROUND_PLUSINF));
var_dump(gmp_div_qr(1123123,123, GMP_ROUND_MINUSINF));
@@ -47,6 +49,9 @@ array(2) {
Warning: gmp_div_qr(): Zero operand not allowed in %s on line %d
bool(false)
+
+Warning: gmp_div_qr(): Zero operand not allowed in %s on line %d
+bool(false)
array(2) {
[0]=>
object(GMP)#%d (1) {
@@ -114,6 +119,18 @@ array(2) {
[0]=>
object(GMP)#%d (1) {
["num"]=>
+ string(4) "9131"
+ }
+ [1]=>
+ object(GMP)#%d (1) {
+ ["num"]=>
+ string(2) "10"
+ }
+}
+array(2) {
+ [0]=>
+ object(GMP)#%d (1) {
+ ["num"]=>
string(4) "9132"
}
[1]=>
diff --git a/ext/gmp/tests/008.phpt b/ext/gmp/tests/gmp_div_r.phpt
index c1874c86f..c1874c86f 100644
--- a/ext/gmp/tests/008.phpt
+++ b/ext/gmp/tests/gmp_div_r.phpt
diff --git a/ext/gmp/tests/011.phpt b/ext/gmp/tests/gmp_divexact.phpt
index a42c1b6b4..a42c1b6b4 100644
--- a/ext/gmp/tests/011.phpt
+++ b/ext/gmp/tests/gmp_divexact.phpt
diff --git a/ext/gmp/tests/gmp_export.phpt b/ext/gmp/tests/gmp_export.phpt
new file mode 100644
index 000000000..fbc8901cf
--- /dev/null
+++ b/ext/gmp/tests/gmp_export.phpt
@@ -0,0 +1,80 @@
+--TEST--
+gmp_export() basic tests
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) echo "skip"; ?>
+--FILE--
+<?php
+
+// Tests taken from GMPs own test suite.
+
+// format is [output, size, options, expected]
+$export = [
+ ['0',1,GMP_BIG_ENDIAN,''],
+ ['0',2,GMP_BIG_ENDIAN,''],
+ ['0',3,GMP_BIG_ENDIAN,''],
+ ['12345678',1,GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',4,GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',1,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
+ ['12345678',4,GMP_LITTLE_ENDIAN,'78563412'],
+ ['12345678',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
+ ['123456789ABC',2,GMP_BIG_ENDIAN,'123456789abc'],
+ ['123456789ABC',2,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9abc56781234'],
+ ['123456789ABC',2,GMP_LITTLE_ENDIAN,'34127856bc9a'],
+ ['123456789ABC',2,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'bc9a78563412'],
+ ['112233445566778899AABBCC',4,GMP_BIG_ENDIAN,'112233445566778899aabbcc'],
+ ['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'99aabbcc5566778811223344'],
+ ['112233445566778899AABBCC',4,GMP_LITTLE_ENDIAN,'4433221188776655ccbbaa99'],
+ ['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'ccbbaa998877665544332211'],
+ ['100120023003400450056006700780089009A00AB00BC00C',8,GMP_BIG_ENDIAN,'100120023003400450056006700780089009a00ab00bc00c'],
+ ['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9009a00ab00bc00c50056006700780081001200230034004'],
+ ['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LITTLE_ENDIAN,'044003300220011008800770066005500cc00bb00aa00990'],
+ ['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110']
+];
+
+$passed = true;
+foreach ($export as $k => $test) {
+ $gmp = gmp_init($test[0], 16);
+ $str = gmp_export($gmp, $test[1], $test[2]);
+ if (is_string($str)) {
+ $result = bin2hex($str);
+ if ($result !== $test[3]) {
+ echo "$k: '$result' !== '{$test[3]}'\n";
+ $passed = false;
+ }
+ } else {
+ $type = gettype($str);
+ echo "$k: $type !== '{$test[3]}'\n";
+ }
+}
+
+var_dump($passed);
+
+// Invalid arguments (zpp failure)
+var_dump(gmp_export());
+
+// Invalid word sizes
+var_dump(gmp_export(123, -1));
+var_dump(gmp_export(123, 0));
+
+// Invalid options
+var_dump(gmp_export(123, 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
+var_dump(gmp_export(123, 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
+
+--EXPECTF--
+bool(true)
+
+Warning: gmp_export() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+
+Warning: gmp_export(): Word size must be positive, -1 given in %s on line %d
+bool(false)
+
+Warning: gmp_export(): Word size must be positive, 0 given in %s on line %d
+bool(false)
+
+Warning: gmp_export(): Invalid options: Conflicting word orders in %s on line %d
+bool(false)
+
+Warning: gmp_export(): Invalid options: Conflicting word endianness in %s on line %d
+bool(false)
diff --git a/ext/gmp/tests/014.phpt b/ext/gmp/tests/gmp_fact.phpt
index 6afccaf93..6afccaf93 100644
--- a/ext/gmp/tests/014.phpt
+++ b/ext/gmp/tests/gmp_fact.phpt
diff --git a/ext/gmp/tests/021.phpt b/ext/gmp/tests/gmp_gcd.phpt
index 275f0bca3..275f0bca3 100644
--- a/ext/gmp/tests/021.phpt
+++ b/ext/gmp/tests/gmp_gcd.phpt
diff --git a/ext/gmp/tests/022.phpt b/ext/gmp/tests/gmp_gcdext.phpt
index 469aa3013..469aa3013 100644
--- a/ext/gmp/tests/022.phpt
+++ b/ext/gmp/tests/gmp_gcdext.phpt
diff --git a/ext/gmp/tests/036.phpt b/ext/gmp/tests/gmp_hamdist.phpt
index c21e03ccb..c21e03ccb 100644
--- a/ext/gmp/tests/036.phpt
+++ b/ext/gmp/tests/gmp_hamdist.phpt
diff --git a/ext/gmp/tests/gmp_import.phpt b/ext/gmp/tests/gmp_import.phpt
new file mode 100644
index 000000000..b7ae6600e
--- /dev/null
+++ b/ext/gmp/tests/gmp_import.phpt
@@ -0,0 +1,91 @@
+--TEST--
+gmp_import() basic tests
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) echo "skip"; ?>
+--FILE--
+<?php
+
+// Tests taken from GMPs own test suite.
+
+// format is [expected, size, options, input]
+$import = [
+ ['0',1,GMP_BIG_ENDIAN,''],
+ ['12345678',1,GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',4,GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'12345678'],
+ ['12345678',1,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
+ ['12345678',4,GMP_LITTLE_ENDIAN,'78563412'],
+ ['12345678',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
+ ['123456789abc',2,GMP_BIG_ENDIAN,'123456789abc'],
+ ['123456789abc',2,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9abc56781234'],
+ ['123456789abc',2,GMP_LITTLE_ENDIAN,'34127856bc9a'],
+ ['123456789abc',2,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'bc9a78563412'],
+ ['112233445566778899aabbcc',4,GMP_BIG_ENDIAN,'112233445566778899aabbcc'],
+ ['112233445566778899aabbcc',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'99aabbcc5566778811223344'],
+ ['112233445566778899aabbcc',4,GMP_LITTLE_ENDIAN,'4433221188776655ccbbaa99'],
+ ['112233445566778899aabbcc',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'ccbbaa998877665544332211'],
+ ['100120023003400450056006700780089009a00ab00bc00c',8,GMP_BIG_ENDIAN,'100120023003400450056006700780089009a00ab00bc00c'],
+ ['100120023003400450056006700780089009a00ab00bc00c',8,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9009a00ab00bc00c50056006700780081001200230034004'],
+ ['100120023003400450056006700780089009a00ab00bc00c',8,GMP_LITTLE_ENDIAN,'044003300220011008800770066005500cc00bb00aa00990'],
+ ['100120023003400450056006700780089009a00ab00bc00c',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110']
+];
+
+$passed = true;
+foreach ($import as $k => $test) {
+ $gmp = gmp_import(hex2bin($test[3]), $test[1], $test[2]);
+ if ($gmp instanceof GMP) {
+ $result = gmp_strval($gmp, 16);
+ if ($result !== $test[0]) {
+ echo "$k: '$result' !== '{$test[0]}'\n";
+ $passed = false;
+ }
+ } else {
+ $type = gettype($gmp);
+ echo "$k: $type !== '{$test[0]}'\n";
+ }
+}
+
+var_dump($passed);
+
+// Invalid arguments (zpp failure)
+var_dump(gmp_import());
+
+// Invalid word sizes
+var_dump(gmp_import('a', -1));
+var_dump(gmp_import('a', 0));
+
+// Invalid data lengths
+var_dump(gmp_import('a', 2));
+var_dump(gmp_import('aa', 3));
+var_dump(gmp_import(str_repeat('a', 100), 64));
+
+// Invalid options
+var_dump(gmp_import('a', 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
+var_dump(gmp_import('a', 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
+
+--EXPECTF--
+bool(true)
+
+Warning: gmp_import() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+
+Warning: gmp_import(): Word size must be positive, -1 given in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Word size must be positive, 0 given in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Input length must be a multiple of word size in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Input length must be a multiple of word size in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Input length must be a multiple of word size in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Invalid options: Conflicting word orders in %s on line %d
+bool(false)
+
+Warning: gmp_import(): Invalid options: Conflicting word endianness in %s on line %d
+bool(false)
diff --git a/ext/gmp/tests/040.phpt b/ext/gmp/tests/gmp_init.phpt
index 29640ba70..29640ba70 100644
--- a/ext/gmp/tests/040.phpt
+++ b/ext/gmp/tests/gmp_init.phpt
diff --git a/ext/gmp/tests/004.phpt b/ext/gmp/tests/gmp_intval.phpt
index 088dd08fd..088dd08fd 100644
--- a/ext/gmp/tests/004.phpt
+++ b/ext/gmp/tests/gmp_intval.phpt
diff --git a/ext/gmp/tests/023.phpt b/ext/gmp/tests/gmp_invert.phpt
index 81a90fe16..81a90fe16 100644
--- a/ext/gmp/tests/023.phpt
+++ b/ext/gmp/tests/gmp_invert.phpt
diff --git a/ext/gmp/tests/024.phpt b/ext/gmp/tests/gmp_jacobi.phpt
index 04ddba4f0..04ddba4f0 100644
--- a/ext/gmp/tests/024.phpt
+++ b/ext/gmp/tests/gmp_jacobi.phpt
diff --git a/ext/gmp/tests/025.phpt b/ext/gmp/tests/gmp_legendre.phpt
index 6dde34e1e..6dde34e1e 100644
--- a/ext/gmp/tests/025.phpt
+++ b/ext/gmp/tests/gmp_legendre.phpt
diff --git a/ext/gmp/tests/010.phpt b/ext/gmp/tests/gmp_mod.phpt
index 12e7cad2b..12e7cad2b 100644
--- a/ext/gmp/tests/010.phpt
+++ b/ext/gmp/tests/gmp_mod.phpt
diff --git a/ext/gmp/tests/012.phpt b/ext/gmp/tests/gmp_neg.phpt
index 8ca3471cb..8ca3471cb 100644
--- a/ext/gmp/tests/012.phpt
+++ b/ext/gmp/tests/gmp_neg.phpt
diff --git a/ext/gmp/tests/030.phpt b/ext/gmp/tests/gmp_or.phpt
index 035f070bd..035f070bd 100644
--- a/ext/gmp/tests/030.phpt
+++ b/ext/gmp/tests/gmp_or.phpt
diff --git a/ext/gmp/tests/019.phpt b/ext/gmp/tests/gmp_perfect_square.phpt
index aa596ba9c..aa596ba9c 100644
--- a/ext/gmp/tests/019.phpt
+++ b/ext/gmp/tests/gmp_perfect_square.phpt
diff --git a/ext/gmp/tests/035.phpt b/ext/gmp/tests/gmp_popcount.phpt
index 4b45a0448..4b45a0448 100644
--- a/ext/gmp/tests/035.phpt
+++ b/ext/gmp/tests/gmp_popcount.phpt
diff --git a/ext/gmp/tests/015.phpt b/ext/gmp/tests/gmp_pow.phpt
index e17ecc7ba..e17ecc7ba 100644
--- a/ext/gmp/tests/015.phpt
+++ b/ext/gmp/tests/gmp_pow.phpt
diff --git a/ext/gmp/tests/016.phpt b/ext/gmp/tests/gmp_pown.phpt
index 8a0b34458..f5857b699 100644
--- a/ext/gmp/tests/016.phpt
+++ b/ext/gmp/tests/gmp_pown.phpt
@@ -19,6 +19,9 @@ var_dump(gmp_strval(gmp_powm($n,$e,1000)));
$m = gmp_init(900);
var_dump(gmp_strval(gmp_powm($n,$e,$m)));
+var_dump(gmp_powm(5, 11, 0));
+var_dump(gmp_powm(5, "11", gmp_init(0)));
+
var_dump(gmp_powm(array(),$e,$m));
var_dump(gmp_powm($n,array(),$m));
var_dump(gmp_powm($n,$e,array()));
@@ -46,6 +49,12 @@ string(3) "331"
string(3) "171"
string(3) "371"
+Warning: gmp_powm(): Modulus may not be zero in %s on line %d
+bool(false)
+
+Warning: gmp_powm(): Modulus may not be zero in %s on line %d
+bool(false)
+
Warning: gmp_powm(): Unable to convert variable to GMP - wrong type in %s on line %d
bool(false)
diff --git a/ext/gmp/tests/020.phpt b/ext/gmp/tests/gmp_prob_prime.phpt
index f8f3e6921..f8f3e6921 100644
--- a/ext/gmp/tests/020.phpt
+++ b/ext/gmp/tests/gmp_prob_prime.phpt
diff --git a/ext/gmp/tests/028.phpt b/ext/gmp/tests/gmp_random.phpt
index 3a876aa60..3a876aa60 100644
--- a/ext/gmp/tests/028.phpt
+++ b/ext/gmp/tests/gmp_random.phpt
diff --git a/ext/gmp/tests/041.phpt b/ext/gmp/tests/gmp_remroot.phpt
index 6e6d95928..4a3539d87 100644
--- a/ext/gmp/tests/041.phpt
+++ b/ext/gmp/tests/gmp_remroot.phpt
@@ -1,21 +1,11 @@
--TEST--
-gmp_root() and gmp_rootrem() basic tests
+gmp_rootrem() basic tests
--SKIPIF--
<?php if (!extension_loaded("gmp")) print "skip"; ?>
--FILE--
<?php
-var_dump(gmp_root(1000, 3));
-var_dump(gmp_root(100, 3));
-var_dump(gmp_root(-100, 3));
-
-var_dump(gmp_root(1000, 4));
-var_dump(gmp_root(100, 4));
-var_dump(gmp_root(-100, 4));
-
-var_dump(gmp_root(0, 3));
-var_dump(gmp_root(100, 0));
-var_dump(gmp_root(100, -3));
+var_dump(gmp_rootrem());
var_dump(gmp_rootrem(1000, 3));
var_dump(gmp_rootrem(100, 3));
@@ -31,39 +21,8 @@ var_dump(gmp_rootrem(100, -3));
?>
--EXPECTF--
-object(GMP)#%d (1) {
- ["num"]=>
- string(2) "10"
-}
-object(GMP)#%d (1) {
- ["num"]=>
- string(1) "4"
-}
-object(GMP)#%d (1) {
- ["num"]=>
- string(2) "-4"
-}
-object(GMP)#%d (1) {
- ["num"]=>
- string(1) "5"
-}
-object(GMP)#%d (1) {
- ["num"]=>
- string(1) "3"
-}
-
-Warning: gmp_root(): Can't take even root of negative number in %s on line %d
-bool(false)
-object(GMP)#%d (1) {
- ["num"]=>
- string(1) "0"
-}
-
-Warning: gmp_root(): The root must be positive in %s on line %d
-bool(false)
-
-Warning: gmp_root(): The root must be positive in %s on line %d
-bool(false)
+Warning: gmp_rootrem() expects exactly 2 parameters, 0 given in %s on line %d
+NULL
array(2) {
[0]=>
object(GMP)#%d (1) {
diff --git a/ext/gmp/tests/gmp_root.phpt b/ext/gmp/tests/gmp_root.phpt
new file mode 100644
index 000000000..70faf2705
--- /dev/null
+++ b/ext/gmp/tests/gmp_root.phpt
@@ -0,0 +1,58 @@
+--TEST--
+gmp_root() basic tests
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) print "skip"; ?>
+--FILE--
+<?php
+
+var_dump(gmp_root());
+
+var_dump(gmp_root(1000, 3));
+var_dump(gmp_root(100, 3));
+var_dump(gmp_root(-100, 3));
+
+var_dump(gmp_root(1000, 4));
+var_dump(gmp_root(100, 4));
+var_dump(gmp_root(-100, 4));
+
+var_dump(gmp_root(0, 3));
+var_dump(gmp_root(100, 0));
+var_dump(gmp_root(100, -3));
+
+?>
+--EXPECTF--
+Warning: gmp_root() expects exactly 2 parameters, 0 given in %s on line %d
+NULL
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(2) "10"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(1) "4"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(2) "-4"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(1) "5"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(1) "3"
+}
+
+Warning: gmp_root(): Can't take even root of negative number in %s on line %d
+bool(false)
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(1) "0"
+}
+
+Warning: gmp_root(): The root must be positive in %s on line %d
+bool(false)
+
+Warning: gmp_root(): The root must be positive in %s on line %d
+bool(false)
diff --git a/ext/gmp/tests/037.phpt b/ext/gmp/tests/gmp_scan0.phpt
index 2a87a968a..2a87a968a 100644
--- a/ext/gmp/tests/037.phpt
+++ b/ext/gmp/tests/gmp_scan0.phpt
diff --git a/ext/gmp/tests/038.phpt b/ext/gmp/tests/gmp_scan1.phpt
index 7ebce9be7..7ebce9be7 100644
--- a/ext/gmp/tests/038.phpt
+++ b/ext/gmp/tests/gmp_scan1.phpt
diff --git a/ext/gmp/tests/033.phpt b/ext/gmp/tests/gmp_setbit.phpt
index 99848959d..99848959d 100644
--- a/ext/gmp/tests/033.phpt
+++ b/ext/gmp/tests/gmp_setbit.phpt
diff --git a/ext/gmp/tests/027.phpt b/ext/gmp/tests/gmp_sign.phpt
index 1efdc28c6..1efdc28c6 100644
--- a/ext/gmp/tests/027.phpt
+++ b/ext/gmp/tests/gmp_sign.phpt
diff --git a/ext/gmp/tests/017.phpt b/ext/gmp/tests/gmp_sqrt.phpt
index d90f53821..d90f53821 100644
--- a/ext/gmp/tests/017.phpt
+++ b/ext/gmp/tests/gmp_sqrt.phpt
diff --git a/ext/gmp/tests/018.phpt b/ext/gmp/tests/gmp_sqrtrem.phpt
index 2fca463da..2fca463da 100644
--- a/ext/gmp/tests/018.phpt
+++ b/ext/gmp/tests/gmp_sqrtrem.phpt
diff --git a/ext/gmp/tests/005.phpt b/ext/gmp/tests/gmp_strval.phpt
index 79fd73ecf..79fd73ecf 100644
--- a/ext/gmp/tests/005.phpt
+++ b/ext/gmp/tests/gmp_strval.phpt
diff --git a/ext/gmp/tests/006.phpt b/ext/gmp/tests/gmp_sub.phpt
index e1d9df67d..e1d9df67d 100644
--- a/ext/gmp/tests/006.phpt
+++ b/ext/gmp/tests/gmp_sub.phpt
diff --git a/ext/gmp/tests/039.phpt b/ext/gmp/tests/gmp_testbit.phpt
index 399c51137..ab40abed7 100644
--- a/ext/gmp/tests/039.phpt
+++ b/ext/gmp/tests/gmp_testbit.phpt
@@ -5,6 +5,8 @@ gmp_testbit() basic tests
--FILE--
<?php
+var_dump(gmp_testbit());
+
$n = gmp_init(0);
var_dump(gmp_testbit($n, -10));
var_dump(gmp_testbit($n, 0));
@@ -38,6 +40,9 @@ var_dump(gmp_strval($n));
echo "Done\n";
?>
--EXPECTF--
+Warning: gmp_testbit() expects exactly 2 parameters, 0 given in %s on line %d
+NULL
+
Warning: gmp_testbit(): Index must be greater than or equal to zero in %s on line %d
bool(false)
bool(false)
diff --git a/ext/gmp/tests/032.phpt b/ext/gmp/tests/gmp_xor.phpt
index 2b0d29a62..2b0d29a62 100644
--- a/ext/gmp/tests/032.phpt
+++ b/ext/gmp/tests/gmp_xor.phpt
diff --git a/ext/gmp/tests/overloading.phpt b/ext/gmp/tests/overloading.phpt
index 0d8f5cfed..3520f58bd 100644
--- a/ext/gmp/tests/overloading.phpt
+++ b/ext/gmp/tests/overloading.phpt
@@ -16,6 +16,10 @@ var_dump($a - $b);
var_dump($a - 17);
var_dump(42 - $b);
+var_dump($a * $b);
+var_dump($a * 17);
+var_dump(42 * $b);
+
var_dump($a / $b);
var_dump($a / 17);
var_dump(42 / $b);
@@ -26,7 +30,9 @@ var_dump($a % 17);
var_dump(42 % $b);
var_dump($a % 0);
-// sl, sr
+var_dump($a ** $b);
+var_dump($a ** 17);
+var_dump(42 ** $b);
var_dump($a | $b);
var_dump($a | 17);
@@ -47,6 +53,9 @@ var_dump(42 << $b);
var_dump($a >> 2);
var_dump(-$a >> 2);
+var_dump($a << -1);
+var_dump($a >> -1);
+
var_dump(~$a);
var_dump(-$a);
var_dump(+$a);
@@ -83,9 +92,14 @@ var_dump(--$a);
var_dump($a--);
var_dump($a);
-$x = gmp_init(3);
-$y = gmp_init(2);
-var_dump($x ** $y);
+// Test operator that was not overloaded
+
+var_dump($a . $b);
+var_dump($a . '17');
+var_dump('42' . $b);
+
+$a .= '17';
+var_dump($a);
?>
--EXPECTF--
@@ -115,6 +129,18 @@ object(GMP)#%d (1) {
}
object(GMP)#%d (1) {
["num"]=>
+ string(3) "714"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(3) "714"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(3) "714"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
string(1) "2"
}
object(GMP)#%d (1) {
@@ -145,6 +171,18 @@ Warning: main(): Zero operand not allowed in %s on line %d
bool(false)
object(GMP)#%d (1) {
["num"]=>
+ string(28) "3937657486715347520027492352"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(28) "3937657486715347520027492352"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
+ string(28) "3937657486715347520027492352"
+}
+object(GMP)#%d (1) {
+ ["num"]=>
string(2) "59"
}
object(GMP)#%d (1) {
@@ -199,6 +237,12 @@ object(GMP)#%d (1) {
["num"]=>
string(3) "-11"
}
+
+Warning: main(): Shift cannot be negative in %s on line %d
+bool(false)
+
+Warning: main(): Shift cannot be negative in %s on line %d
+bool(false)
object(GMP)#%d (1) {
["num"]=>
string(3) "-43"
@@ -260,7 +304,7 @@ object(GMP)#%d (1) {
["num"]=>
string(2) "42"
}
-object(GMP)#%d (1) {
- ["num"]=>
- string(1) "9"
-}
+string(4) "4217"
+string(4) "4217"
+string(4) "4217"
+string(4) "4217"
diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c
index 8036485d6..8a765fefd 100644
--- a/ext/mbstring/mb_gpc.c
+++ b/ext/mbstring/mb_gpc.c
@@ -260,7 +260,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
goto out;
}
- num = n; /* make sure to process initilized vars only */
+ num = n; /* make sure to process initialized vars only */
/* initialize converter */
if (info->num_from_encodings <= 0) {
diff --git a/ext/mysqli/tests/010.phpt b/ext/mysqli/tests/010.phpt
index 60ff8eac1..83a43e06b 100644
--- a/ext/mysqli/tests/010.phpt
+++ b/ext/mysqli/tests/010.phpt
@@ -62,18 +62,18 @@ mysqli_close($link);
--EXPECT--
array(7) {
[0]=>
- float(3.14159274101)
+ float(3.141593)
[1]=>
- float(-9.99999997475E-7)
+ float(-1.0E-6)
[2]=>
float(0)
[3]=>
- float(999999995904)
+ float(1.0E+12)
[4]=>
- float(0.564642488956)
+ float(0.5646425)
[5]=>
float(1)
[6]=>
- float(8.88888914608E+14)
+ float(8.888889E+14)
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/011.phpt b/ext/mysqli/tests/011.phpt
index db03abac8..b14516ff7 100644
--- a/ext/mysqli/tests/011.phpt
+++ b/ext/mysqli/tests/011.phpt
@@ -67,7 +67,7 @@ array(8) {
[3]=>
int(4999999)
[4]=>
- float(2345.60009766)
+ float(2345.6)
[5]=>
float(5678.89563)
[6]=>
@@ -75,4 +75,4 @@ array(8) {
[7]=>
%unicode|string%(11) "mysql rulez"
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/012.phpt b/ext/mysqli/tests/012.phpt
index 7cc34b0c0..91abae485 100644
--- a/ext/mysqli/tests/012.phpt
+++ b/ext/mysqli/tests/012.phpt
@@ -66,7 +66,7 @@ array(8) {
[3]=>
int(54)
[4]=>
- float(2.59999990463)
+ float(2.6)
[5]=>
float(58.89)
[6]=>
@@ -74,4 +74,4 @@ array(8) {
[7]=>
%unicode|string%(3) "6.7"
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/bug67839.phpt b/ext/mysqli/tests/bug67839.phpt
new file mode 100644
index 000000000..b2821a21b
--- /dev/null
+++ b/ext/mysqli/tests/bug67839.phpt
@@ -0,0 +1,58 @@
+--TEST--
+mysqli_float_handling - ensure 4 byte float is handled correctly
+--SKIPIF--
+<?php
+ require_once('skipif.inc');
+ require_once('skipifemb.inc');
+ require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ require('connect.inc');
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ die();
+ }
+
+
+ if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) {
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!mysqli_query($link, "CREATE TABLE test(id INT PRIMARY KEY, fp4 FLOAT, fp8 DOUBLE) ENGINE = InnoDB")) {
+ printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ // Insert via string to make sure the real floating number gets to the DB
+ if (!mysqli_query($link, "INSERT INTO test(id, fp4, fp8) VALUES (1, 9.9999, 9.9999)")) {
+ printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!($stmt = mysqli_prepare($link, "SELECT id, fp4, fp8 FROM test"))) {
+ printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!mysqli_stmt_execute($stmt)) {
+ printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+
+ if (!($result = mysqli_stmt_get_result($stmt))) {
+ printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ $data = mysqli_fetch_assoc($result);
+ print $data['id'] . ": " . $data['fp4'] . ": " . $data['fp8'] . "\n";
+?>
+--CLEAN--
+<?php
+ require_once("clean_table.inc");
+?>
+--EXPECTF--
+1: 9.9999: 9.9999
diff --git a/ext/mysqli/tests/mysqli_change_user.phpt b/ext/mysqli/tests/mysqli_change_user.phpt
index 7a4530f0d..09009a136 100644
--- a/ext/mysqli/tests/mysqli_change_user.phpt
+++ b/ext/mysqli/tests/mysqli_change_user.phpt
@@ -42,10 +42,34 @@ require_once('skipifconnectfailure.inc');
if (false !== ($tmp = @mysqli_change_user($link, $user, $passwd . '_unknown_really', $db)))
printf("[009] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because after 3 failed change_user attempts, the server blocks you off.
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
- printf("[010] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ printf("[009a] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
+ if (!mysqli_query($link, 'SET @mysqli_change_user_test_var=1'))
+ printf("[010] Failed to set test variable: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ if (!$res = mysqli_query($link, 'SELECT @mysqli_change_user_test_var AS test_var'))
+ printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ $tmp = mysqli_fetch_assoc($res);
+ mysqli_free_result($res);
+ if (1 != $tmp['test_var'])
+ printf("[012] Cannot set test variable\n");
+
+ if (true !== ($tmp = mysqli_change_user($link, $user, $passwd, $db)))
+ printf("[013] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
+
+ if (!$res = mysqli_query($link, 'SELECT database() AS dbname, user() AS user'))
+ printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ $tmp = mysqli_fetch_assoc($res);
+ mysqli_free_result($res);
+
+ if (substr($tmp['user'], 0, strlen($user)) !== $user)
+ printf("[015] Expecting user %s, got user() %s\n", $user, $tmp['user']);
+ if ($tmp['dbname'] != $db)
+ printf("[016] Expecting database %s, got database() %s\n", $db, $tmp['dbname']);
+
if (false !== ($tmp = @mysqli_change_user($link, $user, $passwd, $db . '_unknown_really')))
printf("[011] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
@@ -121,4 +145,4 @@ require_once('skipifconnectfailure.inc');
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_change_user_old.phpt b/ext/mysqli/tests/mysqli_change_user_old.phpt
index ddb49cd18..96357ebf5 100644
--- a/ext/mysqli/tests/mysqli_change_user_old.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_old.phpt
@@ -48,6 +48,14 @@ if (mysqli_get_server_version($link) >= 50600)
if (false !== ($tmp = mysqli_change_user($link, $user, $passwd, $db . '_unknown_really')))
printf("[009] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because Percona and MariaDB block any commands after 3 failed
+ // change_user commands
+ mysqli_close($link);
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[020] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+ }
if (!mysqli_query($link, 'SET @mysqli_change_user_test_var=1'))
printf("[010] Failed to set test variable: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
@@ -116,4 +124,4 @@ if (mysqli_get_server_version($link) >= 50600)
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_change_user_oo.phpt b/ext/mysqli/tests/mysqli_change_user_oo.phpt
index 7ed2d0893..34a3e51bb 100644
--- a/ext/mysqli/tests/mysqli_change_user_oo.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_oo.phpt
@@ -46,6 +46,11 @@ if (mysqli_get_server_version($link) >= 50600)
if (false !== ($tmp = $mysqli->change_user($user, $passwd, $db . '_unknown_really')))
printf("[008] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because after 3 failed change_user attempts, the server blocks you off.
+ if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
if (!$mysqli->query('SET @mysqli_change_user_test_var=1'))
printf("[009] Failed to set test variable: [%d] %s\n", $mysqli->errno, $mysqli->error);
@@ -84,4 +89,4 @@ if (mysqli_get_server_version($link) >= 50600)
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt b/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
index 2fd1121a7..991d3c345 100644
--- a/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
+++ b/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
@@ -36,7 +36,7 @@ $port, $socket, mysqli_connect_errno(), mysqli_connect_error());
mysqli_error($link));
}
- if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(1), PRIMARY
+ if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(3), PRIMARY
KEY(id)) ENGINE=' . $engine . " DEFAULT CHARSET=gbk")) {
printf("Failed to create test table: [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
diff --git a/ext/mysqli/tests/table.inc b/ext/mysqli/tests/table.inc
index cb089bb95..e0d7a06c5 100644
--- a/ext/mysqli/tests/table.inc
+++ b/ext/mysqli/tests/table.inc
@@ -12,6 +12,11 @@ if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) {
exit(1);
}
+if (!mysqli_query($link, 'SET SESSION sql_mode=\'\'')) {
+ printf("Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ exit(1);
+}
+
if (!mysqli_query($link, 'CREATE TABLE test(id INT DEFAULT 0, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) {
printf("Failed to create test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
exit(1);
@@ -20,4 +25,4 @@ if (!mysqli_query($link, 'CREATE TABLE test(id INT DEFAULT 0, label CHAR(1), PRI
if (!mysqli_query($link, "INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f')")) {
printf("[%d] %s\n", mysqli_errno($link), mysqli_error($link));
}
-?> \ No newline at end of file
+?>
diff --git a/ext/mysqlnd/config9.m4 b/ext/mysqlnd/config9.m4
index 0e08b977a..78e1bf1df 100644
--- a/ext/mysqlnd/config9.m4
+++ b/ext/mysqlnd/config9.m4
@@ -49,3 +49,29 @@ fi
if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes" || test "$PHP_MYSQLI" != "no"; then
PHP_ADD_BUILD_DIR([ext/mysqlnd], 1)
fi
+
+dnl
+dnl Check if the compiler supports Decimal32/64/128 types from the IEEE-754 2008 version
+dnl References: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1657.pdf
+dnl http://speleotrove.com/decimal/
+dnl
+AC_CACHE_CHECK([whether whether compiler supports Decimal32/64/128 types], ac_cv_decimal_fp_supported,[
+AC_TRY_RUN( [
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ typedef float dec32 __attribute__((mode(SD)));
+ dec32 k = 99.49f;
+ double d2 = (double)k;
+ return 0;
+}
+],[
+ ac_cv_decimal_fp_supported=yes
+],[
+ ac_cv_decimal_fp_supported=no
+],[
+ ac_cv_decimal_fp_supported=no
+])])
+if test "$ac_cv_decimal_fp_supported" = "yes"; then
+ AC_DEFINE(HAVE_DECIMAL_FP_SUPPORT, 1, [Define if the compiler supports Decimal32/64/128 types.])
+fi
diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
index a0beed8b9..d55fb85b6 100644
--- a/ext/mysqlnd/mysqlnd_net.c
+++ b/ext/mysqlnd/mysqlnd_net.c
@@ -934,7 +934,7 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
DBG_RETURN(PASS);
#else
DBG_ENTER("mysqlnd_net::enable_ssl");
- DBG_INFO("MYSQLND_SSL_SUPPORTED is not defined");
+ DBG_INF("MYSQLND_SSL_SUPPORTED is not defined");
DBG_RETURN(PASS);
#endif
}
diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c b/ext/mysqlnd/mysqlnd_ps_codec.c
index d96a57721..3af19cbc9 100644
--- a/ext/mysqlnd/mysqlnd_ps_codec.c
+++ b/ext/mysqlnd/mysqlnd_ps_codec.c
@@ -174,12 +174,63 @@ ps_fetch_int64(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_l
static void
ps_fetch_float(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
{
- float value;
+ float fval;
+ double dval;
DBG_ENTER("ps_fetch_float");
- float4get(value, *row);
- ZVAL_DOUBLE(zv, value);
+ float4get(fval, *row);
(*row)+= 4;
- DBG_INF_FMT("value=%f", value);
+ DBG_INF_FMT("value=%f", fval);
+
+ /*
+ * The following is needed to correctly support 4-byte floats.
+ * Otherwise, a value of 9.99 in a FLOAT column comes out of mysqli
+ * as 9.9998998641968.
+ *
+ * For GCC, we use the built-in decimal support to "up-convert" a
+ * 4-byte float to a 8-byte double.
+ * When that is not available, we fall back to converting the float
+ * to a string and then converting the string to a double. This mimics
+ * what MySQL does.
+ */
+#ifdef HAVE_DECIMAL_FP_SUPPORT
+ {
+ typedef float dec32 __attribute__((mode(SD)));
+ dec32 d32val = fval;
+
+ /* The following cast is guaranteed to do the right thing */
+ dval = (double) d32val;
+ }
+#elif defined(PHP_WIN32)
+ {
+ /* float datatype on Winows is already 4 byte but has a precision of 7 digits */
+ char num_buf[2048];
+ (void)_gcvt_s(num_buf, 2048, fval, field->decimals >= 31 ? 7 : field->decimals);
+ dval = zend_strtod(num_buf, NULL);
+ }
+#else
+ {
+ char num_buf[2048]; /* Over allocated */
+ char *s;
+
+#ifndef FLT_DIG
+# define FLT_DIG 6
+#endif
+ /* Convert to string. Ignoring localization, etc.
+ * Following MySQL's rules. If precision is undefined (NOT_FIXED_DEC i.e. 31)
+ * or larger than 31, the value is limited to 6 (FLT_DIG).
+ */
+ s = php_gcvt(fval,
+ field->decimals >= 31 ? FLT_DIG : field->decimals,
+ '.',
+ 'e',
+ num_buf);
+
+ /* And now convert back to double */
+ dval = zend_strtod(s, NULL);
+ }
+#endif
+
+ ZVAL_DOUBLE(zv, dval);
DBG_VOID_RETURN;
}
/* }}} */
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index 0112a1394..2d4da2626 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -1438,7 +1438,7 @@ MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA * const c
No need to FREE_ALLOCA as we can reuse the
'lengths' and 'fields' arrays. For lengths its absolutely safe.
'fields' is reused because the ownership of the strings has been
- transfered above.
+ transferred above.
*/
}
/* Overflow ? */
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 1eed2eb48..a74a09071 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -902,7 +902,13 @@ static const SSL_METHOD *php_select_crypto_method(long method_value, int is_clie
return NULL;
#endif
} else if (method_value == STREAM_CRYPTO_METHOD_SSLv3) {
+#ifndef OPENSSL_NO_SSL3
return is_client ? SSLv3_client_method() : SSLv3_server_method();
+#else
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "SSLv3 support is not compiled into the OpenSSL library PHP is linked against");
+ return NULL;
+#endif
} else if (method_value == STREAM_CRYPTO_METHOD_TLSv1_0) {
return is_client ? TLSv1_client_method() : TLSv1_server_method();
} else if (method_value == STREAM_CRYPTO_METHOD_TLSv1_1) {
@@ -2247,8 +2253,13 @@ php_stream *php_openssl_ssl_socket_factory(const char *proto, size_t protolen,
sslsock->method = STREAM_CRYPTO_METHOD_SSLv2_CLIENT;
#endif
} else if (strncmp(proto, "sslv3", protolen) == 0) {
+#ifdef OPENSSL_NO_SSL3
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSLv3 support is not compiled into the OpenSSL library PHP is linked against");
+ return NULL;
+#else
sslsock->enable_on_connect = 1;
sslsock->method = STREAM_CRYPTO_METHOD_SSLv3_CLIENT;
+#endif
} else if (strncmp(proto, "tls", protolen) == 0) {
sslsock->enable_on_connect = 1;
sslsock->method = get_crypto_method(context, STREAM_CRYPTO_METHOD_TLS_CLIENT);
diff --git a/ext/pcre/pcrelib/ChangeLog b/ext/pcre/pcrelib/ChangeLog
index 1f1e86003..1e5fd3274 100644
--- a/ext/pcre/pcrelib/ChangeLog
+++ b/ext/pcre/pcrelib/ChangeLog
@@ -5311,7 +5311,7 @@ by an auxiliary program - but can then be edited by hand if required. There are
now no calls to isalnum(), isspace(), isdigit(), isxdigit(), tolower() or
toupper() in the code.
-7. Turn the malloc/free funtions variables into pcre_malloc and pcre_free and
+7. Turn the malloc/free functions variables into pcre_malloc and pcre_free and
make them global. Abolish the function for setting them, as the caller can now
set them directly.
diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c
index 5b1480bf8..2cbe48234 100644
--- a/ext/session/mod_user_class.c
+++ b/ext/session/mod_user_class.c
@@ -148,6 +148,8 @@ PHP_METHOD(SessionHandler, create_sid)
{
char *id;
+ PS_SANITY_CHECK;
+
if (zend_parse_parameters_none() == FAILURE) {
return;
}
diff --git a/ext/session/tests/bug67972.phpt b/ext/session/tests/bug67972.phpt
new file mode 100644
index 000000000..63ed3a95b
--- /dev/null
+++ b/ext/session/tests/bug67972.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #67972: SessionHandler Invalid memory read create_sid()
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+(new SessionHandler)->create_sid();
+--EXPECTF--
+Fatal error: SessionHandler::create_sid(): Cannot call default session handler in %s on line %d
diff --git a/ext/xml/tests/bug62328.phpt b/ext/simplexml/tests/bug62328.phpt
index e4c3c59d3..a6e60e488 100644
--- a/ext/xml/tests/bug62328.phpt
+++ b/ext/simplexml/tests/bug62328.phpt
@@ -1,9 +1,7 @@
--TEST--
Bug #62328 (implementing __toString and a cast to string fails)
--SKIPIF--
-<?php
-require_once("skipif.inc");
-?>
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
--FILE--
<?php
class UberSimpleXML extends SimpleXMLElement {
diff --git a/ext/soap/interop/client_round2_interop.php b/ext/soap/interop/client_round2_interop.php
index b8ee893d8..fd5767cc1 100644
--- a/ext/soap/interop/client_round2_interop.php
+++ b/ext/soap/interop/client_round2_interop.php
@@ -373,7 +373,7 @@ class Interop_Client
}
$soap =& $endpoint_info['client'];
- # XXX how do we determine a failure on retreiving/parsing wsdl?
+ # XXX how do we determine a failure on retrieving/parsing wsdl?
if ($soap->wsdl->fault) {
$fault = $soap->wsdl->fault;
$soap_test->setResult(0,'WSDL',
diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 2a5679a43..4a5829fad 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -830,7 +830,7 @@ try_again:
(zend_hash_index_find(Z_ARRVAL_PP(data), 2, (void**)&tmp) == FAILURE ||
in_domain(phpurl->host,Z_STRVAL_PP(tmp))) &&
(use_ssl || zend_hash_index_find(Z_ARRVAL_PP(data), 3, (void**)&tmp) == FAILURE)) {
- smart_str_appendl(&soap_headers, key, key_len);
+ smart_str_appendl(&soap_headers, key, key_len-1);
smart_str_appendc(&soap_headers, '=');
smart_str_appendl(&soap_headers, Z_STRVAL_PP(value), Z_STRLEN_PP(value));
smart_str_appendc(&soap_headers, ';');
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 5927e0556..44611e615 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -326,7 +326,7 @@ PHP_FUNCTION(spl_autoload)
RETURN_FALSE;
}
- if (file_exts == NULL) { /* autoload_extensions is not intialzed, set to defaults */
+ if (file_exts == NULL) { /* autoload_extensions is not initialized, set to defaults */
copy = pos1 = estrndup(SPL_DEFAULT_FILE_EXTENSIONS, sizeof(SPL_DEFAULT_FILE_EXTENSIONS)-1);
} else {
copy = pos1 = estrndup(file_exts, file_exts_len);
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index fed2a4f0f..ca14b28cc 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -3561,6 +3561,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */
REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL", ZEND_INI_SCANNER_NORMAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("INI_SCANNER_RAW", ZEND_INI_SCANNER_RAW, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED", ZEND_INI_SCANNER_TYPED, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PHP_URL_SCHEME", PHP_URL_SCHEME, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PHP_URL_HOST", PHP_URL_HOST, CONST_CS | CONST_PERSISTENT);
diff --git a/ext/standard/tests/general_functions/parse_ini_string_003.phpt b/ext/standard/tests/general_functions/parse_ini_string_003.phpt
new file mode 100644
index 000000000..570570dbf
--- /dev/null
+++ b/ext/standard/tests/general_functions/parse_ini_string_003.phpt
@@ -0,0 +1,40 @@
+--TEST--
+parse_ini_string() typed scanner mode
+--FILE--
+<?php
+
+$contents = <<<EOS
+foo = 1
+bar = 1.3
+baz = null
+qux[] = false
+qux[] = off
+qux[] = something
+qux[] = "something else"
+EOS;
+
+var_dump(parse_ini_string($contents, false, INI_SCANNER_TYPED));
+
+?>
+Done
+--EXPECTF--
+array(4) {
+ ["foo"]=>
+ int(1)
+ ["bar"]=>
+ float(1.3)
+ ["baz"]=>
+ NULL
+ ["qux"]=>
+ array(4) {
+ [0]=>
+ bool(false)
+ [1]=>
+ bool(false)
+ [2]=>
+ string(9) "something"
+ [3]=>
+ string(14) "something else"
+ }
+}
+Done
diff --git a/ext/standard/tests/strings/dirname_basic.phpt b/ext/standard/tests/strings/dirname_basic.phpt
index 2b5e4d43d..33fee611e 100644
--- a/ext/standard/tests/strings/dirname_basic.phpt
+++ b/ext/standard/tests/strings/dirname_basic.phpt
@@ -1,5 +1,5 @@
--TEST--
-Test dirname() function : basic funtionality
+Test dirname() function : basic functionality
--FILE--
<?php
/* Prototype: string dirname ( string $path );
diff --git a/ext/standard/url.c b/ext/standard/url.c
index d8271a18e..fe1b2fe11 100644
--- a/ext/standard/url.c
+++ b/ext/standard/url.c
@@ -266,7 +266,7 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
p = s;
} else {
/* memrchr is a GNU specific extension
- Emulate for wide compatability */
+ Emulate for wide compatibility */
for(p = e; p >= s && *p != ':'; p--);
}
diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c
index c30def8ba..fce70b9e0 100644
--- a/ext/sysvsem/sysvsem.c
+++ b/ext/sysvsem/sysvsem.c
@@ -66,6 +66,7 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_acquire, 0, 0, 1)
ZEND_ARG_INFO(0, sem_identifier)
+ ZEND_ARG_INFO(0, nowait)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_release, 0, 0, 1)
@@ -298,11 +299,18 @@ PHP_FUNCTION(sem_get)
static void php_sysvsem_semop(INTERNAL_FUNCTION_PARAMETERS, int acquire)
{
zval *arg_id;
+ zend_bool nowait = 0;
sysvsem_sem *sem_ptr;
struct sembuf sop;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg_id) == FAILURE) {
- return;
+ if (acquire) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|b", &arg_id, &nowait) == FAILURE) {
+ return;
+ }
+ } else {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg_id) == FAILURE) {
+ return;
+ }
}
ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, &arg_id, -1, "SysV semaphore", php_sysvsem_module.le_sem);
@@ -314,11 +322,13 @@ static void php_sysvsem_semop(INTERNAL_FUNCTION_PARAMETERS, int acquire)
sop.sem_num = SYSVSEM_SEM;
sop.sem_op = acquire ? -1 : 1;
- sop.sem_flg = SEM_UNDO;
+ sop.sem_flg = SEM_UNDO | (nowait ? IPC_NOWAIT : 0);
while (semop(sem_ptr->semid, &sop, 1) == -1) {
if (errno != EINTR) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to %s key 0x%x: %s", acquire ? "acquire" : "release", sem_ptr->key, strerror(errno));
+ if (errno != EAGAIN) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to %s key 0x%x: %s", acquire ? "acquire" : "release", sem_ptr->key, strerror(errno));
+ }
RETURN_FALSE;
}
}
diff --git a/ext/sysvsem/tests/nowait.phpt b/ext/sysvsem/tests/nowait.phpt
new file mode 100644
index 000000000..0a6fdf4a5
--- /dev/null
+++ b/ext/sysvsem/tests/nowait.phpt
@@ -0,0 +1,103 @@
+--TEST--
+sem_acquire with nowait
+--SKIPIF--
+<?php // vim600: ts=4 sw=4 syn=php fdm=marker
+if(!extension_loaded('sysvsem') || !extension_loaded('pcntl')) {
+ die("skip sysvsem and pcntl required");
+}
+?>
+--FILE--
+<?php
+$SEMKEY = ftok(__FILE__, 'P'); // Semaphore key
+
+$pid = pcntl_fork();
+
+if ($pid) {
+ echo "Parent.\n";
+
+ pcntl_signal(SIGCHLD, SIG_IGN);
+
+ // Get semaphore
+ $sem_id = sem_get($SEMKEY, 1);
+ if ($sem_id === FALSE) {
+ echo "P: fail to get semaphore";
+ exit;
+ }
+ echo "P: got semaphore $sem_id.\n";
+
+ register_shutdown_function(function () use ($sem_id) {
+ echo "P: cleanup.\n";
+ sem_remove($sem_id);
+ });
+
+ // Acquire semaphore
+ if (! sem_acquire($sem_id)) {
+ echo "P: fail to acquire semaphore $sem_id.\n";
+ sem_remove($sem_id);
+ exit;
+ }
+ echo "P: success acquire semaphore $sem_id.\n";
+
+ usleep(20000);
+
+ echo "P: releases.\n";
+ sem_release($sem_id);
+
+ usleep(5000);
+
+ // Acquire semaphore
+ if (! sem_acquire($sem_id)) {
+ echo "P: fail to acquire semaphore $sem_id.\n";
+ sem_remove($sem_id);
+ exit;
+ }
+ echo "P: success acquire semaphore $sem_id.\n";
+
+ $status = null;
+ pcntl_waitpid($pid, $status);
+
+} else {
+ usleep(10000);
+ echo "Child.\n";
+
+ // Get semaphore
+ $sem_id = sem_get($SEMKEY, 1);
+ if ($sem_id === FALSE) {
+ echo "C: fail to get semaphore";
+ exit;
+ }
+ echo "C: got semaphore $sem_id.\n";
+
+ // Acquire semaphore
+ if (! sem_acquire($sem_id)) {
+ echo "C: fail to acquire semaphore $sem_id.\n";
+ exit;
+ }
+ echo "C: success acquire semaphore $sem_id.\n";
+
+ echo "C: releases.\n";
+ sem_release($sem_id);
+
+ usleep(10000);
+
+ // Acquire semaphore
+ if (! sem_acquire($sem_id, true)) {
+ echo "C: fail to acquire semaphore $sem_id.\n";
+ exit;
+ }
+ echo "C: success acquire semaphore $sem_id.\n";
+}
+
+?>
+--EXPECTF--
+Parent.
+P: got semaphore Resource id #%i.
+P: success acquire semaphore Resource id #%i.
+Child.
+C: got semaphore Resource id #%i.
+P: releases.
+C: success acquire semaphore Resource id #%i.
+C: releases.
+P: success acquire semaphore Resource id #%i.
+C: fail to acquire semaphore Resource id #%i.
+P: cleanup.
diff --git a/ext/sysvsem/tests/sysv.phpt b/ext/sysvsem/tests/sysv.phpt
index 6f52f3bd7..ccfcf03d3 100644
--- a/ext/sysvsem/tests/sysv.phpt
+++ b/ext/sysvsem/tests/sysv.phpt
@@ -9,8 +9,8 @@ if(!extension_loaded('sysvsem') || !extension_loaded('sysvshm')) {
--FILE--
<?php
$MEMSIZE = 512; // size of shared memory to allocate
-$SEMKEY = 1; // Semaphore key
-$SHMKEY = 2; // Shared memory key
+$SEMKEY = ftok(__FILE__, 'P'); // Semaphore key
+$SHMKEY = ftok(__FILE__, 'Q'); // Shared memory key
echo "Start.\n";
// Get semaphore
diff --git a/ext/zlib/tests/bug67724.gz.gz b/ext/zlib/tests/bug67724.gz.gz
new file mode 100644
index 000000000..ab1db9258
--- /dev/null
+++ b/ext/zlib/tests/bug67724.gz.gz
Binary files differ
diff --git a/ext/zlib/tests/bug67724.phpt b/ext/zlib/tests/bug67724.phpt
new file mode 100644
index 000000000..1e5026f65
--- /dev/null
+++ b/ext/zlib/tests/bug67724.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #67724 (chained zlib filters silently fail with large amounts of data)
+--SKIPIF--
+<?php
+extension_loaded("zlib") or die("skip need ext/zlib");
+?>
+--FILE--
+<?php
+echo "Test\n";
+
+$f = fopen(__DIR__."/bug67724.gz.gz", "rb")
+ or die(current(error_get_last()));
+stream_filter_append($f, "zlib.inflate", STREAM_FILTER_READ, ["window" => 30]);
+stream_filter_append($f, "zlib.inflate", STREAM_FILTER_READ, ["window" => 30]);
+for ($i = 0; !feof($f); $i += strlen(fread($f, 0x1000)))
+ ;
+fclose($f);
+
+var_dump($i);
+
+?>
+DONE
+--EXPECT--
+Test
+int(25600000)
+DONE
diff --git a/ext/zlib/zlib_filter.c b/ext/zlib/zlib_filter.c
index 9a59c3a85..c81500854 100644
--- a/ext/zlib/zlib_filter.c
+++ b/ext/zlib/zlib_filter.c
@@ -302,7 +302,7 @@ static php_stream_filter *php_zlib_filter_create(const char *filtername, zval *f
data->strm.zalloc = (alloc_func) php_zlib_alloc;
data->strm.zfree = (free_func) php_zlib_free;
- data->strm.avail_out = data->outbuf_len = data->inbuf_len = 2048;
+ data->strm.avail_out = data->outbuf_len = data->inbuf_len = 0x8000;
data->strm.next_in = data->inbuf = (Bytef *) pemalloc(data->inbuf_len, persistent);
if (!data->inbuf) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %zd bytes", data->inbuf_len);
diff --git a/main/php_config.h.in b/main/php_config.h.in
index 69d255609..00246a920 100644
--- a/main/php_config.h.in
+++ b/main/php_config.h.in
@@ -577,6 +577,9 @@
/* */
#undef HAVE_DCNGETTEXT
+/* Define if the compiler supports Decimal32/64/128 types. */
+#undef HAVE_DECIMAL_FP_SUPPORT
+
/* Whether system headers declare timezone */
#undef HAVE_DECLARED_TIMEZONE
diff --git a/main/php_variables.c b/main/php_variables.c
index 90cfcb20b..b2df88be6 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -241,7 +241,7 @@ typedef struct post_var_data {
static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSRMLS_DC)
{
- char *ksep, *vsep;
+ char *ksep, *vsep, *val;
size_t klen, vlen;
/* FIXME: string-size_t */
unsigned int new_vlen;
@@ -272,15 +272,17 @@ static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSR
vlen = 0;
}
-
php_url_decode(var->ptr, klen);
+
+ val = estrndup(ksep, vlen);
if (vlen) {
- vlen = php_url_decode(ksep, vlen);
+ vlen = php_url_decode(val, vlen);
}
- if (sapi_module.input_filter(PARSE_POST, var->ptr, &ksep, vlen, &new_vlen TSRMLS_CC)) {
- php_register_variable_safe(var->ptr, ksep, new_vlen, arr TSRMLS_CC);
+ if (sapi_module.input_filter(PARSE_POST, var->ptr, &val, vlen, &new_vlen TSRMLS_CC)) {
+ php_register_variable_safe(var->ptr, val, new_vlen, arr TSRMLS_CC);
}
+ efree(val);
var->ptr = vsep + (vsep != var->end);
return 1;
diff --git a/main/php_version.h b/main/php_version.h
index 90dfd761b..fe6057d58 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -2,7 +2,7 @@
/* edit configure.in to change version number */
#define PHP_MAJOR_VERSION 5
#define PHP_MINOR_VERSION 6
-#define PHP_RELEASE_VERSION 0
+#define PHP_RELEASE_VERSION 1
#define PHP_EXTRA_VERSION ""
-#define PHP_VERSION "5.6.0"
-#define PHP_VERSION_ID 50600
+#define PHP_VERSION "5.6.1"
+#define PHP_VERSION_ID 50601
diff --git a/php.ini-development b/php.ini-development
index 148d194fe..bcc9ac6ba 100644
--- a/php.ini-development
+++ b/php.ini-development
@@ -1765,7 +1765,7 @@ mssql.secure_connection = Off
;mbstring.encoding_translation = Off
; automatic encoding detection order.
-; "auto" detect order is changed accoding to mbstring.language
+; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
diff --git a/php.ini-production b/php.ini-production
index 5410b3de5..a2a50ea2f 100644
--- a/php.ini-production
+++ b/php.ini-production
@@ -1763,7 +1763,7 @@ mssql.secure_connection = Off
;mbstring.encoding_translation = Off
; automatic encoding detection order.
-; "auto" detect order is changed accoding to mbstring.language
+; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
diff --git a/sapi/cli/php.1.in b/sapi/cli/php.1.in
index 4d536df53..c062f3d20 100644
--- a/sapi/cli/php.1.in
+++ b/sapi/cli/php.1.in
@@ -1,24 +1,24 @@
-.TH PHP 1 "2014" "The PHP Group" "Scripting Language"
+.TH @program_prefix@php 1 "2014" "The PHP Group" "Scripting Language"
.SH NAME
-php \- PHP Command Line Interface 'CLI'
+@program_prefix@php \- PHP Command Line Interface 'CLI'
.P
-php-cgi \- PHP Common Gateway Interface 'CGI' command
+@program_prefix@php-cgi \- PHP Common Gateway Interface 'CGI' command
.SH SYNOPSIS
-.B php
+.B @program_prefix@php
[options] [
.B \-f\fP ]
.IR file
[[\-\-]
.IR args.\|.\|. ]
.LP
-.B php
+.B @program_prefix@php
[options]
.B \-r
.IR code
[[\-\-]
.IR args.\|.\|. ]
.LP
-.B php
+.B @program_prefix@php
[options] [\-B
.IR begin_code ]
.B \-R
@@ -28,7 +28,7 @@ php-cgi \- PHP Common Gateway Interface 'CGI' command
[[\-\-]
.IR args.\|.\|. ]
.LP
-.B php
+.B @program_prefix@php
[options] [\-B
.IR begin_code ]
.B \-F
@@ -38,13 +38,13 @@ php-cgi \- PHP Common Gateway Interface 'CGI' command
[[\-\-]
.IR args.\|.\|. ]
.LP
-.B php
+.B @program_prefix@php
[options] \-\- [
.IR args.\|.\|. ]
.LP
-\fBphp \fP[options] \fB\-a\fP
+\fB@program_prefix@php \fP[options] \fB\-a\fP
.LP
-.B php
+.B @program_prefix@php
[options] \-S
.IR addr:port
[\-t
@@ -374,35 +374,35 @@ The standard configuration file will only be used when
cannot be found.
.SH EXAMPLES
.TP 5
-\fIphp \-r 'echo "Hello World\\n";'\fP
+\fI@program_prefix@php \-r 'echo "Hello World\\n";'\fP
This command simply writes the text "Hello World" to standard out.
.TP
-\fIphp \-r 'print_r(gd_info());'\fP
+\fI@program_prefix@php \-r 'print_r(gd_info());'\fP
This shows the configuration of your gd extension. You can use this
to easily check which image formats you can use. If you have any
dynamic modules you may want to use the same ini file that php uses
when executed from your webserver. There are more extensions which
have such a function. For dba use:
.RS
-\fIphp \-r 'print_r(dba_handlers(1));'\fP
+\fI@program_prefix@php \-r 'print_r(dba_handlers(1));'\fP
.RE
.TP
-\fIphp \-R 'echo strip_tags($argn)."\\n";'\fP
+\fI@program_prefix@php \-R 'echo strip_tags($argn)."\\n";'\fP
This PHP command strips off the HTML tags line by line and outputs the
result. To see how it works you can first look at the following PHP command
\'\fIphp \-d html_errors=1 \-i\fP\' which uses PHP to output HTML formatted
configuration information. If you then combine those two
\'\fIphp \.\.\.|php \.\.\.\fP\' you'll see what happens.
.TP
-\fIphp \-E 'echo "Lines: $argi\\n";'\fP
+\fI@program_prefix@php \-E 'echo "Lines: $argi\\n";'\fP
Using this PHP command you can count the lines being input.
.TP
-\fIphp \-R '@$l+=count(file($argn));' \-E 'echo "Lines:$l\\n";'\fP
+\fI@program_prefix@php \-R '@$l+=count(file($argn));' \-E 'echo "Lines:$l\\n";'\fP
In this example PHP expects each input line being a file. It counts all lines
of the files specified by each input line and shows the summarized result.
You may combine this with tools like find and change the php scriptlet.
.TP
-\fIphp \-R 'echo "$argn\\n"; fgets(STDIN);'\fP
+\fI@program_prefix@php \-R 'echo "$argn\\n"; fgets(STDIN);'\fP
Since you have access to STDIN from within \-B \-R \-F and \-E you can skip
certain input lines with your code. But note that in such cases $argi only
counts the lines being processed by php itself. Having read this you will
diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c
index 3413a423a..789ebf246 100644
--- a/sapi/litespeed/lsapi_main.c
+++ b/sapi/litespeed/lsapi_main.c
@@ -195,15 +195,22 @@ static char *sapi_lsapi_getenv( char * name, size_t name_len TSRMLS_DC )
/* }}} */
-/*
+
+
static int add_variable( const char * pKey, int keyLen, const char * pValue, int valLen,
void * arg )
{
- php_register_variable_safe((char *)pKey, (char *)pValue, valLen, (zval *)arg TSRMLS_CC);
- return 1;
+ int filter_arg = (arg == PG(http_globals)[TRACK_VARS_ENV])?PARSE_ENV:PARSE_SERVER;
+ char * new_val = (char *) pValue;
+ unsigned int new_val_len;
+
+ if (sapi_module.input_filter(filter_arg, (char *)pKey, &new_val, valLen, &new_val_len TSRMLS_CC)) {
+ php_register_variable_safe((char *)pKey, new_val, new_val_len, (zval *)arg );
+ }
+ return 1;
}
-*/
+/*
static int add_variable( const char * pKey, int keyLen, const char * pValue, int valLen,
void * arg )
{
@@ -222,6 +229,55 @@ static int add_variable( const char * pKey, int keyLen, const char * pValue, int
#endif
return 1;
}
+*/
+
+static void litespeed_php_import_environment_variables(zval *array_ptr TSRMLS_DC)
+{
+ char buf[128];
+ char **env, *p, *t = buf;
+ size_t alloc_size = sizeof(buf);
+ unsigned long nlen; /* ptrdiff_t is not portable */
+
+ if (PG(http_globals)[TRACK_VARS_ENV] &&
+ array_ptr != PG(http_globals)[TRACK_VARS_ENV] &&
+ Z_TYPE_P(PG(http_globals)[TRACK_VARS_ENV]) == IS_ARRAY &&
+ zend_hash_num_elements(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_ENV])) > 0
+ ) {
+ zval_dtor(array_ptr);
+ *array_ptr = *PG(http_globals)[TRACK_VARS_ENV];
+ INIT_PZVAL(array_ptr);
+ zval_copy_ctor(array_ptr);
+ return;
+ } else if (PG(http_globals)[TRACK_VARS_SERVER] &&
+ array_ptr != PG(http_globals)[TRACK_VARS_SERVER] &&
+ Z_TYPE_P(PG(http_globals)[TRACK_VARS_SERVER]) == IS_ARRAY &&
+ zend_hash_num_elements(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER])) > 0
+ ) {
+ zval_dtor(array_ptr);
+ *array_ptr = *PG(http_globals)[TRACK_VARS_SERVER];
+ INIT_PZVAL(array_ptr);
+ zval_copy_ctor(array_ptr);
+ return;
+ }
+
+ for (env = environ; env != NULL && *env != NULL; env++) {
+ p = strchr(*env, '=');
+ if (!p) { /* malformed entry? */
+ continue;
+ }
+ nlen = p - *env;
+ if (nlen >= alloc_size) {
+ alloc_size = nlen + 64;
+ t = (t == buf ? emalloc(alloc_size): erealloc(t, alloc_size));
+ }
+ memcpy(t, *env, nlen);
+ t[nlen] = '\0';
+ add_variable(t, nlen, p + 1, strlen( p + 1 ), array_ptr TSRMLS_CC);
+ }
+ if (t != buf && t != NULL) {
+ efree(t);
+ }
+}
#if ((PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 4) || PHP_MAJOR_VERSION < 5)
@@ -255,6 +311,8 @@ static void sapi_lsapi_register_variables(zval *track_vars_array TSRMLS_DC)
if ( (SG(request_info).request_uri ) )
php_self = (SG(request_info).request_uri );
+ litespeed_php_import_environment_variables(track_vars_array TSRMLS_CC);
+
#if ((PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 4) || PHP_MAJOR_VERSION < 5)
if (!PG(magic_quotes_gpc)) {
#endif
@@ -268,7 +326,6 @@ static void sapi_lsapi_register_variables(zval *track_vars_array TSRMLS_DC)
add_variable_magic_quote("PHP_SELF", 8, php_self, strlen( php_self ), track_vars_array );
}
#endif
- php_import_environment_variables(track_vars_array TSRMLS_CC);
} else {
php_import_environment_variables(track_vars_array TSRMLS_CC);
@@ -370,7 +427,7 @@ static void sapi_lsapi_log_message(char *message TSRMLS_DC)
static sapi_module_struct lsapi_sapi_module =
{
"litespeed",
- "LiteSpeed V6.6",
+ "LiteSpeed V6.7",
php_lsapi_startup, /* startup */
php_module_shutdown_wrapper, /* shutdown */
diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c
index 786a3bd20..aac823fc1 100644
--- a/sapi/litespeed/lsapilib.c
+++ b/sapi/litespeed/lsapilib.c
@@ -1912,9 +1912,13 @@ int LSAPI_ForeachOrgHeader_r( LSAPI_Request * pReq,
int ret;
int count = 0;
struct _headerInfo headers[512];
+
if ( !pReq || !fn )
return -1;
-
+
+ if ( !pReq->m_pHeaderIndex )
+ return 0;
+
for( i = 0; i < H_TRANSFER_ENCODING; ++i )
{
if ( pReq->m_pHeaderIndex->m_headerOff[i] )
diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c
index 1fbd18a42..c881559e6 100644
--- a/sapi/phpdbg/phpdbg.c
+++ b/sapi/phpdbg/phpdbg.c
@@ -1296,14 +1296,14 @@ phpdbg_main:
/* do not install sigint handlers for remote consoles */
/* sending SIGINT then provides a decent way of shutting down the server */
-#if defined(ZEND_SIGNALS) && !defined(_WIN32)
- if (listen[0] < 0) {
- zend_try { zend_signal(SIGINT, phpdbg_sigint_handler TSRMLS_CC); } zend_end_try();
- }
-#elif !defined(_WIN32)
+#ifndef _WIN32
if (listen[0] < 0) {
#endif
+#if defined(ZEND_SIGNALS) && !defined(_WIN32)
+ zend_try { zend_signal(SIGINT, phpdbg_sigint_handler TSRMLS_CC); } zend_end_try();
+#else
signal(SIGINT, phpdbg_sigint_handler);
+#endif
#ifndef _WIN32
}
#endif
diff --git a/scripts/dev/find_tested.php b/scripts/dev/find_tested.php
index f95c46251..e841e2e95 100644
--- a/scripts/dev/find_tested.php
+++ b/scripts/dev/find_tested.php
@@ -88,7 +88,7 @@ function mark_methods_as_tested($method_info, $phpt_files) {
foreach($tested_functions as $tested_function) {
- // go through method info array marking this funtion as tested
+ // go through method info array marking this function as tested
foreach($method_info as &$current_method_record) {
if (strcasecmp($tested_function, $current_method_record[METHOD_NAME]) == 0) {
// matched the method name
diff --git a/scripts/man1/php-config.1.in b/scripts/man1/php-config.1.in
index 5c60408f4..ae2ee56bb 100644
--- a/scripts/man1/php-config.1.in
+++ b/scripts/man1/php-config.1.in
@@ -1,12 +1,12 @@
-.TH php\-config 1 "2010" "The PHP Group" "Scripting Language"
+.TH @program_prefix@php\-config 1 "2014" "The PHP Group" "Scripting Language"
.SH NAME
-php\-config \- get information about PHP configuration and compile options
+@program_prefix@php\-config \- get information about PHP configuration and compile options
.SH SYNOPSIS
-.B php\-config
+.B @program_prefix@php\-config
[options]
.LP
.SH DESCRIPTION
-.B php\-config
+.B @program_prefix@php\-config
is a simple shell script for obtaining information about installed PHP configuration.
.SH OPTIONS
.TP 15
@@ -57,15 +57,15 @@ PHP version
.PD 0
.B \-\-vernum
PHP version as integer
-.TP
+.RS
.PD 1
.P
.SH SEE ALSO
-.BR php (1)
+.BR @program_prefix@php (1)
.SH VERSION INFORMATION
This manpage describes \fBphp\fP, version @PHP_VERSION@.
.SH COPYRIGHT
-Copyright \(co 1997\-2010 The PHP Group
+Copyright \(co 1997\-2014 The PHP Group
.LP
This source file is subject to version 3.01 of the PHP license,
that is bundled with this package in the file LICENSE, and is
diff --git a/scripts/man1/phpize.1.in b/scripts/man1/phpize.1.in
index 8f62f867b..e49adb1b7 100644
--- a/scripts/man1/phpize.1.in
+++ b/scripts/man1/phpize.1.in
@@ -1,12 +1,12 @@
-.TH phpize 1 "2010" "The PHP Group" "Scripting Language"
+.TH @program_prefix@phpize 1 "2014" "The PHP Group" "Scripting Language"
.SH NAME
-phpize \- prepare a PHP extension for compiling
+@program_prefix@phpize \- prepare a PHP extension for compiling
.SH SYNOPSIS
-.B phpize
+.B @program_prefix@phpize
[options]
.LP
.SH DESCRIPTION
-.B phpize
+.B @program_prefix@phpize
is a shell script to prepare PHP extension for compiling.
.SH OPTIONS
.TP 15
@@ -24,15 +24,15 @@ Prints usage information
.PD 1
.B \-v
Prints API version information
-.TP
+.RS
.PD 1
.P
.SH SEE ALSO
-.BR php (1)
+.BR @program_prefix@php (1)
.SH VERSION INFORMATION
This manpage describes \fBphp\fP, version @PHP_VERSION@.
.SH COPYRIGHT
-Copyright \(co 1997\-2010 The PHP Group
+Copyright \(co 1997\-2014 The PHP Group
.LP
This source file is subject to version 3.01 of the PHP license,
that is bundled with this package in the file LICENSE, and is
diff --git a/server-tests-config.php b/server-tests-config.php
index 0ddff28cb..a4fa88a5b 100755
--- a/server-tests-config.php
+++ b/server-tests-config.php
@@ -52,7 +52,7 @@ $conf = array(
/* file extension of pages requested via http
this allows for php to be configured to parse
- extensions other than php, usefull for multiple
+ extensions other than php, useful for multiple
configurations under a single webserver */
'TEST_WEB_EXT' => 'php',
diff --git a/win32/build/confutils.js b/win32/build/confutils.js
index 489adf34a..d8155bbaa 100644
--- a/win32/build/confutils.js
+++ b/win32/build/confutils.js
@@ -1521,7 +1521,7 @@ function output_as_table(header, ar_out)
{
var l = header.length;
var cols = 80;
- var fixedlenght = "";
+ var fixedlength = "";
var t = 0;
var i,j,k,m;
var out = "| ";
diff --git a/win32/php_stdint.h b/win32/php_stdint.h
index 0d63615c6..cb5ad1706 100644
--- a/win32/php_stdint.h
+++ b/win32/php_stdint.h
@@ -36,6 +36,10 @@
#ifndef _MSC_STDINT_H_ // [
#define _MSC_STDINT_H_
+#ifndef _STDINT
+# define _STDINT
+#endif
+
#if _MSC_VER > 1000
#pragma once
#endif
diff --git a/win32/sendmail.h b/win32/sendmail.h
index 0a7698e2f..6fed77ea0 100644
--- a/win32/sendmail.h
+++ b/win32/sendmail.h
@@ -5,7 +5,7 @@
#endif
#define HOST_NAME_LEN 256
-#define MAX_APPNAME_LENGHT 100
+#define MAX_APPNAME_LENGTH 100
#define MAIL_BUFFER_SIZE (1024*4) /* 4k buffer */
/* Return values */
#define MIN_ERROR_INDEX 0 /* Always 0 like SUCCESS */