summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2014-06-20 12:01:47 +0200
committerOndřej Surý <ondrej@sury.org>2014-06-20 12:01:47 +0200
commit60d44b592c4c4fdcbbf92db2882a97a9cc54713c (patch)
tree58f7068d9acde2338841263461fbf95d77a9ee2e
parentc63e1a09f5cbd757f59beb729fb0fb36516819a9 (diff)
downloadphp-60d44b592c4c4fdcbbf92db2882a97a9cc54713c.tar.gz
New upstream version 5.6.0~rc1+dfsgupstream/5.6.0_rc1+dfsg
-rw-r--r--.travis.yml4
-rw-r--r--LICENSE2
-rw-r--r--NEWS66
-rw-r--r--[-rwxr-xr-x]README.namespaces0
-rw-r--r--[-rwxr-xr-x]UPGRADING0
-rw-r--r--Zend/tests/bug67436/a.php10
-rw-r--r--Zend/tests/bug67436/b.php8
-rw-r--r--Zend/tests/bug67436/bug67436.phpt26
-rw-r--r--Zend/tests/bug67436/bug67436_nohandler.phpt24
-rw-r--r--Zend/tests/bug67436/c.php5
-rw-r--r--Zend/tests/closure_049.phpt22
-rw-r--r--Zend/tests/closure_050.phpt22
-rw-r--r--Zend/tests/closure_051.phpt21
-rw-r--r--Zend/tests/closure_052.phpt21
-rw-r--r--Zend/tests/closure_053.phpt22
-rw-r--r--Zend/tests/closure_054.phpt22
-rw-r--r--Zend/tests/closure_055.phpt21
-rw-r--r--Zend/tests/closure_056.phpt21
-rw-r--r--Zend/tests/closure_bug66622.phpt37
-rw-r--r--Zend/tests/dereference_002.phpt2
-rw-r--r--Zend/zend_builtin_functions.c32
-rw-r--r--Zend/zend_closures.c4
-rw-r--r--Zend/zend_compile.c10
-rw-r--r--Zend/zend_execute.c3
-rw-r--r--Zend/zend_execute_API.c2
-rw-r--r--Zend/zend_vm_def.h11
-rw-r--r--Zend/zend_vm_execute.h41
-rw-r--r--acinclude.m42
-rw-r--r--aclocal.m42
-rw-r--r--build/build.mk14
-rwxr-xr-xconfigure106
-rw-r--r--configure.in2
-rw-r--r--ext/date/lib/parse_date.c2
-rw-r--r--ext/date/lib/parse_date.re2
-rw-r--r--ext/date/lib/parse_iso_intervals.re2
-rw-r--r--ext/date/lib/timezonedb.h1310
-rw-r--r--ext/date/php_date.c6
-rw-r--r--ext/date/tests/bug41523.phpt2
-rw-r--r--ext/date/tests/bug67118.phpt18
-rw-r--r--ext/date/tests/bug67118_2.phpt35
-rw-r--r--ext/dom/tests/DOMDocument_validate_external_dtd.phpt1
-rw-r--r--ext/dom/tests/bug67081.phpt4
-rw-r--r--ext/exif/tests/exif004.phpt2
-rw-r--r--ext/fileinfo/libmagic/cdf.c19
-rw-r--r--ext/fileinfo/libmagic/softmagic.c14
-rw-r--r--ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt1
-rwxr-xr-xext/mbstring/libmbfl/cvsclean14
-rw-r--r--ext/mysqli/tests/bug33491.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_change_user_new.phpt2
-rw-r--r--ext/mysqli/tests/table.inc2
-rw-r--r--ext/mysqlnd/mysqlnd_charset.c50
-rw-r--r--ext/oci8/LICENSE2
-rwxr-xr-xext/openssl/openssl.c22
-rw-r--r--ext/openssl/tests/bug65698.crt28
-rw-r--r--ext/openssl/tests/bug65698.phpt19
-rw-r--r--ext/openssl/tests/cve-2013-6420.phpt2
-rw-r--r--ext/openssl/tests/openssl_spki_verify.phpt16
-rw-r--r--ext/pdo/pdo_sql_parser.re2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt2
-rw-r--r--ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt2
-rw-r--r--ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt2
-rw-r--r--ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt2
-rw-r--r--ext/soap/soap.c23
-rw-r--r--ext/soap/tests/bug49898.phpt14
-rw-r--r--ext/sockets/sendrecvmsg.c2
-rw-r--r--ext/sockets/windows_common.h2
-rw-r--r--ext/spl/spl_array.c3
-rw-r--r--ext/spl/spl_dllist.c1
-rw-r--r--ext/spl/spl_observer.c1
-rw-r--r--ext/spl/tests/ArrayObject_unserialize_empty_string.phpt9
-rw-r--r--ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt6
-rw-r--r--ext/spl/tests/bug66127.phpt25
-rw-r--r--ext/spl/tests/iterator_035.phpt2
-rw-r--r--ext/spl/tests/unserialize.phpt43
-rw-r--r--ext/standard/array.c3
-rw-r--r--ext/standard/basic_functions.c112
-rw-r--r--ext/standard/dns.c4
-rw-r--r--ext/standard/http_fopen_wrapper.c5
-rw-r--r--ext/standard/tests/general_functions/header_redirection_001.phpt11
-rw-r--r--ext/standard/tests/general_functions/header_redirection_002.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_003.phpt11
-rw-r--r--ext/standard/tests/general_functions/header_redirection_004.phpt11
-rw-r--r--ext/standard/tests/general_functions/header_redirection_005.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_006.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_007.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_008.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_009.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_010.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_011.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_012.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_013.phpt12
-rw-r--r--ext/standard/tests/general_functions/header_redirection_014.phpt12
-rw-r--r--ext/standard/tests/general_functions/putenv.phpt9
-rw-r--r--ext/standard/tests/http/bug67430.phpt49
-rw-r--r--ext/standard/tests/serialize/serialization_error_001.phpt6
-rw-r--r--ext/standard/tests/serialize/unserialize_consumed.phpt27
-rw-r--r--ext/standard/url_scanner_ex.re2
-rw-r--r--ext/standard/var.c10
-rw-r--r--ext/standard/var_unserializer.c2
-rw-r--r--ext/standard/var_unserializer.re2
-rw-r--r--ext/tokenizer/tests/bug67395.phpt15
-rw-r--r--ext/tokenizer/tokenizer_data.c4
-rw-r--r--ext/zlib/tests/gzseek_basic2.phpt2
-rw-r--r--ext/zlib/tests/gzseek_variation1.phpt2
-rw-r--r--ext/zlib/tests/gzseek_variation4.phpt2
-rw-r--r--ext/zlib/tests/gzseek_variation5.phpt2
-rw-r--r--header2
-rw-r--r--main/SAPI.c2
-rw-r--r--main/php_config.h.in3
-rw-r--r--main/php_version.h4
-rw-r--r--sapi/cli/php.1.in4
-rw-r--r--sapi/cli/php_cli_server.c10
-rw-r--r--sapi/cli/tests/bug67429.phpt49
-rw-r--r--sapi/phpdbg/.gitignore6
-rw-r--r--sapi/phpdbg/.travis.yml11
-rw-r--r--sapi/phpdbg/Makefile.frag15
-rw-r--r--sapi/phpdbg/config.m43
-rw-r--r--sapi/phpdbg/phpdbg.h7
-rw-r--r--sapi/phpdbg/phpdbg_btree.c2
-rw-r--r--sapi/phpdbg/phpdbg_btree.h2
-rw-r--r--sapi/phpdbg/phpdbg_lexer.c3121
-rw-r--r--sapi/phpdbg/phpdbg_lexer.h385
-rw-r--r--sapi/phpdbg/phpdbg_lexer.l270
-rw-r--r--sapi/phpdbg/phpdbg_parser.c550
-rw-r--r--sapi/phpdbg/phpdbg_parser.h24
-rw-r--r--sapi/phpdbg/phpdbg_parser.y152
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c37
-rw-r--r--sapi/phpdbg/phpdbg_utils.c9
-rw-r--r--sapi/phpdbg/phpdbg_utils.h20
-rw-r--r--sapi/phpdbg/tests/run-tests.php22
-rwxr-xr-xsapi/phpdbg/travis/ci.sh6
-rwxr-xr-xsvnclean.bat2
-rw-r--r--tests/classes/bug63462.phpt12
-rwxr-xr-xtravis/compile.sh3
-rwxr-xr-xvcsclean6
-rw-r--r--win32/build/cvsclean.js120
-rw-r--r--win32/build/svnclean.js120
-rw-r--r--win32/build/template.rc2
141 files changed, 3447 insertions, 4266 deletions
diff --git a/.travis.yml b/.travis.yml
index 5b49434cc..8c72df918 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,4 +32,6 @@ before_script:
- . ./travis/ext/pdo_pgsql/setup.sh
# Run PHPs run-tests.php
-script: ./sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --show-diff --set-timeout 120
+script:
+ - ./sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --show-diff --set-timeout 120
+ - ./sapi/cli/php sapi/phpdbg/tests/run-tests.php -diff2stdout --phpdbg sapi/phpdbg/phpdbg
diff --git a/LICENSE b/LICENSE
index 42536af32..6059c80e1 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
--------------------------------------------------------------------
The PHP License, version 3.01
-Copyright (c) 1999 - 2012 The PHP Group. All rights reserved.
+Copyright (c) 1999 - 2014 The PHP Group. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/NEWS b/NEWS
index f57932c5b..a8af1ea8d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,68 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+19 Jun 2014, PHP 5.6.0 Release Candidate 1
+
+- Core:
+ . Implemented FR #64744 (Differentiate between member function call on a null
+ and non-null, non-objects). (Boro Sitnikovski)
+ . Fixed bug #67436 (Autoloader isn't called if two method definitions don't
+ match). (Bob)
+ . Fixed bug #66622 (Closures do not correctly capture the late bound class
+ (static::) in some cases). (Levi Morrison)
+ . Fixed bug #67390 (insecure temporary file use in the configure script).
+ (Remi) (CVE-2014-3981)
+ . Fixed bug #67392 (dtrace breaks argument unpack). (Nikita)
+ . Fixed bug #67428 (header('Location: foo') will override a 308-399 response
+ code). (Adam)
+ . Fixed bug #67433 (SIGSEGV when using count() on an object implementing
+ Countable). (Matteo)
+ . Fixed bug #67399 (putenv with empty variable may lead to crash). (Stas)
+
+- CLI server:
+ . Implemented FR #67429 (CLI server is missing some new HTTP response codes).
+ (Adam)
+ . Fixed Bug #67406 (built-in web-server segfaults on startup). (Remi)
+
+- Fileinfo:
+ . Fixed bug #67410 (fileinfo: mconvert incorrect handling of truncated pascal
+ string size). (Francisco Alonso, Jan Kaluza, Remi)
+ . Fixed bug #67411 (fileinfo: cdf_check_stream_offset insufficient boundary
+ check). (Francisco Alonso, Jan Kaluza, Remi)
+ . Fixed bug #67412 (fileinfo: cdf_count_chain insufficient boundary check).
+ (Francisco Alonso, Jan Kaluza, Remi)
+ . Fixed bug #67413 (fileinfo: cdf_read_property_info insufficient boundary
+ check). (Francisco Alonso, Jan Kaluza, Remi)
+
+- mysqlnd:
+ . Added support for gb18030 from MySQL 5.7. (Andrey)
+
+- Network:
+ . Fixed bug #67432 (Fix potential segfault in dns_get_record()).
+ (CVE-2014-4049). (Sara)
+
+- OpenSSL:
+ . Fixed bug #65698 (certificates validity parsing does not work past 2050).
+ (Paul Oehler)
+ . Fixed bug #66636 (openssl_x509_parse warning with V_ASN1_GENERALIZEDTIME).
+ (Paul Oehler)
+
+- phpdbg:
+ . Fixed bug #67212 (phpdbg uses non-standard TIOCGWINSZ). (Ferenc)
+
+- SOAP:
+ . Implemented FR #49898 (Add SoapClient::__getCookies()). (Boro Sitnikovski)
+
+- SPL:
+ . Fixed bug #66127 (Segmentation fault with ArrayObject unset). (Stas)
+ . Fixed request #67453 (Allow to unserialize empty data). (Remi)
+
+- Streams:
+ . Fixed bug #67430 (http:// wrapper doesn't follow 308 redirects). (Adam)
+
+- Tokenizer:
+ . Fixed bug #67395 (token_name() does not return name for T_POW and T_POW_EQUAL
+ token). (Ferenc)
+
05 Jun 2014, PHP 5.6.0 Beta 4
- Core:
@@ -8,6 +71,9 @@ PHP NEWS
- Date:
. Fixed bug #67308 (Serialize of DateTime truncates fractions of second).
(Adam)
+ . Fixed regression in fix for bug #67118 (constructor can't be called twice).
+ (Remi)
+
- Fileinfo:
. Fixed bug #67327 (fileinfo: CDF infinite loop in nelements DoS).
diff --git a/README.namespaces b/README.namespaces
index 9c427b634..9c427b634 100755..100644
--- a/README.namespaces
+++ b/README.namespaces
diff --git a/UPGRADING b/UPGRADING
index 7a174c47c..7a174c47c 100755..100644
--- a/UPGRADING
+++ b/UPGRADING
diff --git a/Zend/tests/bug67436/a.php b/Zend/tests/bug67436/a.php
new file mode 100644
index 000000000..c560c2db7
--- /dev/null
+++ b/Zend/tests/bug67436/a.php
@@ -0,0 +1,10 @@
+<?php
+
+class a {
+ public function test($arg = c::TESTCONSTANT) {
+ echo __METHOD__ . "($arg)\n";
+ }
+
+ static public function staticTest() {
+ }
+}
diff --git a/Zend/tests/bug67436/b.php b/Zend/tests/bug67436/b.php
new file mode 100644
index 000000000..793a1394d
--- /dev/null
+++ b/Zend/tests/bug67436/b.php
@@ -0,0 +1,8 @@
+<?php
+
+class b extends a {
+ public function test() {
+ echo __METHOD__ . "()\n";
+ parent::test();
+ }
+}
diff --git a/Zend/tests/bug67436/bug67436.phpt b/Zend/tests/bug67436/bug67436.phpt
new file mode 100644
index 000000000..49b8b491d
--- /dev/null
+++ b/Zend/tests/bug67436/bug67436.phpt
@@ -0,0 +1,26 @@
+--TEST--
+bug67436: Autoloader isn't called if user defined error handler is present
+
+--INI--
+error_reporting=
+
+--FILE--
+<?php
+
+spl_autoload_register(function($classname) {
+ if (in_array($classname, array('a','b','c'))) {
+ require_once ($classname . '.php');
+ }
+});
+
+set_error_handler(function ($errno, $errstr, $errfile, $errline) {
+}, error_reporting());
+
+a::staticTest();
+
+$b = new b();
+$b->test();
+
+--EXPECT--
+b::test()
+a::test(c::TESTCONSTANT)
diff --git a/Zend/tests/bug67436/bug67436_nohandler.phpt b/Zend/tests/bug67436/bug67436_nohandler.phpt
new file mode 100644
index 000000000..464f71153
--- /dev/null
+++ b/Zend/tests/bug67436/bug67436_nohandler.phpt
@@ -0,0 +1,24 @@
+--TEST--
+bug67436: E_STRICT instead of custom error handler
+
+--INI--
+error_reporting=-1
+
+--FILE--
+<?php
+
+spl_autoload_register(function($classname) {
+ if (in_array($classname, array('a','b','c'))) {
+ require_once ($classname . '.php');
+ }
+});
+
+a::staticTest();
+
+$b = new b();
+$b->test();
+
+--EXPECTF--
+Strict Standards: Declaration of b::test() should be compatible with a::test($arg = c::TESTCONSTANT) in %s/bug67436/b.php on line %d
+b::test()
+a::test(c::TESTCONSTANT)
diff --git a/Zend/tests/bug67436/c.php b/Zend/tests/bug67436/c.php
new file mode 100644
index 000000000..47c848bfa
--- /dev/null
+++ b/Zend/tests/bug67436/c.php
@@ -0,0 +1,5 @@
+<?php
+
+class c {
+ const TESTCONSTANT = "c::TESTCONSTANT";
+}
diff --git a/Zend/tests/closure_049.phpt b/Zend/tests/closure_049.phpt
new file mode 100644
index 000000000..684b33d56
--- /dev/null
+++ b/Zend/tests/closure_049.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Closure 049: static::class in static closure in non-static method.
+
+--FILE--
+<?php
+
+class A {
+ function foo() {
+ $f = static function() {
+ return static::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+$b = new B;
+
+var_dump($b->foo());
+--EXPECT--
+string(1) "B"
diff --git a/Zend/tests/closure_050.phpt b/Zend/tests/closure_050.phpt
new file mode 100644
index 000000000..d43f325ef
--- /dev/null
+++ b/Zend/tests/closure_050.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Closure 050: static::class in non-static closure in non-static method.
+
+--FILE--
+<?php
+
+class A {
+ function foo() {
+ $f = function() {
+ return static::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+$b = new B;
+var_dump($b->foo());
+
+--EXPECT--
+string(1) "B"
diff --git a/Zend/tests/closure_051.phpt b/Zend/tests/closure_051.phpt
new file mode 100644
index 000000000..78b28d74a
--- /dev/null
+++ b/Zend/tests/closure_051.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Closure 051: static::class in static closure in static method.
+
+--FILE--
+<?php
+
+class A {
+ static function foo() {
+ $f = static function() {
+ return static::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+var_dump(B::foo());
+
+--EXPECT--
+string(1) "B"
diff --git a/Zend/tests/closure_052.phpt b/Zend/tests/closure_052.phpt
new file mode 100644
index 000000000..f878515a8
--- /dev/null
+++ b/Zend/tests/closure_052.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Closure 052: static::class in non-static closure in static method.
+
+--FILE--
+<?php
+
+class A {
+ static function foo() {
+ $f = function() {
+ return static::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+var_dump(B::foo());
+
+--EXPECT--
+string(1) "B"
diff --git a/Zend/tests/closure_053.phpt b/Zend/tests/closure_053.phpt
new file mode 100644
index 000000000..b1d76a256
--- /dev/null
+++ b/Zend/tests/closure_053.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Closure 053: self::class in static closure in non-static method.
+
+--FILE--
+<?php
+
+class A {
+ function foo() {
+ $f = static function() {
+ return self::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+$b = new B;
+var_dump($b->foo());
+
+--EXPECT--
+string(1) "A"
diff --git a/Zend/tests/closure_054.phpt b/Zend/tests/closure_054.phpt
new file mode 100644
index 000000000..b2f87d1d6
--- /dev/null
+++ b/Zend/tests/closure_054.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Closure 054: self::class in non-static closure in non-static method.
+
+--FILE--
+<?php
+
+class A {
+ function foo() {
+ $f = function() {
+ return self::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+$b = new B;
+var_dump($b->foo());
+
+--EXPECT--
+string(1) "A"
diff --git a/Zend/tests/closure_055.phpt b/Zend/tests/closure_055.phpt
new file mode 100644
index 000000000..047d72a89
--- /dev/null
+++ b/Zend/tests/closure_055.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Closure 055: self::class in static closure in static method.
+
+--FILE--
+<?php
+
+class A {
+ static function foo() {
+ $f = static function() {
+ return self::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+var_dump(B::foo());
+
+--EXPECT--
+string(1) "A"
diff --git a/Zend/tests/closure_056.phpt b/Zend/tests/closure_056.phpt
new file mode 100644
index 000000000..566de10d8
--- /dev/null
+++ b/Zend/tests/closure_056.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Closure 056: self::class in non-static closure in static method.
+
+--FILE--
+<?php
+
+class A {
+ static function foo() {
+ $f = function() {
+ return self::class;
+ };
+ return $f();
+ }
+}
+
+class B extends A {}
+
+var_dump(B::foo());
+
+--EXPECT--
+string(1) "A"
diff --git a/Zend/tests/closure_bug66622.phpt b/Zend/tests/closure_bug66622.phpt
new file mode 100644
index 000000000..1c9577d68
--- /dev/null
+++ b/Zend/tests/closure_bug66622.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Bug 66622: Closures do not correctly capture the late bound class (static::) in some cases
+
+--FILE--
+<?php
+class A {
+ static function name() { return 'A'; }
+ function foo() {
+ $fn = function() { return static::name(); };
+ echo static::name() . ' vs ' . $fn() . "\n";
+ }
+ function bar() {
+ $fn = static function() { return static::name(); };
+ echo static::name() . ' vs ' . $fn() . "\n";
+ }
+ static function baz() {
+ $fn = function() { return static::name(); };
+ echo static::name() . ' vs ' . $fn() . "\n";
+ }
+}
+class B extends A {
+ static function name() { return 'B'; }
+}
+
+function test() {
+ (new B)->foo();
+ (new B)->bar();
+ (new B)->baz();
+ B::baz();
+}
+test();
+
+--EXPECT--
+B vs B
+B vs B
+B vs B
+B vs B
diff --git a/Zend/tests/dereference_002.phpt b/Zend/tests/dereference_002.phpt
index 022ff370d..da13decc3 100644
--- a/Zend/tests/dereference_002.phpt
+++ b/Zend/tests/dereference_002.phpt
@@ -76,4 +76,4 @@ NULL
Notice: Undefined offset: 3 in %s on line %d
-Fatal error: Call to a member function bar() on a non-object in %s on line %d
+Fatal error: Call to a member function bar() on null in %s on line %d
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 6bfb88898..d7a1b3710 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -245,16 +245,16 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
ZEND_FE(func_num_args, arginfo_zend__void)
ZEND_FE(func_get_arg, arginfo_func_get_arg)
ZEND_FE(func_get_args, arginfo_zend__void)
- ZEND_FE(strlen, arginfo_strlen)
- ZEND_FE(strcmp, arginfo_strcmp)
- ZEND_FE(strncmp, arginfo_strncmp)
- ZEND_FE(strcasecmp, arginfo_strcmp)
+ ZEND_FE(strlen, arginfo_strlen)
+ ZEND_FE(strcmp, arginfo_strcmp)
+ ZEND_FE(strncmp, arginfo_strncmp)
+ ZEND_FE(strcasecmp, arginfo_strcmp)
ZEND_FE(strncasecmp, arginfo_strncmp)
- ZEND_FE(each, arginfo_each)
+ ZEND_FE(each, arginfo_each)
ZEND_FE(error_reporting, arginfo_error_reporting)
- ZEND_FE(define, arginfo_define)
- ZEND_FE(defined, arginfo_defined)
- ZEND_FE(get_class, arginfo_get_class)
+ ZEND_FE(define, arginfo_define)
+ ZEND_FE(defined, arginfo_defined)
+ ZEND_FE(get_class, arginfo_get_class)
ZEND_FE(get_called_class, arginfo_zend__void)
ZEND_FE(get_parent_class, arginfo_get_class)
ZEND_FE(method_exists, arginfo_method_exists)
@@ -274,13 +274,13 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
ZEND_FE(get_included_files, arginfo_zend__void)
ZEND_FALIAS(get_required_files, get_included_files, arginfo_zend__void)
ZEND_FE(is_subclass_of, arginfo_is_subclass_of)
- ZEND_FE(is_a, arginfo_is_subclass_of)
+ ZEND_FE(is_a, arginfo_is_subclass_of)
ZEND_FE(get_class_vars, arginfo_get_class_vars)
ZEND_FE(get_object_vars, arginfo_get_object_vars)
ZEND_FE(get_class_methods, arginfo_get_class_methods)
ZEND_FE(trigger_error, arginfo_trigger_error)
ZEND_FALIAS(user_error, trigger_error, arginfo_trigger_error)
- ZEND_FE(set_error_handler, arginfo_set_error_handler)
+ ZEND_FE(set_error_handler, arginfo_set_error_handler)
ZEND_FE(restore_error_handler, arginfo_zend__void)
ZEND_FE(set_exception_handler, arginfo_set_exception_handler)
ZEND_FE(restore_exception_handler, arginfo_zend__void)
@@ -288,14 +288,14 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
ZEND_FE(get_declared_traits, arginfo_zend__void)
ZEND_FE(get_declared_interfaces, arginfo_zend__void)
ZEND_FE(get_defined_functions, arginfo_zend__void)
- ZEND_FE(get_defined_vars, arginfo_zend__void)
- ZEND_FE(create_function, arginfo_create_function)
- ZEND_FE(get_resource_type, arginfo_get_resource_type)
+ ZEND_FE(get_defined_vars, arginfo_zend__void)
+ ZEND_FE(create_function, arginfo_create_function)
+ ZEND_FE(get_resource_type, arginfo_get_resource_type)
ZEND_FE(get_loaded_extensions, arginfo_get_loaded_extensions)
- ZEND_FE(extension_loaded, arginfo_extension_loaded)
+ ZEND_FE(extension_loaded, arginfo_extension_loaded)
ZEND_FE(get_extension_funcs, arginfo_extension_loaded)
ZEND_FE(get_defined_constants, arginfo_get_defined_constants)
- ZEND_FE(debug_backtrace, arginfo_debug_backtrace)
+ ZEND_FE(debug_backtrace, arginfo_debug_backtrace)
ZEND_FE(debug_print_backtrace, arginfo_debug_print_backtrace)
#if ZEND_DEBUG
ZEND_FE(zend_test_func, NULL)
@@ -305,7 +305,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
#endif
ZEND_FE(gc_collect_cycles, arginfo_zend__void)
ZEND_FE(gc_enabled, arginfo_zend__void)
- ZEND_FE(gc_enable, arginfo_zend__void)
+ ZEND_FE(gc_enable, arginfo_zend__void)
ZEND_FE(gc_disable, arginfo_zend__void)
ZEND_FE_END
};
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c
index d714b35b3..bd2ede329 100644
--- a/Zend/zend_closures.c
+++ b/Zend/zend_closures.c
@@ -480,6 +480,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent
}
}
+ closure->this_ptr = NULL;
/* Invariants:
* If the closure is unscoped, it has no bound object.
* The the closure is scoped, it's either static or it's bound */
@@ -491,10 +492,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent
Z_ADDREF_P(this_ptr);
} else {
closure->func.common.fn_flags |= ZEND_ACC_STATIC;
- closure->this_ptr = NULL;
}
- } else {
- closure->this_ptr = NULL;
}
}
/* }}} */
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index beb53402b..7c979d56b 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3461,8 +3461,11 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{
*zv = *precv->op2.zv;
zval_copy_ctor(zv);
INIT_PZVAL(zv);
- zval_update_constant_ex(&zv, 1, fptr->common.scope TSRMLS_CC);
- if (Z_TYPE_P(zv) == IS_BOOL) {
+ if ((Z_TYPE_P(zv) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT) {
+ REALLOC_BUF_IF_EXCEED(buf, offset, length, Z_STRLEN_P(zv));
+ memcpy(offset, Z_STRVAL_P(zv), Z_STRLEN_P(zv));
+ offset += Z_STRLEN_P(zv);
+ } else if (Z_TYPE_P(zv) == IS_BOOL) {
if (Z_LVAL_P(zv)) {
memcpy(offset, "true", 4);
offset += 4;
@@ -3487,6 +3490,9 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{
} else if (Z_TYPE_P(zv) == IS_ARRAY) {
memcpy(offset, "Array", 5);
offset += 5;
+ } else if ((Z_TYPE_P(zv) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT_AST) {
+ memcpy(offset, "<expression>", 12);
+ offset += 12;
} else {
zend_make_printable_zval(zv, &zv_copy, &use_copy);
REALLOC_BUF_IF_EXCEED(buf, offset, length, Z_STRLEN(zv_copy));
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index bdf8b6e70..ad92c5fb6 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1490,7 +1490,8 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, zend_fcall_i
} else {
zval **return_value_ptr = &EX_TMP_VAR(execute_data_ptr, execute_data_ptr->opline->result.var)->var.ptr;
execute_data_ptr->function_state.function->internal_function.handler(
- execute_data_ptr->opline->extended_value, *return_value_ptr, return_value_ptr,
+ execute_data_ptr->opline->extended_value + execute_data_ptr->call->num_additional_args,
+ *return_value_ptr, return_value_ptr,
execute_data_ptr->object, return_value_used TSRMLS_CC
);
}
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index c9de6b93c..af32e91f2 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -449,8 +449,6 @@ ZEND_API int zend_is_true(zval *op) /* {{{ */
}
/* }}} */
-#include "../TSRM/tsrm_strtok_r.h"
-
#define IS_VISITED_CONSTANT 0x80
#define IS_CONSTANT_VISITED(p) (Z_TYPE_P(p) & IS_VISITED_CONSTANT)
#define Z_REAL_TYPE_P(p) (Z_TYPE_P(p) & ~IS_VISITED_CONSTANT)
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index da4f03a2b..cd7dbf498 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2463,7 +2463,7 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
FREE_OP2();
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -5400,6 +5400,7 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED)
{
USE_OPLINE
zend_function *op_array;
+ int closure_is_static, closure_is_being_defined_inside_static_context;
SAVE_OPLINE();
@@ -5408,7 +5409,13 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED)
zend_error_noreturn(E_ERROR, "Base lambda function for closure not found");
}
- zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC);
+ closure_is_static = op_array->common.fn_flags & ZEND_ACC_STATIC;
+ closure_is_being_defined_inside_static_context = EX(prev_execute_data) && EX(prev_execute_data)->function_state.function->common.fn_flags & ZEND_ACC_STATIC;
+ if (closure_is_static || closure_is_being_defined_inside_static_context) {
+ zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(called_scope), NULL TSRMLS_CC);
+ } else {
+ zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC);
+ }
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 3fb5ab3eb..29a8c0c80 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -6781,6 +6781,7 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER
{
USE_OPLINE
zend_function *op_array;
+ int closure_is_static, closure_is_being_defined_inside_static_context;
SAVE_OPLINE();
@@ -6789,7 +6790,13 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER
zend_error_noreturn(E_ERROR, "Base lambda function for closure not found");
}
- zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC);
+ closure_is_static = op_array->common.fn_flags & ZEND_ACC_STATIC;
+ closure_is_being_defined_inside_static_context = EX(prev_execute_data) && EX(prev_execute_data)->function_state.function->common.fn_flags & ZEND_ACC_STATIC;
+ if (closure_is_static || closure_is_being_defined_inside_static_context) {
+ zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(called_scope), NULL TSRMLS_CC);
+ } else {
+ zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC);
+ }
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
@@ -9306,7 +9313,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -10171,7 +10178,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE
zval_dtor(free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -11037,7 +11044,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE
zval_ptr_dtor_nogc(&free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -12483,7 +12490,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -15721,7 +15728,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -18067,7 +18074,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE
zval_dtor(free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -20374,7 +20381,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE
zval_ptr_dtor_nogc(&free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -23831,7 +23838,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -25473,7 +25480,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -26881,7 +26888,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC
zval_dtor(free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -28195,7 +28202,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC
zval_ptr_dtor_nogc(&free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -29937,7 +29944,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -33176,7 +33183,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -35288,7 +35295,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_
zval_dtor(free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -37455,7 +37462,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_
zval_ptr_dtor_nogc(&free_op2.var);
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
@@ -40623,7 +40630,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H
HANDLE_EXCEPTION();
}
- zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
+ zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object)));
}
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
diff --git a/acinclude.m4 b/acinclude.m4
index c25e59eef..3ccc7b262 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1711,7 +1711,7 @@ int main(int argc, char *argv[])
{
FILE *fp;
long position;
- char *filename = "/tmp/phpglibccheck";
+ char *filename = tmpnam(NULL);
fp = fopen(filename, "w");
if (fp == NULL) {
diff --git a/aclocal.m4 b/aclocal.m4
index 4d75eb96e..0cb6719f5 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1711,7 +1711,7 @@ int main(int argc, char *argv[])
{
FILE *fp;
long position;
- char *filename = "/tmp/phpglibccheck";
+ char *filename = tmpnam(NULL);
fp = fopen(filename, "w");
if (fp == NULL) {
diff --git a/build/build.mk b/build/build.mk
index ac5dadb31..2c189159a 100644
--- a/build/build.mk
+++ b/build/build.mk
@@ -1,7 +1,7 @@
# +----------------------------------------------------------------------+
# | PHP Version 5 |
# +----------------------------------------------------------------------+
-# | Copyright (c) 1997-2006 The PHP Group |
+# | Copyright (c) 1997-2014 The PHP Group |
# +----------------------------------------------------------------------+
# | 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 |
@@ -14,8 +14,6 @@
# | Author: Sascha Schumann <sascha@schumann.cx> |
# +----------------------------------------------------------------------+
#
-# $Id$
-#
#
# Makefile to generate build tools
#
@@ -61,16 +59,6 @@ snapshot:
md5sum $$distname.tar.bz2; \
bzip2 -t $$distname.tar.bz2
-cvsclean-work:
- @for i in `find . -name .cvsignore`; do \
- (cd `dirname $$i` 2>/dev/null && rm -rf `cat .cvsignore | grep -v config.nice | sed 's/[[:space:]]/ /g'` *.o *.a *.lo *.la *.gcno *.gcda .libs || true); \
- done
-
-svnclean-work:
- @for i in `find . -type d ! -path '*/.svn/*' | grep -v '.svn'`; do \
- (cd $$i 2>/dev/null && rm -rf `svn propget svn:ignore . | grep -v config.nice` *.o *.a *.lo *.la *.gcno *.gcda .libs || true); \
- done
-
gitclean-work:
@if (test ! -f '.git/info/exclude' || grep -s "git-ls-files" .git/info/exclude); then \
(echo "Rebuild .git/info/exclude" && echo '*.o' > .git/info/exclude && git svn propget svn:ignore | grep -v config.nice >> .git/info/exclude); \
diff --git a/configure b/configure
index 513680e74..e9b1340ad 100755
--- a/configure
+++ b/configure
@@ -3666,7 +3666,7 @@ ac_config_headers="$ac_config_headers main/php_config.h"
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=6
PHP_RELEASE_VERSION=0
-PHP_EXTRA_VERSION="beta4"
+PHP_EXTRA_VERSION="RC1"
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`
@@ -13977,6 +13977,66 @@ $as_echo "$ext_output" >&6; }
if test "$PHP_PHPDBG" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5
+$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; }
+if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <termios.h>
+#ifdef TIOCGWINSZ
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ ac_cv_sys_tiocgwinsz_in_termios_h=yes
+else
+ ac_cv_sys_tiocgwinsz_in_termios_h=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
+$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; }
+
+if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
+$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; }
+if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#ifdef TIOCGWINSZ
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
+else
+ ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
+$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; }
+
+ if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
+
+$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h
+
+ fi
+fi
+
$as_echo "#define HAVE_PHPDBG 1" >>confdefs.h
@@ -14010,8 +14070,8 @@ $as_echo "#define PHPDBG_DEBUG 0" >>confdefs.h
src=$abs_srcdir/sapi/phpdbg/Makefile.frag
- ac_srcdir=$ext_srcdir
- ac_builddir=$ext_builddir
+ ac_srcdir=$abs_srcdir/sapi/phpdbg
+ ac_builddir=$abs_builddir/sapi/phpdbg
test -f "$src" && $SED -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src >> Makefile.fragments
@@ -18292,7 +18352,7 @@ int main(int argc, char *argv[])
{
FILE *fp;
long position;
- char *filename = "/tmp/phpglibccheck";
+ char *filename = tmpnam(NULL);
fp = fopen(filename, "w");
if (fp == NULL) {
@@ -105016,7 +105076,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 105019 "configure"
+#line 105079 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -106928,7 +106988,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 106931 "configure"' > conftest.$ac_ext
+ echo '#line 106991 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -108320,7 +108380,7 @@ else
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
cat > conftest.$ac_ext <<EOF
-#line 108323 "configure"
+#line 108383 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -108478,11 +108538,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:108481: $lt_compile\"" >&5)
+ (eval echo "\"configure:108541: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:108485: \$? = $ac_status" >&5
+ echo "configure:108545: \$? = $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.
@@ -108776,11 +108836,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:108779: $lt_compile\"" >&5)
+ (eval echo "\"configure:108839: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:108783: \$? = $ac_status" >&5
+ echo "configure:108843: \$? = $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.
@@ -108880,11 +108940,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:108883: $lt_compile\"" >&5)
+ (eval echo "\"configure:108943: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:108887: \$? = $ac_status" >&5
+ echo "configure:108947: \$? = $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
@@ -109344,7 +109404,7 @@ _LT_EOF
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 109347 "configure"
+#line 109407 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -109386,7 +109446,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 109389 "configure"
+#line 109449 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -110911,7 +110971,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 110914 "configure"
+#line 110974 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -111011,7 +111071,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 111014 "configure"
+#line 111074 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -112076,7 +112136,7 @@ case $host_os in
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 112079 "configure"
+#line 112139 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -112119,7 +112179,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 112122 "configure"
+#line 112182 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -113371,11 +113431,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:113374: $lt_compile\"" >&5)
+ (eval echo "\"configure:113434: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:113378: \$? = $ac_status" >&5
+ echo "configure:113438: \$? = $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.
@@ -113475,11 +113535,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:113478: $lt_compile\"" >&5)
+ (eval echo "\"configure:113538: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:113482: \$? = $ac_status" >&5
+ echo "configure:113542: \$? = $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 ff81da632..ff1e9e04c 100644
--- a/configure.in
+++ b/configure.in
@@ -120,7 +120,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=6
PHP_RELEASE_VERSION=0
-PHP_EXTRA_VERSION="beta4"
+PHP_EXTRA_VERSION="RC1"
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`
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index dffa9770c..77ceb88b7 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index bbae79441..277935abe 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re
index cbbf8781b..8c82cfc3b 100644
--- a/ext/date/lib/parse_iso_intervals.re
+++ b/ext/date/lib/parse_iso_intervals.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index da6749c51..c270eeb80 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -13,575 +13,575 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[580] = {
{ "Africa/Brazzaville" , 0x00051C },
{ "Africa/Bujumbura" , 0x000571 },
{ "Africa/Cairo" , 0x0005B5 },
- { "Africa/Casablanca" , 0x0009A4 },
- { "Africa/Ceuta" , 0x000C06 },
- { "Africa/Conakry" , 0x000F0D },
- { "Africa/Dakar" , 0x000F78 },
- { "Africa/Dar_es_Salaam" , 0x000FDE },
- { "Africa/Djibouti" , 0x00104B },
- { "Africa/Douala" , 0x0010A0 },
- { "Africa/El_Aaiun" , 0x0010F5 },
- { "Africa/Freetown" , 0x001320 },
- { "Africa/Gaborone" , 0x00142F },
- { "Africa/Harare" , 0x00149C },
- { "Africa/Johannesburg" , 0x0014F1 },
- { "Africa/Juba" , 0x00155F },
- { "Africa/Kampala" , 0x001672 },
- { "Africa/Khartoum" , 0x0016F1 },
- { "Africa/Kigali" , 0x001804 },
- { "Africa/Kinshasa" , 0x001859 },
- { "Africa/Lagos" , 0x0018B4 },
- { "Africa/Libreville" , 0x001909 },
- { "Africa/Lome" , 0x00195E },
- { "Africa/Luanda" , 0x0019A2 },
- { "Africa/Lubumbashi" , 0x0019F7 },
- { "Africa/Lusaka" , 0x001A52 },
- { "Africa/Malabo" , 0x001AA7 },
- { "Africa/Maputo" , 0x001B0D },
- { "Africa/Maseru" , 0x001B62 },
- { "Africa/Mbabane" , 0x001BCA },
- { "Africa/Mogadishu" , 0x001C20 },
- { "Africa/Monrovia" , 0x001C7B },
- { "Africa/Nairobi" , 0x001CE1 },
- { "Africa/Ndjamena" , 0x001D60 },
- { "Africa/Niamey" , 0x001DCC },
- { "Africa/Nouakchott" , 0x001E3F },
- { "Africa/Ouagadougou" , 0x001EAA },
- { "Africa/Porto-Novo" , 0x001EFF },
- { "Africa/Sao_Tome" , 0x001F65 },
- { "Africa/Timbuktu" , 0x001FBA },
- { "Africa/Tripoli" , 0x002025 },
- { "Africa/Tunis" , 0x00212E },
- { "Africa/Windhoek" , 0x002240 },
- { "America/Adak" , 0x002487 },
- { "America/Anchorage" , 0x0027FD },
- { "America/Anguilla" , 0x002B71 },
- { "America/Antigua" , 0x002BC6 },
- { "America/Araguaina" , 0x002C2C },
- { "America/Argentina/Buenos_Aires" , 0x002D91 },
- { "America/Argentina/Catamarca" , 0x002F3F },
- { "America/Argentina/ComodRivadavia" , 0x003100 },
- { "America/Argentina/Cordoba" , 0x0032A6 },
- { "America/Argentina/Jujuy" , 0x00347B },
- { "America/Argentina/La_Rioja" , 0x00362F },
- { "America/Argentina/Mendoza" , 0x0037E7 },
- { "America/Argentina/Rio_Gallegos" , 0x0039A7 },
- { "America/Argentina/Salta" , 0x003B5C },
- { "America/Argentina/San_Juan" , 0x003D08 },
- { "America/Argentina/San_Luis" , 0x003EC0 },
- { "America/Argentina/Tucuman" , 0x004086 },
- { "America/Argentina/Ushuaia" , 0x004242 },
- { "America/Aruba" , 0x0043FD },
- { "America/Asuncion" , 0x004463 },
- { "America/Atikokan" , 0x004748 },
- { "America/Atka" , 0x00481E },
- { "America/Bahia" , 0x004B84 },
- { "America/Bahia_Banderas" , 0x004D17 },
- { "America/Barbados" , 0x004F90 },
- { "America/Belem" , 0x00502A },
- { "America/Belize" , 0x005125 },
- { "America/Blanc-Sablon" , 0x0052A1 },
- { "America/Boa_Vista" , 0x005355 },
- { "America/Bogota" , 0x00545E },
- { "America/Boise" , 0x0054CA },
- { "America/Buenos_Aires" , 0x005861 },
- { "America/Cambridge_Bay" , 0x0059FA },
- { "America/Campo_Grande" , 0x005D22 },
- { "America/Cancun" , 0x006011 },
- { "America/Caracas" , 0x006253 },
- { "America/Catamarca" , 0x0062BA },
- { "America/Cayenne" , 0x006460 },
- { "America/Cayman" , 0x0064C2 },
- { "America/Chicago" , 0x006517 },
- { "America/Chihuahua" , 0x006A2E },
- { "America/Coral_Harbour" , 0x006C99 },
- { "America/Cordoba" , 0x006D2B },
- { "America/Costa_Rica" , 0x006ED1 },
- { "America/Creston" , 0x006F5B },
- { "America/Cuiaba" , 0x006FE7 },
- { "America/Curacao" , 0x0072C5 },
- { "America/Danmarkshavn" , 0x00732B },
- { "America/Dawson" , 0x00746F },
- { "America/Dawson_Creek" , 0x00778C },
- { "America/Denver" , 0x007966 },
- { "America/Detroit" , 0x007CEC },
- { "America/Dominica" , 0x00804B },
- { "America/Edmonton" , 0x0080A0 },
- { "America/Eirunepe" , 0x008458 },
- { "America/El_Salvador" , 0x008570 },
- { "America/Ensenada" , 0x0085E5 },
- { "America/Fort_Wayne" , 0x008A8C },
- { "America/Fortaleza" , 0x00894E },
- { "America/Glace_Bay" , 0x008CF6 },
- { "America/Godthab" , 0x00906D },
- { "America/Goose_Bay" , 0x009331 },
- { "America/Grand_Turk" , 0x0097EE },
- { "America/Grenada" , 0x009A9D },
- { "America/Guadeloupe" , 0x009AF2 },
- { "America/Guatemala" , 0x009B47 },
- { "America/Guayaquil" , 0x009BD0 },
- { "America/Guyana" , 0x009C2D },
- { "America/Halifax" , 0x009CAE },
- { "America/Havana" , 0x00A1C4 },
- { "America/Hermosillo" , 0x00A537 },
- { "America/Indiana/Indianapolis" , 0x00A615 },
- { "America/Indiana/Knox" , 0x00A8A6 },
- { "America/Indiana/Marengo" , 0x00AC3D },
- { "America/Indiana/Petersburg" , 0x00AEE3 },
- { "America/Indiana/Tell_City" , 0x00B430 },
- { "America/Indiana/Vevay" , 0x00B6C9 },
- { "America/Indiana/Vincennes" , 0x00B904 },
- { "America/Indiana/Winamac" , 0x00BBB8 },
- { "America/Indianapolis" , 0x00B1C6 },
- { "America/Inuvik" , 0x00BE71 },
- { "America/Iqaluit" , 0x00C168 },
- { "America/Jamaica" , 0x00C48A },
- { "America/Jujuy" , 0x00C54F },
- { "America/Juneau" , 0x00C6F9 },
- { "America/Kentucky/Louisville" , 0x00CA77 },
- { "America/Kentucky/Monticello" , 0x00CE95 },
- { "America/Knox_IN" , 0x00D21A },
- { "America/Kralendijk" , 0x00D58B },
- { "America/La_Paz" , 0x00D5F1 },
- { "America/Lima" , 0x00D658 },
- { "America/Los_Angeles" , 0x00D700 },
- { "America/Louisville" , 0x00DB11 },
- { "America/Lower_Princes" , 0x00DF06 },
- { "America/Maceio" , 0x00DF6C },
- { "America/Managua" , 0x00E0A6 },
- { "America/Manaus" , 0x00E159 },
- { "America/Marigot" , 0x00E25B },
- { "America/Martinique" , 0x00E2B0 },
- { "America/Matamoros" , 0x00E31C },
- { "America/Mazatlan" , 0x00E575 },
- { "America/Mendoza" , 0x00E7E2 },
- { "America/Menominee" , 0x00E996 },
- { "America/Merida" , 0x00ED17 },
- { "America/Metlakatla" , 0x00EF52 },
- { "America/Mexico_City" , 0x00F08C },
- { "America/Miquelon" , 0x00F307 },
- { "America/Moncton" , 0x00F579 },
- { "America/Monterrey" , 0x00FA10 },
- { "America/Montevideo" , 0x00FC73 },
- { "America/Montreal" , 0x00FF85 },
- { "America/Montserrat" , 0x010475 },
- { "America/Nassau" , 0x0104CA },
- { "America/New_York" , 0x01080F },
- { "America/Nipigon" , 0x010D1A },
- { "America/Nome" , 0x01106B },
- { "America/Noronha" , 0x0113E9 },
- { "America/North_Dakota/Beulah" , 0x011519 },
- { "America/North_Dakota/Center" , 0x0118AD },
- { "America/North_Dakota/New_Salem" , 0x011C41 },
- { "America/Ojinaga" , 0x011FEA },
- { "America/Panama" , 0x01224B },
- { "America/Pangnirtung" , 0x0122A0 },
- { "America/Paramaribo" , 0x0125D6 },
- { "America/Phoenix" , 0x012668 },
- { "America/Port-au-Prince" , 0x012726 },
- { "America/Port_of_Spain" , 0x012A4A },
- { "America/Porto_Acre" , 0x012946 },
- { "America/Porto_Velho" , 0x012A9F },
- { "America/Puerto_Rico" , 0x012B95 },
- { "America/Rainy_River" , 0x012C00 },
- { "America/Rankin_Inlet" , 0x012F38 },
- { "America/Recife" , 0x01321E },
- { "America/Regina" , 0x013348 },
- { "America/Resolute" , 0x013506 },
- { "America/Rio_Branco" , 0x0137F7 },
- { "America/Rosario" , 0x0138FF },
- { "America/Santa_Isabel" , 0x013AA5 },
- { "America/Santarem" , 0x013E48 },
- { "America/Santiago" , 0x013F4D },
- { "America/Santo_Domingo" , 0x0142F6 },
- { "America/Sao_Paulo" , 0x0143BC },
- { "America/Scoresbysund" , 0x0146CB },
- { "America/Shiprock" , 0x0149B9 },
- { "America/Sitka" , 0x014D32 },
- { "America/St_Barthelemy" , 0x0150BA },
- { "America/St_Johns" , 0x01510F },
- { "America/St_Kitts" , 0x015662 },
- { "America/St_Lucia" , 0x0156B7 },
- { "America/St_Thomas" , 0x01570C },
- { "America/St_Vincent" , 0x015761 },
- { "America/Swift_Current" , 0x0157B6 },
- { "America/Tegucigalpa" , 0x0158D7 },
- { "America/Thule" , 0x015956 },
- { "America/Thunder_Bay" , 0x015B9D },
- { "America/Tijuana" , 0x015EE6 },
- { "America/Toronto" , 0x01627F },
- { "America/Tortola" , 0x01679F },
- { "America/Vancouver" , 0x0167F4 },
- { "America/Virgin" , 0x016C31 },
- { "America/Whitehorse" , 0x016C86 },
- { "America/Winnipeg" , 0x016FA3 },
- { "America/Yakutat" , 0x0173E3 },
- { "America/Yellowknife" , 0x01774E },
- { "Antarctica/Casey" , 0x017A5E },
- { "Antarctica/Davis" , 0x017AFB },
- { "Antarctica/DumontDUrville" , 0x017B9C },
- { "Antarctica/Macquarie" , 0x017C2E },
- { "Antarctica/Mawson" , 0x017E75 },
- { "Antarctica/McMurdo" , 0x017EF1 },
- { "Antarctica/Palmer" , 0x01829C },
- { "Antarctica/Rothera" , 0x0185B8 },
- { "Antarctica/South_Pole" , 0x01862E },
- { "Antarctica/Syowa" , 0x0189AC },
- { "Antarctica/Troll" , 0x018A1A },
- { "Antarctica/Vostok" , 0x018BEC },
- { "Arctic/Longyearbyen" , 0x018C5D },
- { "Asia/Aden" , 0x018F8F },
- { "Asia/Almaty" , 0x018FE4 },
- { "Asia/Amman" , 0x019163 },
- { "Asia/Anadyr" , 0x019419 },
- { "Asia/Aqtau" , 0x0195FE },
- { "Asia/Aqtobe" , 0x0197FD },
- { "Asia/Ashgabat" , 0x0199B5 },
- { "Asia/Ashkhabad" , 0x019AD2 },
- { "Asia/Baghdad" , 0x019BEF },
- { "Asia/Bahrain" , 0x019D64 },
- { "Asia/Baku" , 0x019DCA },
- { "Asia/Bangkok" , 0x01A0B2 },
- { "Asia/Beirut" , 0x01A107 },
- { "Asia/Bishkek" , 0x01A414 },
- { "Asia/Brunei" , 0x01A5C0 },
- { "Asia/Calcutta" , 0x01A622 },
- { "Asia/Choibalsan" , 0x01A69B },
- { "Asia/Chongqing" , 0x01A814 },
- { "Asia/Chungking" , 0x01A903 },
- { "Asia/Colombo" , 0x01A9B2 },
- { "Asia/Dacca" , 0x01AA4E },
- { "Asia/Damascus" , 0x01AAF4 },
- { "Asia/Dhaka" , 0x01AE44 },
- { "Asia/Dili" , 0x01AEEA },
- { "Asia/Dubai" , 0x01AF74 },
- { "Asia/Dushanbe" , 0x01AFC9 },
- { "Asia/Gaza" , 0x01B0CC },
- { "Asia/Harbin" , 0x01B41F },
- { "Asia/Hebron" , 0x01B506 },
- { "Asia/Ho_Chi_Minh" , 0x01B862 },
- { "Asia/Hong_Kong" , 0x01B8DA },
- { "Asia/Hovd" , 0x01BA9C },
- { "Asia/Irkutsk" , 0x01BC14 },
- { "Asia/Istanbul" , 0x01BDFA },
- { "Asia/Jakarta" , 0x01C1E7 },
- { "Asia/Jayapura" , 0x01C291 },
- { "Asia/Jerusalem" , 0x01C32D },
- { "Asia/Kabul" , 0x01C65C },
- { "Asia/Kamchatka" , 0x01C6AD },
- { "Asia/Karachi" , 0x01C889 },
- { "Asia/Kashgar" , 0x01C93E },
- { "Asia/Kathmandu" , 0x01CA0F },
- { "Asia/Katmandu" , 0x01CA75 },
- { "Asia/Khandyga" , 0x01CADB },
- { "Asia/Kolkata" , 0x01CD00 },
- { "Asia/Krasnoyarsk" , 0x01CD79 },
- { "Asia/Kuala_Lumpur" , 0x01CF61 },
- { "Asia/Kuching" , 0x01D01E },
- { "Asia/Kuwait" , 0x01D10C },
- { "Asia/Macao" , 0x01D161 },
- { "Asia/Macau" , 0x01D29C },
- { "Asia/Magadan" , 0x01D3D7 },
- { "Asia/Makassar" , 0x01D5B9 },
- { "Asia/Manila" , 0x01D67E },
- { "Asia/Muscat" , 0x01D703 },
- { "Asia/Nicosia" , 0x01D758 },
- { "Asia/Novokuznetsk" , 0x01DA40 },
- { "Asia/Novosibirsk" , 0x01DC42 },
- { "Asia/Omsk" , 0x01DE2D },
- { "Asia/Oral" , 0x01E014 },
- { "Asia/Phnom_Penh" , 0x01E1E4 },
- { "Asia/Pontianak" , 0x01E25C },
- { "Asia/Pyongyang" , 0x01E31E },
- { "Asia/Qatar" , 0x01E38B },
- { "Asia/Qyzylorda" , 0x01E3F1 },
- { "Asia/Rangoon" , 0x01E5C7 },
- { "Asia/Riyadh" , 0x01E63F },
- { "Asia/Saigon" , 0x01E694 },
- { "Asia/Sakhalin" , 0x01E70C },
- { "Asia/Samarkand" , 0x01E903 },
- { "Asia/Seoul" , 0x01EA39 },
- { "Asia/Shanghai" , 0x01EADD },
- { "Asia/Singapore" , 0x01EBBD },
- { "Asia/Taipei" , 0x01EC74 },
- { "Asia/Tashkent" , 0x01ED8C },
- { "Asia/Tbilisi" , 0x01EEBD },
- { "Asia/Tehran" , 0x01F077 },
- { "Asia/Tel_Aviv" , 0x01F2E5 },
- { "Asia/Thimbu" , 0x01F614 },
- { "Asia/Thimphu" , 0x01F67A },
- { "Asia/Tokyo" , 0x01F6E0 },
- { "Asia/Ujung_Pandang" , 0x01F769 },
- { "Asia/Ulaanbaatar" , 0x01F7E6 },
- { "Asia/Ulan_Bator" , 0x01F941 },
- { "Asia/Urumqi" , 0x01FA8E },
- { "Asia/Ust-Nera" , 0x01FB55 },
- { "Asia/Vientiane" , 0x01FD5A },
- { "Asia/Vladivostok" , 0x01FDD2 },
- { "Asia/Yakutsk" , 0x01FFBE },
- { "Asia/Yekaterinburg" , 0x0201A3 },
- { "Asia/Yerevan" , 0x0203AE },
- { "Atlantic/Azores" , 0x0205AE },
- { "Atlantic/Bermuda" , 0x020AB1 },
- { "Atlantic/Canary" , 0x020D92 },
- { "Atlantic/Cape_Verde" , 0x021068 },
- { "Atlantic/Faeroe" , 0x0210E1 },
- { "Atlantic/Faroe" , 0x021385 },
- { "Atlantic/Jan_Mayen" , 0x021629 },
- { "Atlantic/Madeira" , 0x02195B },
- { "Atlantic/Reykjavik" , 0x021E64 },
- { "Atlantic/South_Georgia" , 0x02201D },
- { "Atlantic/St_Helena" , 0x02222F },
- { "Atlantic/Stanley" , 0x022061 },
- { "Australia/ACT" , 0x022284 },
- { "Australia/Adelaide" , 0x0225A1 },
- { "Australia/Brisbane" , 0x0228CD },
- { "Australia/Broken_Hill" , 0x022994 },
- { "Australia/Canberra" , 0x022CD2 },
- { "Australia/Currie" , 0x022FEF },
- { "Australia/Darwin" , 0x023322 },
- { "Australia/Eucla" , 0x0233A8 },
- { "Australia/Hobart" , 0x02347D },
- { "Australia/LHI" , 0x0237DB },
- { "Australia/Lindeman" , 0x023A76 },
- { "Australia/Lord_Howe" , 0x023B57 },
- { "Australia/Melbourne" , 0x023E02 },
- { "Australia/North" , 0x024127 },
- { "Australia/NSW" , 0x02419B },
- { "Australia/Perth" , 0x0244B8 },
- { "Australia/Queensland" , 0x024590 },
- { "Australia/South" , 0x02463C },
- { "Australia/Sydney" , 0x024959 },
- { "Australia/Tasmania" , 0x024C96 },
- { "Australia/Victoria" , 0x024FDB },
- { "Australia/West" , 0x0252F8 },
- { "Australia/Yancowinna" , 0x0253AE },
- { "Brazil/Acre" , 0x0256D0 },
- { "Brazil/DeNoronha" , 0x0257D4 },
- { "Brazil/East" , 0x0258F4 },
- { "Brazil/West" , 0x025BD1 },
- { "Canada/Atlantic" , 0x025CC9 },
- { "Canada/Central" , 0x0261B1 },
- { "Canada/East-Saskatchewan" , 0x026ABB },
- { "Canada/Eastern" , 0x0265CB },
- { "Canada/Mountain" , 0x026C44 },
- { "Canada/Newfoundland" , 0x026FBA },
- { "Canada/Pacific" , 0x0274E5 },
- { "Canada/Saskatchewan" , 0x0278FE },
- { "Canada/Yukon" , 0x027A87 },
- { "CET" , 0x027D8A },
- { "Chile/Continental" , 0x028093 },
- { "Chile/EasterIsland" , 0x02842E },
- { "CST6CDT" , 0x028770 },
- { "Cuba" , 0x028AC1 },
- { "EET" , 0x028E34 },
- { "Egypt" , 0x0290E7 },
- { "Eire" , 0x0294D6 },
- { "EST" , 0x0299E7 },
- { "EST5EDT" , 0x029A2B },
- { "Etc/GMT" , 0x029D7C },
- { "Etc/GMT+0" , 0x029E48 },
- { "Etc/GMT+1" , 0x029ED2 },
- { "Etc/GMT+10" , 0x029F5F },
- { "Etc/GMT+11" , 0x029FED },
- { "Etc/GMT+12" , 0x02A07B },
- { "Etc/GMT+2" , 0x02A196 },
- { "Etc/GMT+3" , 0x02A222 },
- { "Etc/GMT+4" , 0x02A2AE },
- { "Etc/GMT+5" , 0x02A33A },
- { "Etc/GMT+6" , 0x02A3C6 },
- { "Etc/GMT+7" , 0x02A452 },
- { "Etc/GMT+8" , 0x02A4DE },
- { "Etc/GMT+9" , 0x02A56A },
- { "Etc/GMT-0" , 0x029E04 },
- { "Etc/GMT-1" , 0x029E8C },
- { "Etc/GMT-10" , 0x029F18 },
- { "Etc/GMT-11" , 0x029FA6 },
- { "Etc/GMT-12" , 0x02A034 },
- { "Etc/GMT-13" , 0x02A0C2 },
- { "Etc/GMT-14" , 0x02A109 },
- { "Etc/GMT-2" , 0x02A150 },
- { "Etc/GMT-3" , 0x02A1DC },
- { "Etc/GMT-4" , 0x02A268 },
- { "Etc/GMT-5" , 0x02A2F4 },
- { "Etc/GMT-6" , 0x02A380 },
- { "Etc/GMT-7" , 0x02A40C },
- { "Etc/GMT-8" , 0x02A498 },
- { "Etc/GMT-9" , 0x02A524 },
- { "Etc/GMT0" , 0x029DC0 },
- { "Etc/Greenwich" , 0x02A5B0 },
- { "Etc/UCT" , 0x02A5F4 },
- { "Etc/Universal" , 0x02A638 },
- { "Etc/UTC" , 0x02A67C },
- { "Etc/Zulu" , 0x02A6C0 },
- { "Europe/Amsterdam" , 0x02A704 },
- { "Europe/Andorra" , 0x02AB42 },
- { "Europe/Athens" , 0x02ADBE },
- { "Europe/Belfast" , 0x02B101 },
- { "Europe/Belgrade" , 0x02B638 },
- { "Europe/Berlin" , 0x02B901 },
- { "Europe/Bratislava" , 0x02BC65 },
- { "Europe/Brussels" , 0x02BF97 },
- { "Europe/Bucharest" , 0x02C3CE },
- { "Europe/Budapest" , 0x02C6F8 },
- { "Europe/Busingen" , 0x02CA6B },
- { "Europe/Chisinau" , 0x02CD22 },
- { "Europe/Copenhagen" , 0x02D0B0 },
- { "Europe/Dublin" , 0x02D3BA },
- { "Europe/Gibraltar" , 0x02D8CB },
- { "Europe/Guernsey" , 0x02DD22 },
- { "Europe/Helsinki" , 0x02E259 },
- { "Europe/Isle_of_Man" , 0x02E50F },
- { "Europe/Istanbul" , 0x02EA46 },
- { "Europe/Jersey" , 0x02EE33 },
- { "Europe/Kaliningrad" , 0x02F36A },
- { "Europe/Kiev" , 0x02F5D0 },
- { "Europe/Lisbon" , 0x02F8EC },
- { "Europe/Ljubljana" , 0x02FDF0 },
- { "Europe/London" , 0x0300B9 },
- { "Europe/Luxembourg" , 0x0305F0 },
- { "Europe/Madrid" , 0x030A46 },
- { "Europe/Malta" , 0x030E0C },
- { "Europe/Mariehamn" , 0x0311C5 },
- { "Europe/Minsk" , 0x03147B },
- { "Europe/Monaco" , 0x031689 },
- { "Europe/Moscow" , 0x031AC4 },
- { "Europe/Nicosia" , 0x031D15 },
- { "Europe/Oslo" , 0x031FFD },
- { "Europe/Paris" , 0x03232F },
- { "Europe/Podgorica" , 0x032775 },
- { "Europe/Prague" , 0x032A3E },
- { "Europe/Riga" , 0x032D70 },
- { "Europe/Rome" , 0x0330B5 },
- { "Europe/Samara" , 0x033478 },
- { "Europe/San_Marino" , 0x0336AB },
- { "Europe/Sarajevo" , 0x033A6E },
- { "Europe/Simferopol" , 0x033D37 },
- { "Europe/Skopje" , 0x033F83 },
- { "Europe/Sofia" , 0x03424C },
- { "Europe/Stockholm" , 0x034554 },
- { "Europe/Tallinn" , 0x034803 },
- { "Europe/Tirane" , 0x034B3D },
- { "Europe/Tiraspol" , 0x034E43 },
- { "Europe/Uzhgorod" , 0x0351D1 },
- { "Europe/Vaduz" , 0x0354E8 },
- { "Europe/Vatican" , 0x035797 },
- { "Europe/Vienna" , 0x035B5A },
- { "Europe/Vilnius" , 0x035E87 },
- { "Europe/Volgograd" , 0x0361C6 },
- { "Europe/Warsaw" , 0x0363C6 },
- { "Europe/Zagreb" , 0x0367A7 },
- { "Europe/Zaporozhye" , 0x036A70 },
- { "Europe/Zurich" , 0x036DB1 },
- { "Factory" , 0x037060 },
- { "GB" , 0x0370D1 },
- { "GB-Eire" , 0x037608 },
- { "GMT" , 0x037B3F },
- { "GMT+0" , 0x037C0B },
- { "GMT-0" , 0x037BC7 },
- { "GMT0" , 0x037B83 },
- { "Greenwich" , 0x037C4F },
- { "Hongkong" , 0x037C93 },
- { "HST" , 0x037E55 },
- { "Iceland" , 0x037E99 },
- { "Indian/Antananarivo" , 0x038052 },
- { "Indian/Chagos" , 0x0380C6 },
- { "Indian/Christmas" , 0x038128 },
- { "Indian/Cocos" , 0x03816C },
- { "Indian/Comoro" , 0x0381B0 },
- { "Indian/Kerguelen" , 0x038205 },
- { "Indian/Mahe" , 0x03825A },
- { "Indian/Maldives" , 0x0382AF },
- { "Indian/Mauritius" , 0x038304 },
- { "Indian/Mayotte" , 0x03837A },
- { "Indian/Reunion" , 0x0383CF },
- { "Iran" , 0x038424 },
- { "Israel" , 0x038692 },
- { "Jamaica" , 0x0389C1 },
- { "Japan" , 0x038A86 },
- { "Kwajalein" , 0x038B0F },
- { "Libya" , 0x038B72 },
- { "MET" , 0x038C7B },
- { "Mexico/BajaNorte" , 0x038F84 },
- { "Mexico/BajaSur" , 0x0392ED },
- { "Mexico/General" , 0x039532 },
- { "MST" , 0x039790 },
- { "MST7MDT" , 0x0397D4 },
- { "Navajo" , 0x039B25 },
- { "NZ" , 0x039E9E },
- { "NZ-CHAT" , 0x03A21C },
- { "Pacific/Apia" , 0x03A504 },
- { "Pacific/Auckland" , 0x03A6A0 },
- { "Pacific/Chatham" , 0x03AA2C },
- { "Pacific/Chuuk" , 0x03AD23 },
- { "Pacific/Easter" , 0x03AD7C },
- { "Pacific/Efate" , 0x03B0DA },
- { "Pacific/Enderbury" , 0x03B1A0 },
- { "Pacific/Fakaofo" , 0x03B20E },
- { "Pacific/Fiji" , 0x03B25F },
- { "Pacific/Funafuti" , 0x03B3F2 },
- { "Pacific/Galapagos" , 0x03B436 },
- { "Pacific/Gambier" , 0x03B4AE },
- { "Pacific/Guadalcanal" , 0x03B513 },
- { "Pacific/Guam" , 0x03B568 },
- { "Pacific/Honolulu" , 0x03B5BE },
- { "Pacific/Johnston" , 0x03B635 },
- { "Pacific/Kiritimati" , 0x03B6B4 },
- { "Pacific/Kosrae" , 0x03B71F },
- { "Pacific/Kwajalein" , 0x03B77C },
- { "Pacific/Majuro" , 0x03B7E8 },
- { "Pacific/Marquesas" , 0x03B847 },
- { "Pacific/Midway" , 0x03B8AE },
- { "Pacific/Nauru" , 0x03B938 },
- { "Pacific/Niue" , 0x03B9B0 },
- { "Pacific/Norfolk" , 0x03BA0E },
- { "Pacific/Noumea" , 0x03BA63 },
- { "Pacific/Pago_Pago" , 0x03BAF3 },
- { "Pacific/Palau" , 0x03BB7C },
- { "Pacific/Pitcairn" , 0x03BBC0 },
- { "Pacific/Pohnpei" , 0x03BC15 },
- { "Pacific/Ponape" , 0x03BC6A },
- { "Pacific/Port_Moresby" , 0x03BCAF },
- { "Pacific/Rarotonga" , 0x03BCF3 },
- { "Pacific/Saipan" , 0x03BDCF },
- { "Pacific/Samoa" , 0x03BE32 },
- { "Pacific/Tahiti" , 0x03BEBB },
- { "Pacific/Tarawa" , 0x03BF20 },
- { "Pacific/Tongatapu" , 0x03BF74 },
- { "Pacific/Truk" , 0x03C000 },
- { "Pacific/Wake" , 0x03C045 },
- { "Pacific/Wallis" , 0x03C095 },
- { "Pacific/Yap" , 0x03C0D9 },
- { "Poland" , 0x03C11E },
- { "Portugal" , 0x03C4FF },
- { "PRC" , 0x03C9FB },
- { "PST8PDT" , 0x03CAAC },
- { "ROC" , 0x03CDFD },
- { "ROK" , 0x03CF15 },
- { "Singapore" , 0x03CFB9 },
- { "Turkey" , 0x03D070 },
- { "UCT" , 0x03D45D },
- { "Universal" , 0x03D4A1 },
- { "US/Alaska" , 0x03D4E5 },
- { "US/Aleutian" , 0x03D84E },
- { "US/Arizona" , 0x03DBB4 },
- { "US/Central" , 0x03DC42 },
- { "US/East-Indiana" , 0x03E64C },
- { "US/Eastern" , 0x03E14D },
- { "US/Hawaii" , 0x03E8B6 },
- { "US/Indiana-Starke" , 0x03E927 },
- { "US/Michigan" , 0x03EC98 },
- { "US/Mountain" , 0x03EFCF },
- { "US/Pacific" , 0x03F348 },
- { "US/Pacific-New" , 0x03F74D },
- { "US/Samoa" , 0x03FB52 },
- { "UTC" , 0x03FBDB },
- { "W-SU" , 0x03FED2 },
- { "WET" , 0x03FC1F },
- { "Zulu" , 0x04010C },
+ { "Africa/Casablanca" , 0x00099C },
+ { "Africa/Ceuta" , 0x000BFE },
+ { "Africa/Conakry" , 0x000F05 },
+ { "Africa/Dakar" , 0x000F70 },
+ { "Africa/Dar_es_Salaam" , 0x000FD6 },
+ { "Africa/Djibouti" , 0x001043 },
+ { "Africa/Douala" , 0x001098 },
+ { "Africa/El_Aaiun" , 0x0010ED },
+ { "Africa/Freetown" , 0x001318 },
+ { "Africa/Gaborone" , 0x001427 },
+ { "Africa/Harare" , 0x001494 },
+ { "Africa/Johannesburg" , 0x0014E9 },
+ { "Africa/Juba" , 0x001557 },
+ { "Africa/Kampala" , 0x00166A },
+ { "Africa/Khartoum" , 0x0016E9 },
+ { "Africa/Kigali" , 0x0017FC },
+ { "Africa/Kinshasa" , 0x001851 },
+ { "Africa/Lagos" , 0x0018AC },
+ { "Africa/Libreville" , 0x001901 },
+ { "Africa/Lome" , 0x001956 },
+ { "Africa/Luanda" , 0x00199A },
+ { "Africa/Lubumbashi" , 0x0019EF },
+ { "Africa/Lusaka" , 0x001A4A },
+ { "Africa/Malabo" , 0x001A9F },
+ { "Africa/Maputo" , 0x001B05 },
+ { "Africa/Maseru" , 0x001B5A },
+ { "Africa/Mbabane" , 0x001BC2 },
+ { "Africa/Mogadishu" , 0x001C18 },
+ { "Africa/Monrovia" , 0x001C73 },
+ { "Africa/Nairobi" , 0x001CD9 },
+ { "Africa/Ndjamena" , 0x001D58 },
+ { "Africa/Niamey" , 0x001DC4 },
+ { "Africa/Nouakchott" , 0x001E37 },
+ { "Africa/Ouagadougou" , 0x001EA2 },
+ { "Africa/Porto-Novo" , 0x001EF7 },
+ { "Africa/Sao_Tome" , 0x001F5D },
+ { "Africa/Timbuktu" , 0x001FB2 },
+ { "Africa/Tripoli" , 0x00201D },
+ { "Africa/Tunis" , 0x002126 },
+ { "Africa/Windhoek" , 0x002238 },
+ { "America/Adak" , 0x00247F },
+ { "America/Anchorage" , 0x0027F5 },
+ { "America/Anguilla" , 0x002B69 },
+ { "America/Antigua" , 0x002BBE },
+ { "America/Araguaina" , 0x002C24 },
+ { "America/Argentina/Buenos_Aires" , 0x002D89 },
+ { "America/Argentina/Catamarca" , 0x002F37 },
+ { "America/Argentina/ComodRivadavia" , 0x0030F8 },
+ { "America/Argentina/Cordoba" , 0x00329E },
+ { "America/Argentina/Jujuy" , 0x003473 },
+ { "America/Argentina/La_Rioja" , 0x003627 },
+ { "America/Argentina/Mendoza" , 0x0037DF },
+ { "America/Argentina/Rio_Gallegos" , 0x00399F },
+ { "America/Argentina/Salta" , 0x003B54 },
+ { "America/Argentina/San_Juan" , 0x003D00 },
+ { "America/Argentina/San_Luis" , 0x003EB8 },
+ { "America/Argentina/Tucuman" , 0x00407E },
+ { "America/Argentina/Ushuaia" , 0x00423A },
+ { "America/Aruba" , 0x0043F5 },
+ { "America/Asuncion" , 0x00445B },
+ { "America/Atikokan" , 0x004740 },
+ { "America/Atka" , 0x004816 },
+ { "America/Bahia" , 0x004B7C },
+ { "America/Bahia_Banderas" , 0x004D0F },
+ { "America/Barbados" , 0x004F88 },
+ { "America/Belem" , 0x005022 },
+ { "America/Belize" , 0x00511D },
+ { "America/Blanc-Sablon" , 0x005299 },
+ { "America/Boa_Vista" , 0x00534D },
+ { "America/Bogota" , 0x005456 },
+ { "America/Boise" , 0x0054C2 },
+ { "America/Buenos_Aires" , 0x005859 },
+ { "America/Cambridge_Bay" , 0x0059F2 },
+ { "America/Campo_Grande" , 0x005D1A },
+ { "America/Cancun" , 0x006009 },
+ { "America/Caracas" , 0x00624B },
+ { "America/Catamarca" , 0x0062B2 },
+ { "America/Cayenne" , 0x006458 },
+ { "America/Cayman" , 0x0064BA },
+ { "America/Chicago" , 0x00650F },
+ { "America/Chihuahua" , 0x006A26 },
+ { "America/Coral_Harbour" , 0x006C91 },
+ { "America/Cordoba" , 0x006D23 },
+ { "America/Costa_Rica" , 0x006EC9 },
+ { "America/Creston" , 0x006F53 },
+ { "America/Cuiaba" , 0x006FDF },
+ { "America/Curacao" , 0x0072BD },
+ { "America/Danmarkshavn" , 0x007323 },
+ { "America/Dawson" , 0x007467 },
+ { "America/Dawson_Creek" , 0x007784 },
+ { "America/Denver" , 0x00795E },
+ { "America/Detroit" , 0x007CE4 },
+ { "America/Dominica" , 0x008043 },
+ { "America/Edmonton" , 0x008098 },
+ { "America/Eirunepe" , 0x008450 },
+ { "America/El_Salvador" , 0x008568 },
+ { "America/Ensenada" , 0x0085DD },
+ { "America/Fort_Wayne" , 0x008A84 },
+ { "America/Fortaleza" , 0x008946 },
+ { "America/Glace_Bay" , 0x008CEE },
+ { "America/Godthab" , 0x009065 },
+ { "America/Goose_Bay" , 0x009329 },
+ { "America/Grand_Turk" , 0x0097E6 },
+ { "America/Grenada" , 0x009A95 },
+ { "America/Guadeloupe" , 0x009AEA },
+ { "America/Guatemala" , 0x009B3F },
+ { "America/Guayaquil" , 0x009BC8 },
+ { "America/Guyana" , 0x009C25 },
+ { "America/Halifax" , 0x009CA6 },
+ { "America/Havana" , 0x00A1BC },
+ { "America/Hermosillo" , 0x00A52F },
+ { "America/Indiana/Indianapolis" , 0x00A60D },
+ { "America/Indiana/Knox" , 0x00A89E },
+ { "America/Indiana/Marengo" , 0x00AC35 },
+ { "America/Indiana/Petersburg" , 0x00AEDB },
+ { "America/Indiana/Tell_City" , 0x00B428 },
+ { "America/Indiana/Vevay" , 0x00B6C1 },
+ { "America/Indiana/Vincennes" , 0x00B8FC },
+ { "America/Indiana/Winamac" , 0x00BBB0 },
+ { "America/Indianapolis" , 0x00B1BE },
+ { "America/Inuvik" , 0x00BE69 },
+ { "America/Iqaluit" , 0x00C160 },
+ { "America/Jamaica" , 0x00C482 },
+ { "America/Jujuy" , 0x00C547 },
+ { "America/Juneau" , 0x00C6F1 },
+ { "America/Kentucky/Louisville" , 0x00CA6F },
+ { "America/Kentucky/Monticello" , 0x00CE8D },
+ { "America/Knox_IN" , 0x00D212 },
+ { "America/Kralendijk" , 0x00D583 },
+ { "America/La_Paz" , 0x00D5E9 },
+ { "America/Lima" , 0x00D650 },
+ { "America/Los_Angeles" , 0x00D6F8 },
+ { "America/Louisville" , 0x00DB09 },
+ { "America/Lower_Princes" , 0x00DEFE },
+ { "America/Maceio" , 0x00DF64 },
+ { "America/Managua" , 0x00E09E },
+ { "America/Manaus" , 0x00E151 },
+ { "America/Marigot" , 0x00E253 },
+ { "America/Martinique" , 0x00E2A8 },
+ { "America/Matamoros" , 0x00E314 },
+ { "America/Mazatlan" , 0x00E56D },
+ { "America/Mendoza" , 0x00E7DA },
+ { "America/Menominee" , 0x00E98E },
+ { "America/Merida" , 0x00ED0F },
+ { "America/Metlakatla" , 0x00EF4A },
+ { "America/Mexico_City" , 0x00F084 },
+ { "America/Miquelon" , 0x00F2FF },
+ { "America/Moncton" , 0x00F571 },
+ { "America/Monterrey" , 0x00FA08 },
+ { "America/Montevideo" , 0x00FC6B },
+ { "America/Montreal" , 0x00FF7D },
+ { "America/Montserrat" , 0x01046D },
+ { "America/Nassau" , 0x0104C2 },
+ { "America/New_York" , 0x010807 },
+ { "America/Nipigon" , 0x010D12 },
+ { "America/Nome" , 0x011063 },
+ { "America/Noronha" , 0x0113E1 },
+ { "America/North_Dakota/Beulah" , 0x011511 },
+ { "America/North_Dakota/Center" , 0x0118A5 },
+ { "America/North_Dakota/New_Salem" , 0x011C39 },
+ { "America/Ojinaga" , 0x011FE2 },
+ { "America/Panama" , 0x012243 },
+ { "America/Pangnirtung" , 0x012298 },
+ { "America/Paramaribo" , 0x0125CE },
+ { "America/Phoenix" , 0x012660 },
+ { "America/Port-au-Prince" , 0x01271E },
+ { "America/Port_of_Spain" , 0x012A42 },
+ { "America/Porto_Acre" , 0x01293E },
+ { "America/Porto_Velho" , 0x012A97 },
+ { "America/Puerto_Rico" , 0x012B8D },
+ { "America/Rainy_River" , 0x012BF8 },
+ { "America/Rankin_Inlet" , 0x012F30 },
+ { "America/Recife" , 0x013216 },
+ { "America/Regina" , 0x013340 },
+ { "America/Resolute" , 0x0134FE },
+ { "America/Rio_Branco" , 0x0137EF },
+ { "America/Rosario" , 0x0138F7 },
+ { "America/Santa_Isabel" , 0x013A9D },
+ { "America/Santarem" , 0x013E40 },
+ { "America/Santiago" , 0x013F45 },
+ { "America/Santo_Domingo" , 0x0142EE },
+ { "America/Sao_Paulo" , 0x0143B4 },
+ { "America/Scoresbysund" , 0x0146C3 },
+ { "America/Shiprock" , 0x0149B1 },
+ { "America/Sitka" , 0x014D2A },
+ { "America/St_Barthelemy" , 0x0150B2 },
+ { "America/St_Johns" , 0x015107 },
+ { "America/St_Kitts" , 0x01565A },
+ { "America/St_Lucia" , 0x0156AF },
+ { "America/St_Thomas" , 0x015704 },
+ { "America/St_Vincent" , 0x015759 },
+ { "America/Swift_Current" , 0x0157AE },
+ { "America/Tegucigalpa" , 0x0158CF },
+ { "America/Thule" , 0x01594E },
+ { "America/Thunder_Bay" , 0x015B95 },
+ { "America/Tijuana" , 0x015EDE },
+ { "America/Toronto" , 0x016277 },
+ { "America/Tortola" , 0x016797 },
+ { "America/Vancouver" , 0x0167EC },
+ { "America/Virgin" , 0x016C29 },
+ { "America/Whitehorse" , 0x016C7E },
+ { "America/Winnipeg" , 0x016F9B },
+ { "America/Yakutat" , 0x0173DB },
+ { "America/Yellowknife" , 0x017746 },
+ { "Antarctica/Casey" , 0x017A56 },
+ { "Antarctica/Davis" , 0x017AF3 },
+ { "Antarctica/DumontDUrville" , 0x017B94 },
+ { "Antarctica/Macquarie" , 0x017C26 },
+ { "Antarctica/Mawson" , 0x017E6D },
+ { "Antarctica/McMurdo" , 0x017EE9 },
+ { "Antarctica/Palmer" , 0x018294 },
+ { "Antarctica/Rothera" , 0x0185B0 },
+ { "Antarctica/South_Pole" , 0x018626 },
+ { "Antarctica/Syowa" , 0x0189A4 },
+ { "Antarctica/Troll" , 0x018A12 },
+ { "Antarctica/Vostok" , 0x018BE4 },
+ { "Arctic/Longyearbyen" , 0x018C55 },
+ { "Asia/Aden" , 0x018F87 },
+ { "Asia/Almaty" , 0x018FDC },
+ { "Asia/Amman" , 0x01915B },
+ { "Asia/Anadyr" , 0x019411 },
+ { "Asia/Aqtau" , 0x0195F6 },
+ { "Asia/Aqtobe" , 0x0197F5 },
+ { "Asia/Ashgabat" , 0x0199AD },
+ { "Asia/Ashkhabad" , 0x019ACA },
+ { "Asia/Baghdad" , 0x019BE7 },
+ { "Asia/Bahrain" , 0x019D5C },
+ { "Asia/Baku" , 0x019DC2 },
+ { "Asia/Bangkok" , 0x01A0AA },
+ { "Asia/Beirut" , 0x01A0FF },
+ { "Asia/Bishkek" , 0x01A40C },
+ { "Asia/Brunei" , 0x01A5B8 },
+ { "Asia/Calcutta" , 0x01A61A },
+ { "Asia/Choibalsan" , 0x01A693 },
+ { "Asia/Chongqing" , 0x01A80C },
+ { "Asia/Chungking" , 0x01A8FB },
+ { "Asia/Colombo" , 0x01A9AA },
+ { "Asia/Dacca" , 0x01AA46 },
+ { "Asia/Damascus" , 0x01AAEC },
+ { "Asia/Dhaka" , 0x01AE3C },
+ { "Asia/Dili" , 0x01AEE2 },
+ { "Asia/Dubai" , 0x01AF6C },
+ { "Asia/Dushanbe" , 0x01AFC1 },
+ { "Asia/Gaza" , 0x01B0C4 },
+ { "Asia/Harbin" , 0x01B417 },
+ { "Asia/Hebron" , 0x01B4FE },
+ { "Asia/Ho_Chi_Minh" , 0x01B85A },
+ { "Asia/Hong_Kong" , 0x01B8D2 },
+ { "Asia/Hovd" , 0x01BA94 },
+ { "Asia/Irkutsk" , 0x01BC0C },
+ { "Asia/Istanbul" , 0x01BDF2 },
+ { "Asia/Jakarta" , 0x01C1DF },
+ { "Asia/Jayapura" , 0x01C289 },
+ { "Asia/Jerusalem" , 0x01C325 },
+ { "Asia/Kabul" , 0x01C654 },
+ { "Asia/Kamchatka" , 0x01C6A5 },
+ { "Asia/Karachi" , 0x01C881 },
+ { "Asia/Kashgar" , 0x01C936 },
+ { "Asia/Kathmandu" , 0x01CA07 },
+ { "Asia/Katmandu" , 0x01CA6D },
+ { "Asia/Khandyga" , 0x01CAD3 },
+ { "Asia/Kolkata" , 0x01CCF8 },
+ { "Asia/Krasnoyarsk" , 0x01CD71 },
+ { "Asia/Kuala_Lumpur" , 0x01CF59 },
+ { "Asia/Kuching" , 0x01D016 },
+ { "Asia/Kuwait" , 0x01D104 },
+ { "Asia/Macao" , 0x01D159 },
+ { "Asia/Macau" , 0x01D294 },
+ { "Asia/Magadan" , 0x01D3CF },
+ { "Asia/Makassar" , 0x01D5B1 },
+ { "Asia/Manila" , 0x01D676 },
+ { "Asia/Muscat" , 0x01D6FB },
+ { "Asia/Nicosia" , 0x01D750 },
+ { "Asia/Novokuznetsk" , 0x01DA38 },
+ { "Asia/Novosibirsk" , 0x01DC3A },
+ { "Asia/Omsk" , 0x01DE25 },
+ { "Asia/Oral" , 0x01E00C },
+ { "Asia/Phnom_Penh" , 0x01E1DC },
+ { "Asia/Pontianak" , 0x01E254 },
+ { "Asia/Pyongyang" , 0x01E316 },
+ { "Asia/Qatar" , 0x01E383 },
+ { "Asia/Qyzylorda" , 0x01E3E9 },
+ { "Asia/Rangoon" , 0x01E5BF },
+ { "Asia/Riyadh" , 0x01E637 },
+ { "Asia/Saigon" , 0x01E68C },
+ { "Asia/Sakhalin" , 0x01E704 },
+ { "Asia/Samarkand" , 0x01E8FB },
+ { "Asia/Seoul" , 0x01EA31 },
+ { "Asia/Shanghai" , 0x01EAD5 },
+ { "Asia/Singapore" , 0x01EBB5 },
+ { "Asia/Taipei" , 0x01EC6C },
+ { "Asia/Tashkent" , 0x01ED84 },
+ { "Asia/Tbilisi" , 0x01EEB5 },
+ { "Asia/Tehran" , 0x01F06F },
+ { "Asia/Tel_Aviv" , 0x01F2DD },
+ { "Asia/Thimbu" , 0x01F60C },
+ { "Asia/Thimphu" , 0x01F672 },
+ { "Asia/Tokyo" , 0x01F6D8 },
+ { "Asia/Ujung_Pandang" , 0x01F761 },
+ { "Asia/Ulaanbaatar" , 0x01F7DE },
+ { "Asia/Ulan_Bator" , 0x01F939 },
+ { "Asia/Urumqi" , 0x01FA86 },
+ { "Asia/Ust-Nera" , 0x01FB4D },
+ { "Asia/Vientiane" , 0x01FD52 },
+ { "Asia/Vladivostok" , 0x01FDCA },
+ { "Asia/Yakutsk" , 0x01FFAF },
+ { "Asia/Yekaterinburg" , 0x020194 },
+ { "Asia/Yerevan" , 0x02039F },
+ { "Atlantic/Azores" , 0x02059F },
+ { "Atlantic/Bermuda" , 0x020AA2 },
+ { "Atlantic/Canary" , 0x020D83 },
+ { "Atlantic/Cape_Verde" , 0x021059 },
+ { "Atlantic/Faeroe" , 0x0210D2 },
+ { "Atlantic/Faroe" , 0x021376 },
+ { "Atlantic/Jan_Mayen" , 0x02161A },
+ { "Atlantic/Madeira" , 0x02194C },
+ { "Atlantic/Reykjavik" , 0x021E55 },
+ { "Atlantic/South_Georgia" , 0x02200E },
+ { "Atlantic/St_Helena" , 0x022220 },
+ { "Atlantic/Stanley" , 0x022052 },
+ { "Australia/ACT" , 0x022275 },
+ { "Australia/Adelaide" , 0x022592 },
+ { "Australia/Brisbane" , 0x0228BE },
+ { "Australia/Broken_Hill" , 0x022985 },
+ { "Australia/Canberra" , 0x022CC3 },
+ { "Australia/Currie" , 0x022FE0 },
+ { "Australia/Darwin" , 0x023313 },
+ { "Australia/Eucla" , 0x023399 },
+ { "Australia/Hobart" , 0x02346E },
+ { "Australia/LHI" , 0x0237CC },
+ { "Australia/Lindeman" , 0x023A67 },
+ { "Australia/Lord_Howe" , 0x023B48 },
+ { "Australia/Melbourne" , 0x023DF3 },
+ { "Australia/North" , 0x024118 },
+ { "Australia/NSW" , 0x02418C },
+ { "Australia/Perth" , 0x0244A9 },
+ { "Australia/Queensland" , 0x024581 },
+ { "Australia/South" , 0x02462D },
+ { "Australia/Sydney" , 0x02494A },
+ { "Australia/Tasmania" , 0x024C87 },
+ { "Australia/Victoria" , 0x024FCC },
+ { "Australia/West" , 0x0252E9 },
+ { "Australia/Yancowinna" , 0x02539F },
+ { "Brazil/Acre" , 0x0256C1 },
+ { "Brazil/DeNoronha" , 0x0257C5 },
+ { "Brazil/East" , 0x0258E5 },
+ { "Brazil/West" , 0x025BC2 },
+ { "Canada/Atlantic" , 0x025CBA },
+ { "Canada/Central" , 0x0261A2 },
+ { "Canada/East-Saskatchewan" , 0x026AAC },
+ { "Canada/Eastern" , 0x0265BC },
+ { "Canada/Mountain" , 0x026C35 },
+ { "Canada/Newfoundland" , 0x026FAB },
+ { "Canada/Pacific" , 0x0274D6 },
+ { "Canada/Saskatchewan" , 0x0278EF },
+ { "Canada/Yukon" , 0x027A78 },
+ { "CET" , 0x027D7B },
+ { "Chile/Continental" , 0x028084 },
+ { "Chile/EasterIsland" , 0x02841F },
+ { "CST6CDT" , 0x028761 },
+ { "Cuba" , 0x028AB2 },
+ { "EET" , 0x028E25 },
+ { "Egypt" , 0x0290D8 },
+ { "Eire" , 0x0294BF },
+ { "EST" , 0x0299D0 },
+ { "EST5EDT" , 0x029A14 },
+ { "Etc/GMT" , 0x029D65 },
+ { "Etc/GMT+0" , 0x029E31 },
+ { "Etc/GMT+1" , 0x029EBB },
+ { "Etc/GMT+10" , 0x029F48 },
+ { "Etc/GMT+11" , 0x029FD6 },
+ { "Etc/GMT+12" , 0x02A064 },
+ { "Etc/GMT+2" , 0x02A17F },
+ { "Etc/GMT+3" , 0x02A20B },
+ { "Etc/GMT+4" , 0x02A297 },
+ { "Etc/GMT+5" , 0x02A323 },
+ { "Etc/GMT+6" , 0x02A3AF },
+ { "Etc/GMT+7" , 0x02A43B },
+ { "Etc/GMT+8" , 0x02A4C7 },
+ { "Etc/GMT+9" , 0x02A553 },
+ { "Etc/GMT-0" , 0x029DED },
+ { "Etc/GMT-1" , 0x029E75 },
+ { "Etc/GMT-10" , 0x029F01 },
+ { "Etc/GMT-11" , 0x029F8F },
+ { "Etc/GMT-12" , 0x02A01D },
+ { "Etc/GMT-13" , 0x02A0AB },
+ { "Etc/GMT-14" , 0x02A0F2 },
+ { "Etc/GMT-2" , 0x02A139 },
+ { "Etc/GMT-3" , 0x02A1C5 },
+ { "Etc/GMT-4" , 0x02A251 },
+ { "Etc/GMT-5" , 0x02A2DD },
+ { "Etc/GMT-6" , 0x02A369 },
+ { "Etc/GMT-7" , 0x02A3F5 },
+ { "Etc/GMT-8" , 0x02A481 },
+ { "Etc/GMT-9" , 0x02A50D },
+ { "Etc/GMT0" , 0x029DA9 },
+ { "Etc/Greenwich" , 0x02A599 },
+ { "Etc/UCT" , 0x02A5DD },
+ { "Etc/Universal" , 0x02A621 },
+ { "Etc/UTC" , 0x02A665 },
+ { "Etc/Zulu" , 0x02A6A9 },
+ { "Europe/Amsterdam" , 0x02A6ED },
+ { "Europe/Andorra" , 0x02AB2B },
+ { "Europe/Athens" , 0x02ADA7 },
+ { "Europe/Belfast" , 0x02B0EA },
+ { "Europe/Belgrade" , 0x02B621 },
+ { "Europe/Berlin" , 0x02B8EA },
+ { "Europe/Bratislava" , 0x02BC4E },
+ { "Europe/Brussels" , 0x02BF80 },
+ { "Europe/Bucharest" , 0x02C3B7 },
+ { "Europe/Budapest" , 0x02C6E1 },
+ { "Europe/Busingen" , 0x02CA54 },
+ { "Europe/Chisinau" , 0x02CD0B },
+ { "Europe/Copenhagen" , 0x02D099 },
+ { "Europe/Dublin" , 0x02D3A3 },
+ { "Europe/Gibraltar" , 0x02D8B4 },
+ { "Europe/Guernsey" , 0x02DD0B },
+ { "Europe/Helsinki" , 0x02E242 },
+ { "Europe/Isle_of_Man" , 0x02E4F8 },
+ { "Europe/Istanbul" , 0x02EA2F },
+ { "Europe/Jersey" , 0x02EE1C },
+ { "Europe/Kaliningrad" , 0x02F353 },
+ { "Europe/Kiev" , 0x02F5B9 },
+ { "Europe/Lisbon" , 0x02F8D5 },
+ { "Europe/Ljubljana" , 0x02FDD9 },
+ { "Europe/London" , 0x0300A2 },
+ { "Europe/Luxembourg" , 0x0305D9 },
+ { "Europe/Madrid" , 0x030A2F },
+ { "Europe/Malta" , 0x030DF5 },
+ { "Europe/Mariehamn" , 0x0311AE },
+ { "Europe/Minsk" , 0x031464 },
+ { "Europe/Monaco" , 0x031672 },
+ { "Europe/Moscow" , 0x031AAD },
+ { "Europe/Nicosia" , 0x031D02 },
+ { "Europe/Oslo" , 0x031FEA },
+ { "Europe/Paris" , 0x03231C },
+ { "Europe/Podgorica" , 0x032762 },
+ { "Europe/Prague" , 0x032A2B },
+ { "Europe/Riga" , 0x032D5D },
+ { "Europe/Rome" , 0x0330A2 },
+ { "Europe/Samara" , 0x033465 },
+ { "Europe/San_Marino" , 0x033698 },
+ { "Europe/Sarajevo" , 0x033A5B },
+ { "Europe/Simferopol" , 0x033D24 },
+ { "Europe/Skopje" , 0x033F70 },
+ { "Europe/Sofia" , 0x034239 },
+ { "Europe/Stockholm" , 0x034541 },
+ { "Europe/Tallinn" , 0x0347F0 },
+ { "Europe/Tirane" , 0x034B2A },
+ { "Europe/Tiraspol" , 0x034E30 },
+ { "Europe/Uzhgorod" , 0x0351BE },
+ { "Europe/Vaduz" , 0x0354D5 },
+ { "Europe/Vatican" , 0x035784 },
+ { "Europe/Vienna" , 0x035B47 },
+ { "Europe/Vilnius" , 0x035E74 },
+ { "Europe/Volgograd" , 0x0361B3 },
+ { "Europe/Warsaw" , 0x0363B3 },
+ { "Europe/Zagreb" , 0x036794 },
+ { "Europe/Zaporozhye" , 0x036A5D },
+ { "Europe/Zurich" , 0x036D9E },
+ { "Factory" , 0x03704D },
+ { "GB" , 0x0370BE },
+ { "GB-Eire" , 0x0375F5 },
+ { "GMT" , 0x037B2C },
+ { "GMT+0" , 0x037BF8 },
+ { "GMT-0" , 0x037BB4 },
+ { "GMT0" , 0x037B70 },
+ { "Greenwich" , 0x037C3C },
+ { "Hongkong" , 0x037C80 },
+ { "HST" , 0x037E42 },
+ { "Iceland" , 0x037E86 },
+ { "Indian/Antananarivo" , 0x03803F },
+ { "Indian/Chagos" , 0x0380B3 },
+ { "Indian/Christmas" , 0x038115 },
+ { "Indian/Cocos" , 0x038159 },
+ { "Indian/Comoro" , 0x03819D },
+ { "Indian/Kerguelen" , 0x0381F2 },
+ { "Indian/Mahe" , 0x038247 },
+ { "Indian/Maldives" , 0x03829C },
+ { "Indian/Mauritius" , 0x0382F1 },
+ { "Indian/Mayotte" , 0x038367 },
+ { "Indian/Reunion" , 0x0383BC },
+ { "Iran" , 0x038411 },
+ { "Israel" , 0x03867F },
+ { "Jamaica" , 0x0389AE },
+ { "Japan" , 0x038A73 },
+ { "Kwajalein" , 0x038AFC },
+ { "Libya" , 0x038B5F },
+ { "MET" , 0x038C68 },
+ { "Mexico/BajaNorte" , 0x038F71 },
+ { "Mexico/BajaSur" , 0x0392DA },
+ { "Mexico/General" , 0x03951F },
+ { "MST" , 0x03977D },
+ { "MST7MDT" , 0x0397C1 },
+ { "Navajo" , 0x039B12 },
+ { "NZ" , 0x039E8B },
+ { "NZ-CHAT" , 0x03A209 },
+ { "Pacific/Apia" , 0x03A4F1 },
+ { "Pacific/Auckland" , 0x03A68D },
+ { "Pacific/Chatham" , 0x03AA19 },
+ { "Pacific/Chuuk" , 0x03AD10 },
+ { "Pacific/Easter" , 0x03AD69 },
+ { "Pacific/Efate" , 0x03B0C7 },
+ { "Pacific/Enderbury" , 0x03B18D },
+ { "Pacific/Fakaofo" , 0x03B1FB },
+ { "Pacific/Fiji" , 0x03B24C },
+ { "Pacific/Funafuti" , 0x03B3DF },
+ { "Pacific/Galapagos" , 0x03B423 },
+ { "Pacific/Gambier" , 0x03B49B },
+ { "Pacific/Guadalcanal" , 0x03B500 },
+ { "Pacific/Guam" , 0x03B555 },
+ { "Pacific/Honolulu" , 0x03B5AB },
+ { "Pacific/Johnston" , 0x03B622 },
+ { "Pacific/Kiritimati" , 0x03B6A1 },
+ { "Pacific/Kosrae" , 0x03B70C },
+ { "Pacific/Kwajalein" , 0x03B769 },
+ { "Pacific/Majuro" , 0x03B7D5 },
+ { "Pacific/Marquesas" , 0x03B834 },
+ { "Pacific/Midway" , 0x03B89B },
+ { "Pacific/Nauru" , 0x03B925 },
+ { "Pacific/Niue" , 0x03B99D },
+ { "Pacific/Norfolk" , 0x03B9FB },
+ { "Pacific/Noumea" , 0x03BA50 },
+ { "Pacific/Pago_Pago" , 0x03BAE0 },
+ { "Pacific/Palau" , 0x03BB69 },
+ { "Pacific/Pitcairn" , 0x03BBAD },
+ { "Pacific/Pohnpei" , 0x03BC02 },
+ { "Pacific/Ponape" , 0x03BC57 },
+ { "Pacific/Port_Moresby" , 0x03BC9C },
+ { "Pacific/Rarotonga" , 0x03BCE0 },
+ { "Pacific/Saipan" , 0x03BDBC },
+ { "Pacific/Samoa" , 0x03BE1F },
+ { "Pacific/Tahiti" , 0x03BEA8 },
+ { "Pacific/Tarawa" , 0x03BF0D },
+ { "Pacific/Tongatapu" , 0x03BF61 },
+ { "Pacific/Truk" , 0x03BFED },
+ { "Pacific/Wake" , 0x03C032 },
+ { "Pacific/Wallis" , 0x03C082 },
+ { "Pacific/Yap" , 0x03C0C6 },
+ { "Poland" , 0x03C10B },
+ { "Portugal" , 0x03C4EC },
+ { "PRC" , 0x03C9E8 },
+ { "PST8PDT" , 0x03CA99 },
+ { "ROC" , 0x03CDEA },
+ { "ROK" , 0x03CF02 },
+ { "Singapore" , 0x03CFA6 },
+ { "Turkey" , 0x03D05D },
+ { "UCT" , 0x03D44A },
+ { "Universal" , 0x03D48E },
+ { "US/Alaska" , 0x03D4D2 },
+ { "US/Aleutian" , 0x03D83B },
+ { "US/Arizona" , 0x03DBA1 },
+ { "US/Central" , 0x03DC2F },
+ { "US/East-Indiana" , 0x03E639 },
+ { "US/Eastern" , 0x03E13A },
+ { "US/Hawaii" , 0x03E8A3 },
+ { "US/Indiana-Starke" , 0x03E914 },
+ { "US/Michigan" , 0x03EC85 },
+ { "US/Mountain" , 0x03EFBC },
+ { "US/Pacific" , 0x03F335 },
+ { "US/Pacific-New" , 0x03F73A },
+ { "US/Samoa" , 0x03FB3F },
+ { "UTC" , 0x03FBC8 },
+ { "W-SU" , 0x03FEBF },
+ { "WET" , 0x03FC0C },
+ { "Zulu" , 0x0400FD },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[262480] = {
+const unsigned char timelib_timezone_db_data_builtin[262465] = {
/* Africa/Abidjan */
@@ -711,8 +711,8 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* Africa/Cairo */
0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x47, 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, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60,
0xCC, 0xDF, 0x29, 0xD0, 0xCD, 0xAC, 0xE1, 0xE0, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xAD, 0x50, 0xE8, 0x36, 0x63, 0x60,
@@ -743,14 +743,14 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x43, 0x3C, 0x55, 0xD0, 0x44, 0x51, 0x3E, 0xE0, 0x45, 0x12, 0xFD, 0x50, 0x46, 0x31, 0x20, 0xE0,
0x46, 0xE0, 0x6A, 0x50, 0x48, 0x11, 0x02, 0xE0, 0x48, 0xB7, 0x11, 0xD0, 0x49, 0xF0, 0xE4, 0xE0,
0x4A, 0x8D, 0xB9, 0x50, 0x4B, 0xDA, 0x01, 0x60, 0x4C, 0x61, 0xBD, 0xD0, 0x4C, 0x89, 0x58, 0xE0,
-0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAF, 0x3A, 0xE0, 0x53, 0xD6, 0xC7, 0xE0,
-0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x81, 0xED, 0xE0, 0x55, 0xA9, 0x7A, 0xE0,
-0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x55, 0xF2, 0x60, 0x57, 0x7D, 0x7F, 0x60,
-0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x28, 0xA5, 0x60, 0x59, 0x50, 0x32, 0x60,
-0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xFB, 0x58, 0x60, 0x5B, 0x22, 0xE5, 0x60,
-0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCF, 0x5C, 0xE0, 0x5C, 0xF6, 0xE9, 0xE0,
-0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xC9, 0x9C, 0xE0, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9C, 0x4F, 0xE0,
-0x61, 0x56, 0x25, 0x50, 0x62, 0x70, 0x54, 0x60, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
+0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAC, 0x89, 0xD0, 0x53, 0xDA, 0xBC, 0x60,
+0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x79, 0xF6, 0xD0, 0x55, 0xB1, 0x63, 0xE0,
+0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x50, 0x9E, 0x50, 0x57, 0x7E, 0xD0, 0xE0,
+0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x27, 0x45, 0xD0, 0x59, 0x55, 0x78, 0x60,
+0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xF4, 0xB2, 0xD0, 0x5B, 0x22, 0xE5, 0x60,
+0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCB, 0x5A, 0x50, 0x5C, 0xF9, 0x8C, 0xE0,
+0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xD0, 0x34, 0x60, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9D, 0xA1, 0x60,
+0x61, 0x56, 0x25, 0x50, 0x62, 0x74, 0x48, 0xE0, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
0x65, 0x15, 0xE9, 0x50, 0x66, 0x2A, 0xD2, 0x60, 0x66, 0xF5, 0xCB, 0x50, 0x68, 0x0A, 0xB4, 0x60,
0x68, 0xD5, 0xAD, 0x50, 0x69, 0xEA, 0x96, 0x60, 0x6A, 0xB5, 0x8F, 0x50, 0x6B, 0xD3, 0xB2, 0xE0,
0x6C, 0x9E, 0xAB, 0xD0, 0x6D, 0xB3, 0x94, 0xE0, 0x6E, 0x7E, 0x8D, 0xD0, 0x6F, 0x93, 0x76, 0xE0,
@@ -763,16 +763,16 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
-0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
-0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20,
-0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xB7, 0x2E, 0x88, 0x01, 0x42, 0x57, 0x88, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x00, 0x01, 0x00, 0x01,
+0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01,
+0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x45, 0x45, 0x53, 0x54,
+0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x2E, 0x88, 0x01,
+0x42, 0x57, 0x88, 0x00, 0x00, 0x00, 0x00,
/* Africa/Casablanca */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -786,23 +786,23 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x4B, 0xDC, 0xC0, 0x80, 0x4C, 0x5D, 0xE5, 0x70,
0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0,
0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0,
-0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAF, 0x73, 0x20,
-0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, 0x55, 0x82, 0x26, 0x20,
-0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x56, 0x2A, 0xA0,
-0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, 0x59, 0x28, 0xDD, 0xA0,
-0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xFB, 0x90, 0xA0,
-0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCF, 0x95, 0x20,
-0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, 0x5E, 0xA2, 0x48, 0x20,
-0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, 0x60, 0x74, 0xFB, 0x20,
-0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x48, 0xFF, 0xA0,
-0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0,
-0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20, 0x68, 0xFD, 0x80, 0xA0,
+0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAE, 0x21, 0xA0,
+0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7B, 0x8E, 0xA0,
+0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x52, 0x36, 0x20,
+0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, 0x59, 0x1F, 0xA3, 0x20,
+0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF6, 0x4A, 0xA0,
+0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCC, 0xF2, 0x20,
+0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9A, 0x5F, 0x20,
+0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, 0x60, 0x71, 0x06, 0xA0,
+0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x47, 0xAE, 0x20,
+0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0,
+0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0, 0x68, 0xFD, 0x80, 0xA0,
0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20,
0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20,
0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20,
0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0,
-0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0,
-0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7C, 0x18, 0xA0,
+0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCD, 0x78, 0x20,
+0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7A, 0xC7, 0x20,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x03, 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,
@@ -919,23 +919,23 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x4C, 0x5D, 0xE5, 0x70, 0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0,
0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0,
0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0,
-0x53, 0xAF, 0x73, 0x20, 0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0,
-0x55, 0x82, 0x26, 0x20, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0,
-0x57, 0x56, 0x2A, 0xA0, 0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0,
-0x59, 0x28, 0xDD, 0xA0, 0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0,
-0x5A, 0xFB, 0x90, 0xA0, 0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20,
-0x5C, 0xCF, 0x95, 0x20, 0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20,
-0x5E, 0xA2, 0x48, 0x20, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20,
-0x60, 0x74, 0xFB, 0x20, 0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20,
-0x62, 0x48, 0xFF, 0xA0, 0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0,
-0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20,
+0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0,
+0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0,
+0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0,
+0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0,
+0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20,
+0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20,
+0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20,
+0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20,
+0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0,
+0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0,
0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0,
0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0,
0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20,
0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20,
0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20,
-0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0,
-0x7F, 0x7C, 0x18, 0xA0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0,
+0x7F, 0x7A, 0xC7, 0x20, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
@@ -9553,7 +9553,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* 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, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0xA7, 0x59, 0x47, 0x50,
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x50,
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,
@@ -9576,12 +9576,12 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x7B, 0xB0,
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, 0x0F, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x9A, 0xB0,
+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, 0x56, 0x4C, 0x41, 0x53, 0x54,
-0x00, 0x56, 0x4C, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB,
-0xF8, 0xF5, 0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20,
-0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB, 0xF8, 0xF5, 0x00, 0x00, 0x00, 0x16, 0x4D,
+0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20,
+0x52, 0x69, 0x76, 0x65, 0x72,
/* Asia/Yakutsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -12053,8 +12053,8 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* Egypt */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60,
0xCC, 0xDF, 0x29, 0xD0, 0xCD, 0xAC, 0xE1, 0xE0, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xAD, 0x50, 0xE8, 0x36, 0x63, 0x60,
@@ -12085,14 +12085,14 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x43, 0x3C, 0x55, 0xD0, 0x44, 0x51, 0x3E, 0xE0, 0x45, 0x12, 0xFD, 0x50, 0x46, 0x31, 0x20, 0xE0,
0x46, 0xE0, 0x6A, 0x50, 0x48, 0x11, 0x02, 0xE0, 0x48, 0xB7, 0x11, 0xD0, 0x49, 0xF0, 0xE4, 0xE0,
0x4A, 0x8D, 0xB9, 0x50, 0x4B, 0xDA, 0x01, 0x60, 0x4C, 0x61, 0xBD, 0xD0, 0x4C, 0x89, 0x58, 0xE0,
-0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAF, 0x3A, 0xE0, 0x53, 0xD6, 0xC7, 0xE0,
-0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x81, 0xED, 0xE0, 0x55, 0xA9, 0x7A, 0xE0,
-0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x55, 0xF2, 0x60, 0x57, 0x7D, 0x7F, 0x60,
-0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x28, 0xA5, 0x60, 0x59, 0x50, 0x32, 0x60,
-0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xFB, 0x58, 0x60, 0x5B, 0x22, 0xE5, 0x60,
-0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCF, 0x5C, 0xE0, 0x5C, 0xF6, 0xE9, 0xE0,
-0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xC9, 0x9C, 0xE0, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9C, 0x4F, 0xE0,
-0x61, 0x56, 0x25, 0x50, 0x62, 0x70, 0x54, 0x60, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
+0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAC, 0x89, 0xD0, 0x53, 0xDA, 0xBC, 0x60,
+0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x79, 0xF6, 0xD0, 0x55, 0xB1, 0x63, 0xE0,
+0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x50, 0x9E, 0x50, 0x57, 0x7E, 0xD0, 0xE0,
+0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x27, 0x45, 0xD0, 0x59, 0x55, 0x78, 0x60,
+0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xF4, 0xB2, 0xD0, 0x5B, 0x22, 0xE5, 0x60,
+0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCB, 0x5A, 0x50, 0x5C, 0xF9, 0x8C, 0xE0,
+0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xD0, 0x34, 0x60, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9D, 0xA1, 0x60,
+0x61, 0x56, 0x25, 0x50, 0x62, 0x74, 0x48, 0xE0, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
0x65, 0x15, 0xE9, 0x50, 0x66, 0x2A, 0xD2, 0x60, 0x66, 0xF5, 0xCB, 0x50, 0x68, 0x0A, 0xB4, 0x60,
0x68, 0xD5, 0xAD, 0x50, 0x69, 0xEA, 0x96, 0x60, 0x6A, 0xB5, 0x8F, 0x50, 0x6B, 0xD3, 0xB2, 0xE0,
0x6C, 0x9E, 0xAB, 0xD0, 0x6D, 0xB3, 0x94, 0xE0, 0x6E, 0x7E, 0x8D, 0xD0, 0x6F, 0x93, 0x76, 0xE0,
@@ -12105,16 +12105,16 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
-0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
-0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20,
-0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x00, 0x01, 0x00, 0x01,
+0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01,
+0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x45, 0x45, 0x53, 0x54,
+0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01,
+0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
/* Eire */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -14441,7 +14441,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* Europe/Moscow */
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, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8,
+0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8,
0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18,
0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0,
0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50,
@@ -14468,15 +14468,15 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00,
0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50,
-0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00,
-0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15,
+0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00,
+0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19,
0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44,
-0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45,
-0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE,
-0x65, 0x98, 0x01, 0x4C, 0x01, 0x7D, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77,
-0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52, 0x75, 0x73, 0x73, 0x69,
-0x61,
+0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45,
+0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xDE, 0x65, 0x98, 0x01, 0x4C, 0x01, 0x7D, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F,
+0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52,
+0x75, 0x73, 0x73, 0x69, 0x61,
/* Europe/Nicosia */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -18429,7 +18429,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* W-SU */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8,
+0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8,
0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18,
0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0,
0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50,
@@ -18456,13 +18456,13 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00,
0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50,
-0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00,
-0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15,
+0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00,
+0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19,
0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44,
-0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45,
-0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89,
-0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45,
+0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
/* Zulu */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -18471,4 +18471,4 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = {
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.3", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2014.5", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index e8a7ebfe1..1809d6653 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2582,6 +2582,8 @@ PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str,
err->error_messages[0].position, err->error_messages[0].character, err->error_messages[0].message);
}
if (err && err->error_count) {
+ timelib_time_dtor(dateobj->time);
+ dateobj->time = 0;
return 0;
}
@@ -2729,9 +2731,7 @@ PHP_METHOD(DateTime, __construct)
zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC);
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sO!", &time_str, &time_str_len, &timezone_object, date_ce_timezone)) {
- if (!php_date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC)) {
- ZVAL_NULL(getThis());
- }
+ php_date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC);
}
zend_restore_error_handling(&error_handling TSRMLS_CC);
}
diff --git a/ext/date/tests/bug41523.phpt b/ext/date/tests/bug41523.phpt
index 05c591f06..68fe1bd6a 100644
--- a/ext/date/tests/bug41523.phpt
+++ b/ext/date/tests/bug41523.phpt
@@ -46,7 +46,7 @@ array(12) {
bool(false)
object(DateTime)#1 (3) {
["date"]=>
- string(20) "-0001-11-30 00:00:00.000000"
+ string(27) "-0001-11-30 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
diff --git a/ext/date/tests/bug67118.phpt b/ext/date/tests/bug67118.phpt
index 637175764..973b4eb8d 100644
--- a/ext/date/tests/bug67118.phpt
+++ b/ext/date/tests/bug67118.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #67118 php-cgi crashes regularly on IIS 7
+Bug #67118 crashes in DateTime when this used after failed __construct
--INI--
date.timezone=Europe/Berlin
--FILE--
@@ -11,17 +11,17 @@ class mydt extends datetime
if (!empty($tz) && !is_object($tz)) {
$tz = new DateTimeZone($tz);
}
-
- @parent::__construct($time, $tz);
+ try {
+ @parent::__construct($time, $tz);
+ } catch (Exception $e) {
+ echo "Bad date" . $this->format("Y") . "\n";
+ }
}
};
new mydt("Funktionsansvarig rådgivning och juridik", "UTC");
+?>
--EXPECTF--
-Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Funktionsansvarig rådgivning och juridik) at position 0 (F): The timezone could not be found in the database' in %sbug67118.php:%d
-Stack trace:
-#0 %sbug67118.php(%d): DateTime->__construct('Funktionsansvar...', Object(DateTimeZone))
-#1 %sbug67118.php(%d): mydt->__construct('Funktionsansvar...', 'UTC')
-#2 {main}
- thrown in %sbug67118.php on line %d
+Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in %sbug67118.php on line %d
+Bad date
diff --git a/ext/date/tests/bug67118_2.phpt b/ext/date/tests/bug67118_2.phpt
new file mode 100644
index 000000000..b4904a158
--- /dev/null
+++ b/ext/date/tests/bug67118_2.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Regression introduce in fix for Bug #67118
+--INI--
+date.timezone=Europe/Paris
+--FILE--
+<?php
+class Foo extends DateTime {
+ public function __construct($time = null) {
+ $tz = new DateTimeZone('UTC');
+ try {
+ echo "First try\n";
+ parent::__construct($time, $tz);
+ return;
+ } catch (Exception $e) {
+ echo "Second try\n";
+ parent::__construct($time.'C', $tz);
+ }
+ }
+}
+$date = '12 Sep 2007 15:49:12 UT';
+var_dump(new Foo($date));
+?>
+Done
+--EXPECTF--
+First try
+Second try
+object(Foo)#1 (3) {
+ ["date"]=>
+ string(%d) "2007-09-12 15:49:%s"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(3) "UTC"
+}
+Done
diff --git a/ext/dom/tests/DOMDocument_validate_external_dtd.phpt b/ext/dom/tests/DOMDocument_validate_external_dtd.phpt
index 51a044c54..dd4ec960d 100644
--- a/ext/dom/tests/DOMDocument_validate_external_dtd.phpt
+++ b/ext/dom/tests/DOMDocument_validate_external_dtd.phpt
@@ -12,6 +12,7 @@ require_once dirname(__FILE__) .'/skipif.inc';
// reusing existing xml: http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/dom.xml?view=co&content-type=text%2Fplain
// reusing existing dtd: http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/dom.ent?view=co&content-type=text%2Fplain
$dom = new DOMDocument('1.0');
+$dom->substituteEntities = true;
$dom->load(dirname(__FILE__).'/dom.xml');
var_dump($dom->validate());
?>
diff --git a/ext/dom/tests/bug67081.phpt b/ext/dom/tests/bug67081.phpt
index 56c2c8e58..c6dc007d4 100644
--- a/ext/dom/tests/bug67081.phpt
+++ b/ext/dom/tests/bug67081.phpt
@@ -7,18 +7,22 @@ require_once('skipif.inc');
--FILE--
<?php
$domDocument = new DOMDocument();
+ $domDocument->substituteEntities = true;
$domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_0.xml");
var_dump($domDocument->doctype->internalSubset);
$domDocument = new DOMDocument();
+ $domDocument->substituteEntities = true;
$domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_1.xml");
var_dump($domDocument->doctype->internalSubset);
$domDocument = new DOMDocument();
+ $domDocument->substituteEntities = true;
$domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_2.xml");
var_dump($domDocument->doctype->internalSubset);
$domDocument = new DOMDocument();
+ $domDocument->substituteEntities = true;
$domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "dom.xml");
var_dump($domDocument->doctype->internalSubset);
?>
diff --git a/ext/exif/tests/exif004.phpt b/ext/exif/tests/exif004.phpt
index 229f49e14..8797955f8 100644
--- a/ext/exif/tests/exif004.phpt
+++ b/ext/exif/tests/exif004.phpt
@@ -18,7 +18,7 @@ exif.encode_unicode=ISO-8859-1
test4.jpg is a 1*1 image that contains Exif tags written by WindowsXP
*/
$image = exif_read_data(dirname(__FILE__).'/test4.jpg','',true,false);
-echo var_dump($image['WINXP']);
+var_dump($image['WINXP']);
?>
--EXPECT--
array(5) {
diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c
index cbe3b0cf7..ad285cfe1 100644
--- a/ext/fileinfo/libmagic/cdf.c
+++ b/ext/fileinfo/libmagic/cdf.c
@@ -277,13 +277,15 @@ cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h,
{
const char *b = (const char *)sst->sst_tab;
const char *e = ((const char *)p) + tail;
+ size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
+ CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
(void)&line;
- if (e >= b && (size_t)(e - b) <= CDF_SEC_SIZE(h) * sst->sst_len)
+ if (e >= b && (size_t)(e - b) <= ss * sst->sst_len)
return 0;
DPRINTF(("%d: offset begin %p < end %p || %" SIZE_T_FORMAT "u"
" > %" SIZE_T_FORMAT "u [%" SIZE_T_FORMAT "u %"
SIZE_T_FORMAT "u]\n", line, b, e, (size_t)(e - b),
- CDF_SEC_SIZE(h) * sst->sst_len, CDF_SEC_SIZE(h), sst->sst_len));
+ ss * sst->sst_len, ss, sst->sst_len));
errno = EFTYPE;
return -1;
}
@@ -468,7 +470,8 @@ size_t
cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size)
{
size_t i, j;
- cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * size);
+ cdf_secid_t maxsector = (cdf_secid_t)((sat->sat_len * size)
+ / sizeof(maxsector));
DPRINTF(("Chain:"));
for (j = i = 0; sid >= 0; i++, j++) {
@@ -478,8 +481,8 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size)
errno = EFTYPE;
return (size_t)-1;
}
- if (sid > maxsector) {
- DPRINTF(("Sector %d > %d\n", sid, maxsector));
+ if (sid >= maxsector) {
+ DPRINTF(("Sector %d >= %d\n", sid, maxsector));
errno = EFTYPE;
return (size_t)-1;
}
@@ -812,7 +815,11 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
if (cdf_check_stream_offset(sst, h, e, 0, __LINE__) == -1)
goto out;
for (i = 0; i < sh.sh_properties; i++) {
- size_t ofs = CDF_GETUINT32(p, (i << 1) + 1);
+ size_t ofs, tail = (i << 1) + 1;
+ if (cdf_check_stream_offset(sst, h, p, tail * sizeof(uint32_t),
+ __LINE__) == -1)
+ goto out;
+ ofs = CDF_GETUINT32(p, tail);
q = (const uint8_t *)(const void *)
((const char *)(const void *)p + ofs
- 2 * sizeof(uint32_t));
diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c
index 1d5db8966..3dd07820a 100644
--- a/ext/fileinfo/libmagic/softmagic.c
+++ b/ext/fileinfo/libmagic/softmagic.c
@@ -915,10 +915,18 @@ mconvert(struct magic_set *ms, struct magic *m, int flip)
return 1;
}
case FILE_PSTRING: {
- char *ptr1 = p->s, *ptr2 = ptr1 + file_pstring_length_size(m);
+ size_t sz = file_pstring_length_size(m);
+ char *ptr1 = p->s, *ptr2 = ptr1 + sz;
size_t len = file_pstring_get_length(m, ptr1);
- if (len >= sizeof(p->s))
- len = sizeof(p->s) - 1;
+ if (len >= sizeof(p->s)) {
+ /*
+ * The size of the pascal string length (sz)
+ * is 1, 2, or 4. We need at least 1 byte for NUL
+ * termination, but we've already truncated the
+ * string by p->s, so we need to deduct sz.
+ */
+ len = sizeof(p->s) - sz;
+ }
while (len--)
*ptr1++ = *ptr2++;
*ptr1 = '\0';
diff --git a/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt b/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt
index c9c45940b..958192704 100644
--- a/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt
+++ b/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt
@@ -37,6 +37,7 @@ libxml_set_external_entity_loader(
);
$dd = new DOMDocument;
+$dd->substituteEntities = true;
$dd->resolveExternals = true;
$r = $dd->loadXML($xml);
var_dump($dd->validate());
diff --git a/ext/mbstring/libmbfl/cvsclean b/ext/mbstring/libmbfl/cvsclean
deleted file mode 100755
index 60ae246a5..000000000
--- a/ext/mbstring/libmbfl/cvsclean
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-function cvsclean_sub() {
- prev_pwd=`pwd`
- cd $1
- cat .cvsignore | while read fname; do
- rm -r -f $fname
- done
- cd "$prev_pwd"
-}
-
-cvsclean_sub .
-cvsclean_sub mbfl
-cvsclean_sub filters
-cvsclean_sub nls
diff --git a/ext/mysqli/tests/bug33491.phpt b/ext/mysqli/tests/bug33491.phpt
index 168ecb038..7e994bc4d 100644
--- a/ext/mysqli/tests/bug33491.phpt
+++ b/ext/mysqli/tests/bug33491.phpt
@@ -26,4 +26,4 @@ $DB->query_single('SELECT DATE()');
?>
--EXPECTF--
-Fatal error: Call to a member function fetch_row() on a non-object in %sbug33491.php on line %d
+Fatal error: Call to a member function fetch_row() on boolean in %sbug33491.php on line %d
diff --git a/ext/mysqli/tests/mysqli_change_user_new.phpt b/ext/mysqli/tests/mysqli_change_user_new.phpt
index a87afa84a..e16895766 100644
--- a/ext/mysqli/tests/mysqli_change_user_new.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_new.phpt
@@ -41,4 +41,4 @@ Warning: mysqli_query(): MySQL server has gone away in %s on line %d
Warning: mysqli_query(): Error reading result set's header in %s on line %d
[003] [2006] MySQL server has gone away
-Fatal error: Call to a member function fetch_assoc() on a non-object in %s on line %d \ No newline at end of file
+Fatal error: Call to a member function fetch_assoc() on %s in %s on line %d \ No newline at end of file
diff --git a/ext/mysqli/tests/table.inc b/ext/mysqli/tests/table.inc
index aa1207af4..cb089bb95 100644
--- a/ext/mysqli/tests/table.inc
+++ b/ext/mysqli/tests/table.inc
@@ -12,7 +12,7 @@ if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) {
exit(1);
}
-if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) {
+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);
}
diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c
index c2f2b8890..dfa90db25 100644
--- a/ext/mysqlnd/mysqlnd_charset.c
+++ b/ext/mysqlnd/mysqlnd_charset.c
@@ -418,20 +418,60 @@ static uint mysqlnd_mbcharlen_utf16(unsigned int utf16)
/* {{{ utf32 functions */
-static uint
-check_mb_utf32(const char *start __attribute((unused)), const char *end __attribute((unused)))
+static unsigned int check_mb_utf32(const char *start __attribute((unused)), const char *end __attribute((unused)))
{
return 4;
}
-static uint
-mysqlnd_mbcharlen_utf32(unsigned int utf32 __attribute((unused)))
+static unsigned int mysqlnd_mbcharlen_utf32(unsigned int utf32 __attribute((unused)))
{
return 4;
}
/* }}} */
+
+/* {{{ gb18030 functions */
+#define is_gb18030_odd(c) (0x81 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0xFE)
+#define is_gb18030_even_2(c) ((0x40 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0x7E) || (0x80 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0xFE))
+#define is_gb18030_even_4(c) (0x30 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0x39)
+
+
+static unsigned int mysqlnd_mbcharlen_gb18030(unsigned int c)
+{
+ if (c <= 0xFF) {
+ return !is_gb18030_odd(c);
+ }
+ if (c > 0xFFFF || !is_gb18030_odd((c >> 8) & 0xFF)) {
+ return 0;
+ }
+ if (is_gb18030_even_2((c & 0xFF))) {
+ return 2;
+ }
+ if (is_gb18030_even_4((c & 0xFF))) {
+ return 4;
+ }
+
+ return 0;
+}
+
+
+static unsigned int my_ismbchar_gb18030(const char * start, const char * end)
+{
+ if (end - start <= 1 || !is_gb18030_odd(start[0])) {
+ return 0;
+ }
+
+ if (is_gb18030_even_2(start[1])) {
+ return 2;
+ } else if (end - start > 3 && is_gb18030_even_4(start[1]) && is_gb18030_odd(start[2]) && is_gb18030_even_4(start[3])) {
+ return 4;
+ }
+
+ return 0;
+}
+/* }}} */
+
/*
The server compiles sometimes the full utf-8 (the mb4) as utf8m4, and the old as utf8,
for BC reasons. Sometimes, utf8mb4 is just utf8 but the old charsets are utf8mb3.
@@ -643,6 +683,8 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 245, UTF8_MB4, UTF8_MB4"_croatian_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 246, UTF8_MB4, UTF8_MB4"_unicode_520_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 247, UTF8_MB4, UTF8_MB4"_vietnamese_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
+ { 248, "gb18030", "gb18030_chinese_ci", 1, 4, "", mysqlnd_mbcharlen_gb18030, my_ismbchar_gb18030},
+ { 249, "gb18030", "gb18030_bin", 1, 4, "", mysqlnd_mbcharlen_gb18030, my_ismbchar_gb18030},
{ 254, UTF8_MB3, UTF8_MB3"_general_cs", 1, 3, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 0, NULL, NULL, 0, 0, NULL, NULL, NULL}
diff --git a/ext/oci8/LICENSE b/ext/oci8/LICENSE
index 42536af32..6059c80e1 100644
--- a/ext/oci8/LICENSE
+++ b/ext/oci8/LICENSE
@@ -1,6 +1,6 @@
--------------------------------------------------------------------
The PHP License, version 3.01
-Copyright (c) 1999 - 2012 The PHP Group. All rights reserved.
+Copyright (c) 1999 - 2014 The PHP Group. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 8badbf7e0..0d9b9564d 100755
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -708,7 +708,7 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */
char * thestr;
long gmadjust = 0;
- if (ASN1_STRING_type(timestr) != V_ASN1_UTCTIME) {
+ if (ASN1_STRING_type(timestr) != V_ASN1_UTCTIME && ASN1_STRING_type(timestr) != V_ASN1_GENERALIZEDTIME) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "illegal ASN1 data type for timestamp");
return (time_t)-1;
}
@@ -723,6 +723,11 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */
return (time_t)-1;
}
+ if (ASN1_STRING_type(timestr) == V_ASN1_GENERALIZEDTIME && ASN1_STRING_length(timestr) < 15) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to parse time string %s correctly", timestr->data);
+ return (time_t)-1;
+ }
+
strbuf = estrdup((char *)ASN1_STRING_data(timestr));
memset(&thetime, 0, sizeof(thetime));
@@ -744,14 +749,21 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */
*thestr = '\0';
thestr -= 2;
thetime.tm_mon = atoi(thestr)-1;
+
*thestr = '\0';
- thestr -= 2;
- thetime.tm_year = atoi(thestr);
+ if( ASN1_STRING_type(timestr) == V_ASN1_UTCTIME ) {
+ thestr -= 2;
+ thetime.tm_year = atoi(thestr);
- if (thetime.tm_year < 68) {
- thetime.tm_year += 100;
+ if (thetime.tm_year < 68) {
+ thetime.tm_year += 100;
+ }
+ } else if( ASN1_STRING_type(timestr) == V_ASN1_GENERALIZEDTIME ) {
+ thestr -= 4;
+ thetime.tm_year = atoi(thestr) - 1900;
}
+
thetime.tm_isdst = -1;
ret = mktime(&thetime);
diff --git a/ext/openssl/tests/bug65698.crt b/ext/openssl/tests/bug65698.crt
new file mode 100644
index 000000000..c4a026113
--- /dev/null
+++ b/ext/openssl/tests/bug65698.crt
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIEsTCCA5mgAwIBAgIQdwrGwrpRpBwdXS+ZsmsMGjANBgkqhkiG9w0BAQUFADA+
+MQswCQYDVQQGEwJQTDEbMBkGA1UEChMSVW5pemV0byBTcC4geiBvLm8uMRIwEAYD
+VQQDEwlDZXJ0dW0gQ0EwIhgPMjAwOTAzMDMxMjUzMThaGA8yMDI0MDMwMzEyNTMx
+OFowdzELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVz
+IFMuQS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEb
+MBkGA1UEAxMSQ2VydHVtIExldmVsIElJIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA4LE0Ixw8h5Lper9tHVtZkWIujxYsPVgUZABeZZgQsKTdJjaG
+VP64B/oiEV5Hd3AxRqaZ7dRRsf4Pg/PSS/2mHRQQ/SH3XACbrDHmucDvYgtU/WoZ
+yp9d6PXVPY4j7J5t/52s+EbZD5swSuQLGjZ9iwg9sXX3JdJ9Ty+B3z80oiajpK0B
+wqAxrcX3DekEOknj7LkAOK6iuQKI85REj4IVb9kD7KKIWdISGbfL4Ezh/TP51e0L
+/WhTJ7lHbHbRzFfPU/oi3Qyt5tEexrPKe+6N+Jrejdb5Ya7Ne3tKujDU7KlbO+dn
+pzFH7VHkBPJcQJ7QUrprPaqVsVg3JJ1PXTqVnwIDAQABo4IBbDCCAWgwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUgGIR3sBrpxDhCPBVtDCDv/qPCGAwUgYDVR0j
+BEswSaFCpEAwPjELMAkGA1UEBhMCUEwxGzAZBgNVBAoTElVuaXpldG8gU3AuIHog
+by5vLjESMBAGA1UEAxMJQ2VydHVtIENBggMBACAwDgYDVR0PAQH/BAQDAgEGMCwG
+A1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly9jcmwuY2VydHVtLnBsL2NhLmNybDBoBggr
+BgEFBQcBAQRcMFowKAYIKwYBBQUHMAGGHGh0dHA6Ly9zdWJjYS5vY3NwLWNlcnR1
+bS5jb20wLgYIKwYBBQUHMAKGImh0dHA6Ly9yZXBvc2l0b3J5LmNlcnR1bS5wbC9j
+YS5jZXIwOgYDVR0gBDMwMTAvBgRVHSAAMCcwJQYIKwYBBQUHAgEWGWh0dHBzOi8v
+d3d3LmNlcnR1bS5wbC9DUFMwDQYJKoZIhvcNAQEFBQADggEBAI/jSDAW/w9qLzF6
+4oQiIRB7dGKp2Nlj27xZFYDBRINn4DKyZExkpanASF2of9eEzvrS+qoDY29mhXCi
+MkiGr0vCsVhn0ReUpjg4Z5SsiQhZ2BGSjXiOJgaDI7Dw1MH7Ru6jdfSbLyd97EFj
+ER0ERGdrcA2kLw7KfQm78IkClXEEKjKnAUTn1d/5Y4UuBWDCEL0FLgO9AqNXEzIy
+rlXVGIs73kdefAK+Z1T6dm83vUrDMyzemWNRBI2tVBujkN6zkaF6uPjE4hfoIkEQ
+Z4317byFkG4mxjATU+tQLG1Bs88HUAOrxtJOo/WoeCNsFJaxbYPt4oQGxIVYdz29
+OUX9CQA=
+-----END CERTIFICATE-----
diff --git a/ext/openssl/tests/bug65698.phpt b/ext/openssl/tests/bug65698.phpt
new file mode 100644
index 000000000..35d31764d
--- /dev/null
+++ b/ext/openssl/tests/bug65698.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Bug #65689 (GeneralizedTime format parsing)
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+$crt = substr(__FILE__, 0, -4).'.crt';
+$info = openssl_x509_parse("file://$crt");
+var_dump($info["validFrom"], $info["validFrom_time_t"], $info["validTo"], $info["validTo_time_t"]);
+?>
+Done
+--EXPECTF--
+string(15) "20090303125318Z"
+int(1236084798)
+string(15) "20240303125318Z"
+int(1709470398)
+Done
diff --git a/ext/openssl/tests/cve-2013-6420.phpt b/ext/openssl/tests/cve-2013-6420.phpt
index 87c0210b2..ccead0aab 100644
--- a/ext/openssl/tests/cve-2013-6420.phpt
+++ b/ext/openssl/tests/cve-2013-6420.phpt
@@ -12,7 +12,7 @@ var_dump($info['issuer']['emailAddress'], $info["validFrom_time_t"]);
?>
Done
--EXPECTF--
-%s openssl_x509_parse(): illegal ASN1 data type for timestamp in %s%ecve-2013-6420.php on line 3
+%s openssl_x509_parse(): illegal length in timestamp in %s%ecve-2013-6420.php on line 3
string(27) "stefan.esser@sektioneins.de"
int(-1)
Done
diff --git a/ext/openssl/tests/openssl_spki_verify.phpt b/ext/openssl/tests/openssl_spki_verify.phpt
index 1ee573fd3..52dc8e204 100644
--- a/ext/openssl/tests/openssl_spki_verify.phpt
+++ b/ext/openssl/tests/openssl_spki_verify.phpt
@@ -17,9 +17,7 @@ $ksize = array('1024'=>1024,
'4096'=>4096);
/* array of available hashings to test */
-$algo = array('md4'=>OPENSSL_ALGO_MD4,
- 'md5'=>OPENSSL_ALGO_MD5,
- 'sha1'=>OPENSSL_ALGO_SHA1,
+$algo = array('sha1'=>OPENSSL_ALGO_SHA1,
'sha224'=>OPENSSL_ALGO_SHA224,
'sha256'=>OPENSSL_ALGO_SHA256,
'sha384'=>OPENSSL_ALGO_SHA384,
@@ -90,16 +88,4 @@ bool(false)
bool(true)
bool(false)
bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
bool(false) \ No newline at end of file
diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re
index fa8ef187f..9f6a6a736 100644
--- a/ext/pdo/pdo_sql_parser.re
+++ b/ext/pdo/pdo_sql_parser.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
index 42c3d074a..224684b87 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt
@@ -93,4 +93,4 @@ array(1) {
Warning: PDO::prepare(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'unknown_column' in 'field list' in %s on line %d
-Fatal error: Call to a member function execute() on a non-object in %s on line %d \ No newline at end of file
+Fatal error: Call to a member function execute() on boolean in %s on line %d
diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
index 90cedef56..b7b0ab629 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt
@@ -36,4 +36,4 @@ Warning: PDO::prepare(): SQLSTATE[HY093]: Invalid parameter number: mixed named
Warning: PDO::prepare(): SQLSTATE[HY093]: Invalid parameter number in %s on line %d
-Fatal error: Call to a member function execute() on a non-object in %s on line %d \ No newline at end of file
+Fatal error: Call to a member function execute() on boolean in %s on line %d
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
index 4d59e8c3b..c16ce5dd1 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt
@@ -56,4 +56,4 @@ Testing native PS...
Warning: PDO::prepare(): SQLSTATE[42S02]: Base table or view not found: 1146 Table '%s.ihopeitdoesnotexist' doesn't exist in %s on line %d
-Fatal error: Call to a member function execute() on a non-object in %s on line %d \ No newline at end of file
+Fatal error: Call to a member function execute() on boolean in %s on line %d
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
index 91b5237ea..56c37c5f1 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
@@ -99,4 +99,4 @@ Native Prepared Statements...
Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%SSELECT label FROM test ORDER BY id ASC LIMIT 1' at line %d in %s on line %d
-Fatal error: Call to a member function errorInfo() on a non-object in %s on line %d
+Fatal error: Call to a member function errorInfo() on boolean in %s on line %d
diff --git a/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt b/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt
index eeaf8d382..368464e13 100644
--- a/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt
+++ b/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt
@@ -13,6 +13,6 @@ if (!extension_loaded('reflection') || !defined('PHP_VERSION_ID') || PHP_VERSION
<?php
$closure = function($param) { return "this is a closure"; };
$rc = new ReflectionFunction($closure);
-echo var_dump($rc->isClosure());
+var_dump($rc->isClosure());
--EXPECTF--
bool(true)
diff --git a/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt b/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt
index 31d37a85f..4148fada0 100644
--- a/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt
+++ b/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt
@@ -10,6 +10,6 @@ if (!extension_loaded('reflection') || !defined('PHP_VERSION_ID') || PHP_VERSION
--FILE--
<?php
$rc = new ReflectionFunction('ereg');
-echo var_dump($rc->isDeprecated());
+var_dump($rc->isDeprecated());
--EXPECTF--
bool(true)
diff --git a/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt b/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt
index c71b96b8e..30189cf4d 100644
--- a/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt
+++ b/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt
@@ -12,6 +12,6 @@ disable_functions=is_file
--FILE--
<?php
$rc = new ReflectionFunction('is_file');
-echo var_dump($rc->isDisabled());
+var_dump($rc->isDisabled());
--EXPECTF--
bool(true)
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index a8c6cb936..32bf5ca6f 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -225,6 +225,7 @@ PHP_METHOD(SoapClient, __getFunctions);
PHP_METHOD(SoapClient, __getTypes);
PHP_METHOD(SoapClient, __doRequest);
PHP_METHOD(SoapClient, __setCookie);
+PHP_METHOD(SoapClient, __getCookies);
PHP_METHOD(SoapClient, __setLocation);
PHP_METHOD(SoapClient, __setSoapHeaders);
@@ -368,6 +369,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setcookie, 0, 0, 1)
ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_soapclient___getcookies, 0)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setsoapheaders, 0, 0, 1)
ZEND_ARG_INFO(0, soapheaders)
ZEND_END_ARG_INFO()
@@ -422,6 +426,7 @@ static const zend_function_entry soap_client_functions[] = {
PHP_ME(SoapClient, __getTypes, arginfo_soapclient___gettypes, 0)
PHP_ME(SoapClient, __doRequest, arginfo_soapclient___dorequest, 0)
PHP_ME(SoapClient, __setCookie, arginfo_soapclient___setcookie, 0)
+ PHP_ME(SoapClient, __getCookies, arginfo_soapclient___getcookies, 0)
PHP_ME(SoapClient, __setLocation, arginfo_soapclient___setlocation, 0)
PHP_ME(SoapClient, __setSoapHeaders, arginfo_soapclient___setsoapheaders, 0)
PHP_FE_END
@@ -3150,6 +3155,24 @@ PHP_METHOD(SoapClient, __setCookie)
}
/* }}} */
+/* {{{ proto array SoapClient::__getCookies ( void )
+ Returns list of cookies */
+PHP_METHOD(SoapClient, __getCookies)
+{
+ zval **cookies, *tmp;
+
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+
+ array_init(return_value);
+
+ if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) != FAILURE) {
+ zend_hash_copy(Z_ARRVAL_P(return_value), Z_ARRVAL_P(*cookies), (copy_ctor_func_t) zval_add_ref, (void *)&tmp, sizeof(zval*));
+ }
+}
+/* }}} */
+
/* {{{ proto void SoapClient::__setSoapHeaders(array SoapHeaders)
Sets SOAP headers for subsequent calls (replaces any previous
values).
diff --git a/ext/soap/tests/bug49898.phpt b/ext/soap/tests/bug49898.phpt
new file mode 100644
index 000000000..eea4ea490
--- /dev/null
+++ b/ext/soap/tests/bug49898.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Test for bug #49898: SoapClient::__getCookies() implementation
+--CREDITS--
+Boro Sitnikovski <buritomath@yahoo.com>
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$client = new SoapClient(null, array('uri' => 'mo:http://www.w3.org/', 'location' => 'http://some.url'));
+$client->__setCookie("CookieTest", "HelloWorld");
+var_dump($client->__getCookies()['CookieTest'][0]);
+?>
+--EXPECT--
+string(10) "HelloWorld"
diff --git a/ext/sockets/sendrecvmsg.c b/ext/sockets/sendrecvmsg.c
index d9a819073..1d9cc78e7 100644
--- a/ext/sockets/sendrecvmsg.c
+++ b/ext/sockets/sendrecvmsg.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2012 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/sockets/windows_common.h b/ext/sockets/windows_common.h
index 3a9cb5912..9cc01ae12 100644
--- a/ext/sockets/windows_common.h
+++ b/ext/sockets/windows_common.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2012 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/spl/spl_array.c b/ext/spl/spl_array.c
index f450e0b71..4191b0db0 100644
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -402,7 +402,7 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
/* When in a write context,
* ZE has to be fooled into thinking this is in a reference set
* by separating (if necessary) and returning as an is_ref=1 zval (even if refcount == 1) */
- if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_PP(ret)) {
+ if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_PP(ret) && ret != &EG(uninitialized_zval_ptr)) {
if (Z_REFCOUNT_PP(ret) > 1) {
zval *newval;
@@ -1749,7 +1749,6 @@ SPL_METHOD(Array, unserialize)
}
if (buf_len == 0) {
- zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Empty serialized string cannot be empty");
return;
}
diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c
index 772d780e0..fb88f5890 100644
--- a/ext/spl/spl_dllist.c
+++ b/ext/spl/spl_dllist.c
@@ -1192,7 +1192,6 @@ SPL_METHOD(SplDoublyLinkedList, unserialize)
}
if (buf_len == 0) {
- zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Serialized string cannot be empty");
return;
}
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index 91830ab00..57ddf492d 100644
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -831,7 +831,6 @@ SPL_METHOD(SplObjectStorage, unserialize)
}
if (buf_len == 0) {
- zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Empty serialized string cannot be empty");
return;
}
diff --git a/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt b/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt
index 75d8a4132..4c446c82b 100644
--- a/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt
+++ b/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt
@@ -1,5 +1,5 @@
--TEST--
-ArrayObject: test that you cannot unserialize a empty string
+ArrayObject: test that you can unserialize a empty string
--CREDITS--
Havard Eide <nucleuz@gmail.com>
#PHPTestFest2009 Norway 2009-06-09 \o/
@@ -8,9 +8,6 @@ Havard Eide <nucleuz@gmail.com>
$a = new ArrayObject(array());
$a->unserialize("");
?>
+Done
--EXPECTF--
-Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Empty serialized string cannot be empty' in %s.php:%d
-Stack trace:
-#0 %s(%d): ArrayObject->unserialize('')
-#1 {main}
- thrown in %s.php on line %d
+Done
diff --git a/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt b/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt
index 4c2dd75e1..617f85e63 100644
--- a/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt
+++ b/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt
@@ -1,5 +1,5 @@
--TEST--
-Check that SplObjectStorage::unserialize throws exception when NULL passed
+Check that SplObjectStorage::unserialize doesn't throws exception when NULL passed
--CREDITS--
PHPNW Testfest 2009 - Simon Westcott (swestcott@gmail.com)
--FILE--
@@ -14,6 +14,6 @@ try {
}
?>
+Done
--EXPECTF--
-Empty serialized string cannot be empty
-
+Done
diff --git a/ext/spl/tests/bug66127.phpt b/ext/spl/tests/bug66127.phpt
new file mode 100644
index 000000000..b5d1dcac4
--- /dev/null
+++ b/ext/spl/tests/bug66127.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #66127 (Segmentation fault with ArrayObject unset)
+--INI--
+error_reporting = E_ALL & ~E_NOTICE
+--FILE--
+<?php
+function crash()
+{
+ set_error_handler(function () {});
+ $var = 1;
+ trigger_error('error');
+ $var2 = $var;
+ $var3 = $var;
+ trigger_error('error');
+}
+
+$items = new ArrayObject();
+
+unset($items[0]);
+unset($items[0][0]);
+crash();
+echo "Worked!\n";
+?>
+--EXPECT--
+Worked!
diff --git a/ext/spl/tests/iterator_035.phpt b/ext/spl/tests/iterator_035.phpt
index 9ce098b69..fc0271e38 100644
--- a/ext/spl/tests/iterator_035.phpt
+++ b/ext/spl/tests/iterator_035.phpt
@@ -12,4 +12,6 @@ $a[] = &$tmp;
echo "Done\n";
?>
--EXPECTF--
+Notice: Indirect modification of overloaded element of ArrayIterator has no effect in %s on line %d
+
Fatal error: Cannot assign by reference to overloaded object in %s on line %d
diff --git a/ext/spl/tests/unserialize.phpt b/ext/spl/tests/unserialize.phpt
new file mode 100644
index 000000000..3232b7967
--- /dev/null
+++ b/ext/spl/tests/unserialize.phpt
@@ -0,0 +1,43 @@
+--TEST--
+SPL: unserialize with no data (for PHPUnit)
+--FILE--
+<?php
+
+$types = array('SplDoublyLinkedList', 'SplObjectStorage', 'ArrayObject');
+
+foreach ($types as $type) {
+ // serialize an empty new object
+ $exp = serialize(new $type());
+ // hack to instanciate an object without constructor
+ $str = sprintf('C:%d:"%s":0:{}', strlen($type), $type);
+ $obj = unserialize($str);
+ var_dump($obj);
+ // serialize result
+ $out = serialize($obj);
+ // both should match
+ var_dump($exp === $out);
+}
+?>
+===DONE===
+--EXPECTF--
+object(SplDoublyLinkedList)#%d (2) {
+ ["flags":"SplDoublyLinkedList":private]=>
+ int(0)
+ ["dllist":"SplDoublyLinkedList":private]=>
+ array(0) {
+ }
+}
+bool(true)
+object(SplObjectStorage)#%d (1) {
+ ["storage":"SplObjectStorage":private]=>
+ array(0) {
+ }
+}
+bool(true)
+object(ArrayObject)#%d (1) {
+ ["storage":"ArrayObject":private]=>
+ array(0) {
+ }
+}
+bool(true)
+===DONE===
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 4f9833103..cbcaaf5b8 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -342,8 +342,7 @@ PHP_FUNCTION(count)
RETVAL_LONG(Z_LVAL_P(retval));
zval_ptr_dtor(&retval);
}
- zval_dtor(mode_zv);
- efree(mode_zv);
+ zval_ptr_dtor(&mode_zv);
return;
}
#endif
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index e525ff2a8..69e20fdd9 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -2648,7 +2648,6 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_unserialize, 0, 0, 1)
ZEND_ARG_INFO(0, variable_representation)
- ZEND_ARG_INFO(1, consumed)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_memory_get_usage, 0, 0, 0)
@@ -4043,92 +4042,91 @@ PHP_FUNCTION(putenv)
{
char *setting;
int setting_len;
+ char *p, **env;
+ putenv_entry pe;
+#ifdef PHP_WIN32
+ char *value = NULL;
+ int equals = 0;
+ int error_code;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &setting, &setting_len) == FAILURE) {
return;
}
+
+ if(setting_len == 0 || setting[0] == '=') {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter syntax");
+ RETURN_FALSE;
+ }
- if (setting_len) {
- char *p, **env;
- putenv_entry pe;
+ pe.putenv_string = estrndup(setting, setting_len);
+ pe.key = estrndup(setting, setting_len);
+ if ((p = strchr(pe.key, '='))) { /* nullify the '=' if there is one */
+ *p = '\0';
#ifdef PHP_WIN32
- char *value = NULL;
- int equals = 0;
- int error_code;
+ equals = 1;
#endif
+ }
- pe.putenv_string = estrndup(setting, setting_len);
- pe.key = estrndup(setting, setting_len);
- if ((p = strchr(pe.key, '='))) { /* nullify the '=' if there is one */
- *p = '\0';
-#ifdef PHP_WIN32
- equals = 1;
-#endif
- }
-
- pe.key_len = strlen(pe.key);
+ pe.key_len = strlen(pe.key);
#ifdef PHP_WIN32
- if (equals) {
- if (pe.key_len < setting_len - 1) {
- value = p + 1;
- } else {
- /* empty string*/
- value = p;
- }
+ if (equals) {
+ if (pe.key_len < setting_len - 1) {
+ value = p + 1;
+ } else {
+ /* empty string*/
+ value = p;
}
+ }
#endif
- zend_hash_del(&BG(putenv_ht), pe.key, pe.key_len+1);
+ zend_hash_del(&BG(putenv_ht), pe.key, pe.key_len+1);
- /* find previous value */
- pe.previous_value = NULL;
- for (env = environ; env != NULL && *env != NULL; env++) {
- if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') { /* found it */
+ /* find previous value */
+ pe.previous_value = NULL;
+ for (env = environ; env != NULL && *env != NULL; env++) {
+ if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') { /* found it */
#if defined(PHP_WIN32)
- /* must copy previous value because MSVCRT's putenv can free the string without notice */
- pe.previous_value = estrdup(*env);
+ /* must copy previous value because MSVCRT's putenv can free the string without notice */
+ pe.previous_value = estrdup(*env);
#else
- pe.previous_value = *env;
+ pe.previous_value = *env;
#endif
- break;
- }
+ break;
}
+ }
#if HAVE_UNSETENV
- if (!p) { /* no '=' means we want to unset it */
- unsetenv(pe.putenv_string);
- }
- if (!p || putenv(pe.putenv_string) == 0) { /* success */
+ if (!p) { /* no '=' means we want to unset it */
+ unsetenv(pe.putenv_string);
+ }
+ if (!p || putenv(pe.putenv_string) == 0) { /* success */
#else
# ifndef PHP_WIN32
- if (putenv(pe.putenv_string) == 0) { /* success */
+ if (putenv(pe.putenv_string) == 0) { /* success */
# else
- error_code = SetEnvironmentVariable(pe.key, value);
+ error_code = SetEnvironmentVariable(pe.key, value);
# if _MSC_VER < 1500
- /* Yet another VC6 bug, unset may return env not found */
- if (error_code != 0 ||
- (error_code == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)) {
+ /* Yet another VC6 bug, unset may return env not found */
+ if (error_code != 0 ||
+ (error_code == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)) {
# else
- if (error_code != 0) { /* success */
+ if (error_code != 0) { /* success */
# endif
# endif
#endif
- zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL);
+ zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL);
#ifdef HAVE_TZSET
- if (!strncmp(pe.key, "TZ", pe.key_len)) {
- tzset();
- }
-#endif
- RETURN_TRUE;
- } else {
- efree(pe.putenv_string);
- efree(pe.key);
- RETURN_FALSE;
+ if (!strncmp(pe.key, "TZ", pe.key_len)) {
+ tzset();
}
+#endif
+ RETURN_TRUE;
+ } else {
+ efree(pe.putenv_string);
+ efree(pe.key);
+ RETURN_FALSE;
}
-
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter syntax");
- RETURN_FALSE;
}
/* }}} */
#endif
diff --git a/ext/standard/dns.c b/ext/standard/dns.c
index 6a894467f..214a7dc7e 100644
--- a/ext/standard/dns.c
+++ b/ext/standard/dns.c
@@ -517,6 +517,10 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int
while (ll < dlen) {
n = cp[ll];
+ if ((ll + n) >= dlen) {
+ // Invalid chunk length, truncate
+ n = dlen - (ll + 1);
+ }
memcpy(tp + ll , cp + ll + 1, n);
add_next_index_stringl(entries, cp + ll + 1, n, 1);
ll = ll + n + 1;
diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c
index 73776ff0b..1b8d505a4 100644
--- a/ext/standard/http_fopen_wrapper.c
+++ b/ext/standard/http_fopen_wrapper.c
@@ -752,10 +752,11 @@ finish:
SEPARATE_ZVAL(tmpzval);
convert_to_long_ex(tmpzval);
follow_location = Z_LVAL_PP(tmpzval);
- } else if (!(response_code >= 300 && response_code < 304 || 307 == response_code)) {
+ } else if (!(response_code >= 300 && response_code < 304 || 307 == response_code || 308 == response_code)) {
/* we shouldn't redirect automatically
if follow_location isn't set and response_code not in (300, 301, 302, 303 and 307)
- see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1 */
+ see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1
+ RFC 7238 defines 308: http://tools.ietf.org/html/rfc7238 */
follow_location = 0;
}
strlcpy(location, http_header_line + 10, sizeof(location));
diff --git a/ext/standard/tests/general_functions/header_redirection_001.phpt b/ext/standard/tests/general_functions/header_redirection_001.phpt
new file mode 100644
index 000000000..ecf57ec54
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_001.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Location: headers change the status code
+--CGI--
+--FILE--
+<?php
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 302 Moved Temporarily
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_002.phpt b/ext/standard/tests/general_functions/header_redirection_002.phpt
new file mode 100644
index 000000000..2bf6dec51
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_002.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers override non-201 and 3xx response codes
+--CGI--
+--FILE--
+<?php
+header("HTTP/1.1 418 I'm a Teapot");
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 302 Moved Temporarily
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_003.phpt b/ext/standard/tests/general_functions/header_redirection_003.phpt
new file mode 100644
index 000000000..678e3143a
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_003.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Location: headers respect the header() response code parameter
+--CGI--
+--FILE--
+<?php
+header('Location: http://example.com/', true, 404);
+?>
+--EXPECTHEADERS--
+Status: 404 Not Found
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_004.phpt b/ext/standard/tests/general_functions/header_redirection_004.phpt
new file mode 100644
index 000000000..678e3143a
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_004.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Location: headers respect the header() response code parameter
+--CGI--
+--FILE--
+<?php
+header('Location: http://example.com/', true, 404);
+?>
+--EXPECTHEADERS--
+Status: 404 Not Found
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_005.phpt b/ext/standard/tests/general_functions/header_redirection_005.phpt
new file mode 100644
index 000000000..fc3e0f7af
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_005.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 201 response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 201 Created');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 201 Created
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_006.phpt b/ext/standard/tests/general_functions/header_redirection_006.phpt
new file mode 100644
index 000000000..5fb52096c
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_006.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 300 Multiple Choices response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 300 Multiple Choices');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 300 Multiple Choices
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_007.phpt b/ext/standard/tests/general_functions/header_redirection_007.phpt
new file mode 100644
index 000000000..6769b080f
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_007.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 301 Moved Permanently response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 301 Moved Permanently');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 301 Moved Permanently
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_008.phpt b/ext/standard/tests/general_functions/header_redirection_008.phpt
new file mode 100644
index 000000000..50993707c
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_008.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 302 Found response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 302 Found');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 302 Found
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_009.phpt b/ext/standard/tests/general_functions/header_redirection_009.phpt
new file mode 100644
index 000000000..f8d27f9bf
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_009.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 303 See Other response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 303 See Other');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 303 See Other
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_010.phpt b/ext/standard/tests/general_functions/header_redirection_010.phpt
new file mode 100644
index 000000000..316112dde
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_010.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 304 Not Modified response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 304 Not Modified');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 304 Not Modified
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_011.phpt b/ext/standard/tests/general_functions/header_redirection_011.phpt
new file mode 100644
index 000000000..bfd878963
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_011.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 305 Use Proxy response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 305 Use Proxy');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 305 Use Proxy
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_012.phpt b/ext/standard/tests/general_functions/header_redirection_012.phpt
new file mode 100644
index 000000000..657028b09
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_012.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 307 Temporary Redirect response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 307 Temporary Redirect');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 307 Temporary Redirect
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_013.phpt b/ext/standard/tests/general_functions/header_redirection_013.phpt
new file mode 100644
index 000000000..4dce0d00f
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_013.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 308 Permanent Redirect response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 308 Permanent Redirect');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 308 Permanent Redirect
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/header_redirection_014.phpt b/ext/standard/tests/general_functions/header_redirection_014.phpt
new file mode 100644
index 000000000..a5fb6e8fe
--- /dev/null
+++ b/ext/standard/tests/general_functions/header_redirection_014.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Location: headers do not override the 399 Choose Your Own Adventure response code
+--CGI--
+--FILE--
+<?php
+header('HTTP/1.1 399 Choose Your Own Adventure');
+header('Location: http://example.com/');
+?>
+--EXPECTHEADERS--
+Status: 399 Choose Your Own Adventure
+Location: http://example.com/
+--EXPECT--
diff --git a/ext/standard/tests/general_functions/putenv.phpt b/ext/standard/tests/general_functions/putenv.phpt
index afe1badce..254207320 100644
--- a/ext/standard/tests/general_functions/putenv.phpt
+++ b/ext/standard/tests/general_functions/putenv.phpt
@@ -15,6 +15,9 @@ var_dump(getenv($var_name));
var_dump(putenv($var_name));
var_dump(getenv($var_name));
+var_dump(putenv("=123"));
+var_dump(putenv(""));
+
echo "Done\n";
?>
--EXPECTF--
@@ -25,4 +28,10 @@ bool(true)
string(0) ""
bool(true)
bool(false)
+
+Warning: putenv(): Invalid parameter syntax in %s on line %d
+bool(false)
+
+Warning: putenv(): Invalid parameter syntax in %s on line %d
+bool(false)
Done
diff --git a/ext/standard/tests/http/bug67430.phpt b/ext/standard/tests/http/bug67430.phpt
new file mode 100644
index 000000000..d4474fdf5
--- /dev/null
+++ b/ext/standard/tests/http/bug67430.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #67430 (http:// wrapper doesn't follow 308 redirects)
+--INI--
+allow_url_fopen=1
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--FILE--
+<?php
+require 'server.inc';
+
+function do_test($follow) {
+ $options = [
+ 'http' => [
+ 'method' => 'POST',
+ 'follow_location' => $follow,
+ ],
+ ];
+
+ $ctx = stream_context_create($options);
+
+ $responses = [
+ "data://text/plain,HTTP/1.1 308\r\nLocation: /foo\r\n\r\n",
+ "data://text/plain,HTTP/1.1 200\r\nConnection: close\r\n\r\n",
+ ];
+ $pid = http_server('tcp://127.0.0.1:12342', $responses, $output);
+
+ $fd = fopen('http://127.0.0.1:12342/', 'rb', false, $ctx);
+ fseek($output, 0, SEEK_SET);
+ echo stream_get_contents($output);
+
+ http_server_kill($pid);
+}
+
+do_test(true);
+do_test(false);
+
+?>
+Done
+--EXPECT--
+POST / HTTP/1.0
+Host: 127.0.0.1:12342
+
+GET /foo HTTP/1.0
+Host: 127.0.0.1:12342
+
+POST / HTTP/1.0
+Host: 127.0.0.1:12342
+
+Done
diff --git a/ext/standard/tests/serialize/serialization_error_001.phpt b/ext/standard/tests/serialize/serialization_error_001.phpt
index c6c17512f..da6f50cc0 100644
--- a/ext/standard/tests/serialize/serialization_error_001.phpt
+++ b/ext/standard/tests/serialize/serialization_error_001.phpt
@@ -21,7 +21,7 @@ var_dump( unserialize() );
//Test serialize with one more than the expected number of arguments
var_dump( serialize(1,2) );
-var_dump( unserialize(1,$x,2) );
+var_dump( unserialize(1,2) );
echo "Done";
?>
@@ -31,12 +31,12 @@ echo "Done";
Warning: serialize() expects exactly 1 parameter, 0 given in %s on line 16
NULL
-Warning: unserialize() expects at least 1 parameter, 0 given in %s on line 17
+Warning: unserialize() expects exactly 1 parameter, 0 given in %s on line 17
bool(false)
Warning: serialize() expects exactly 1 parameter, 2 given in %s on line 20
NULL
-Warning: unserialize() expects at most 2 parameters, 3 given in %s on line 21
+Warning: unserialize() expects exactly 1 parameter, 2 given in %s on line 21
bool(false)
Done
diff --git a/ext/standard/tests/serialize/unserialize_consumed.phpt b/ext/standard/tests/serialize/unserialize_consumed.phpt
deleted file mode 100644
index 6cc11e273..000000000
--- a/ext/standard/tests/serialize/unserialize_consumed.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Unserialization of partial strings
---FILE--
-<?php
-$data = [123,4.56,true];
-$ser = serialize($data);
-$serlen = strlen($ser);
-
-$unser = unserialize($ser, $consumed);
-echo "Consume full string: ";
-var_dump($serlen == $consumed);
-echo "Return original data: ";
-var_dump($unser === $data);
-
-$ser .= "junk\x01data";
-$unser = unserialize($ser, $consumed);
-echo "Consume full string(junk): ";
-var_dump($serlen == $consumed);
-echo "Return original data(junk): ";
-var_dump($unser === $data);
-
---EXPECT--
-Consume full string: bool(true)
-Return original data: bool(true)
-Consume full string(junk): bool(true)
-Return original data(junk): bool(true)
-
diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re
index ecacb76f9..70ee06eee 100644
--- a/ext/standard/url_scanner_ex.re
+++ b/ext/standard/url_scanner_ex.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/standard/var.c b/ext/standard/var.c
index 930edd687..457f31db3 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -943,7 +943,7 @@ PHP_FUNCTION(serialize)
}
/* }}} */
-/* {{{ proto mixed unserialize(string variable_representation[, int &consumed])
+/* {{{ proto mixed unserialize(string variable_representation)
Takes a string representation of variable and recreates it */
PHP_FUNCTION(unserialize)
{
@@ -951,9 +951,8 @@ PHP_FUNCTION(unserialize)
int buf_len;
const unsigned char *p;
php_unserialize_data_t var_hash;
- zval *consumed = NULL;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &buf, &buf_len, &consumed) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &buf, &buf_len) == FAILURE) {
RETURN_FALSE;
}
@@ -972,11 +971,6 @@ PHP_FUNCTION(unserialize)
RETURN_FALSE;
}
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
-
- if (consumed) {
- zval_dtor(consumed);
- ZVAL_LONG(consumed, ((char*)p) - buf);
- }
}
/* }}} */
diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c
index eb1a90d1d..d7cc85367 100644
--- a/ext/standard/var_unserializer.c
+++ b/ext/standard/var_unserializer.c
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re
index b3f5d29ca..3a1b91095 100644
--- a/ext/standard/var_unserializer.re
+++ b/ext/standard/var_unserializer.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/ext/tokenizer/tests/bug67395.phpt b/ext/tokenizer/tests/bug67395.phpt
new file mode 100644
index 000000000..c9b7f3012
--- /dev/null
+++ b/ext/tokenizer/tests/bug67395.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Bug 67395: token_name() does not return name for T_POW and T_POW_EQUAL token
+--FILE--
+<?php
+
+$powToken = token_get_all('<?php **')[1][0];
+var_dump(token_name($powToken));
+
+$powEqualToken = token_get_all('<?php **=')[1][0];
+var_dump(token_name($powEqualToken));
+
+?>
+--EXPECT--
+string(5) "T_POW"
+string(11) "T_POW_EQUAL"
diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c
index dc48f040f..beb9ea8e5 100644
--- a/ext/tokenizer/tokenizer_data.c
+++ b/ext/tokenizer/tokenizer_data.c
@@ -39,6 +39,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT);
@@ -70,6 +71,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT);
@@ -176,6 +178,7 @@ char *get_token_type_name(int token_type)
case T_LOGICAL_AND: return "T_LOGICAL_AND";
case T_PRINT: return "T_PRINT";
case T_YIELD: return "T_YIELD";
+ case T_POW_EQUAL: return "T_POW_EQUAL";
case T_SR_EQUAL: return "T_SR_EQUAL";
case T_SL_EQUAL: return "T_SL_EQUAL";
case T_XOR_EQUAL: return "T_XOR_EQUAL";
@@ -207,6 +210,7 @@ char *get_token_type_name(int token_type)
case T_INT_CAST: return "T_INT_CAST";
case T_DEC: return "T_DEC";
case T_INC: return "T_INC";
+ case T_POW: return "T_POW";
case T_CLONE: return "T_CLONE";
case T_NEW: return "T_NEW";
case T_EXIT: return "T_EXIT";
diff --git a/ext/zlib/tests/gzseek_basic2.phpt b/ext/zlib/tests/gzseek_basic2.phpt
index 82d305d0f..8e037af13 100644
--- a/ext/zlib/tests/gzseek_basic2.phpt
+++ b/ext/zlib/tests/gzseek_basic2.phpt
@@ -24,7 +24,7 @@ gzclose($h);
echo "\nreading the output file\n";
$h = gzopen($f, 'r');
echo gzread($h, strlen($str1))."\n";
-echo var_dump(bin2hex(gzread($h, 20)));
+var_dump(bin2hex(gzread($h, 20)));
echo gzread($h, strlen($str2))."\n";
gzclose($h);
unlink($f);
diff --git a/ext/zlib/tests/gzseek_variation1.phpt b/ext/zlib/tests/gzseek_variation1.phpt
index b260783f1..8512b743b 100644
--- a/ext/zlib/tests/gzseek_variation1.phpt
+++ b/ext/zlib/tests/gzseek_variation1.phpt
@@ -20,7 +20,7 @@ gzwrite($h, $str2);
gzclose($h);
$h = gzopen($f, 'r');
echo gzread($h, strlen($str1))."\n";
-echo var_dump(bin2hex(gzread($h, 20)));
+var_dump(bin2hex(gzread($h, 20)));
echo gzread($h, strlen($str2))."\n";
gzclose($h);
unlink($f);
diff --git a/ext/zlib/tests/gzseek_variation4.phpt b/ext/zlib/tests/gzseek_variation4.phpt
index 3d0cf67ce..529a01214 100644
--- a/ext/zlib/tests/gzseek_variation4.phpt
+++ b/ext/zlib/tests/gzseek_variation4.phpt
@@ -24,7 +24,7 @@ gzclose($h);
echo "\nreading the output file\n";
$h = gzopen($f, 'r');
echo gzread($h, strlen($str1))."\n";
-echo var_dump(bin2hex(gzread($h, 20)));
+var_dump(bin2hex(gzread($h, 20)));
echo gzread($h, strlen($str2))."\n";
gzclose($h);
unlink($f);
diff --git a/ext/zlib/tests/gzseek_variation5.phpt b/ext/zlib/tests/gzseek_variation5.phpt
index 93fb19fdb..11e491278 100644
--- a/ext/zlib/tests/gzseek_variation5.phpt
+++ b/ext/zlib/tests/gzseek_variation5.phpt
@@ -24,7 +24,7 @@ gzclose($h);
echo "\nreading the output file\n";
$h = gzopen($f, 'r');
echo gzread($h, strlen($str1))."\n";
-echo var_dump(bin2hex(gzread($h, 20)));
+var_dump(bin2hex(gzread($h, 20)));
echo gzread($h, strlen($str2))."\n";
gzclose($h);
unlink($f);
diff --git a/header b/header
index bb5c17d0c..fcbcaea9e 100644
--- a/header
+++ b/header
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/main/SAPI.c b/main/SAPI.c
index 975dd618b..653f58717 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -825,7 +825,7 @@ SAPI_API int sapi_header_op(sapi_header_op_enum op, void *arg TSRMLS_DC)
"0", sizeof("0") - 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
} else if (!STRCASECMP(header_line, "Location")) {
if ((SG(sapi_headers).http_response_code < 300 ||
- SG(sapi_headers).http_response_code > 307) &&
+ SG(sapi_headers).http_response_code > 399) &&
SG(sapi_headers).http_response_code != 201) {
/* Return a Found Redirect if one is not already specified */
if (http_response_code) { /* user specified redirect code */
diff --git a/main/php_config.h.in b/main/php_config.h.in
index 5be595e63..69d255609 100644
--- a/main/php_config.h.in
+++ b/main/php_config.h.in
@@ -365,6 +365,9 @@
/* Whether you use GNU Pth */
#undef GNUPTH
+/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
+#undef GWINSZ_IN_SYS_IOCTL
+
/* Whether 3 arg set_rebind_proc() */
#undef HAVE_3ARG_SETREBINDPROC
diff --git a/main/php_version.h b/main/php_version.h
index 9f5f55ec9..65600674c 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -3,6 +3,6 @@
#define PHP_MAJOR_VERSION 5
#define PHP_MINOR_VERSION 6
#define PHP_RELEASE_VERSION 0
-#define PHP_EXTRA_VERSION "beta4"
-#define PHP_VERSION "5.6.0beta4"
+#define PHP_EXTRA_VERSION "RC1"
+#define PHP_VERSION "5.6.0RC1"
#define PHP_VERSION_ID 50600
diff --git a/sapi/cli/php.1.in b/sapi/cli/php.1.in
index 8672b3ba3..4d536df53 100644
--- a/sapi/cli/php.1.in
+++ b/sapi/cli/php.1.in
@@ -1,4 +1,4 @@
-.TH PHP 1 "2013" "The PHP Group" "Scripting Language"
+.TH PHP 1 "2014" "The PHP Group" "Scripting Language"
.SH NAME
php \- PHP Command Line Interface 'CLI'
.P
@@ -454,7 +454,7 @@ contributors all around the world.
.SH VERSION INFORMATION
This manpage describes \fBphp\fP, version @PHP_VERSION@.
.SH COPYRIGHT
-Copyright \(co 1997\-2013 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/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 5c528a8d9..64cca0eb6 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -223,6 +223,7 @@ static php_cli_server_http_response_status_code_pair status_map[] = {
{ 304, "Not Modified" },
{ 305, "Use Proxy" },
{ 307, "Temporary Redirect" },
+ { 308, "Permanent Redirect" },
{ 400, "Bad Request" },
{ 401, "Unauthorized" },
{ 402, "Payment Required" },
@@ -241,6 +242,7 @@ static php_cli_server_http_response_status_code_pair status_map[] = {
{ 415, "Unsupported Media Type" },
{ 416, "Requested Range Not Satisfiable" },
{ 417, "Expectation Failed" },
+ { 426, "Upgrade Required" },
{ 428, "Precondition Required" },
{ 429, "Too Many Requests" },
{ 431, "Request Header Fields Too Large" },
@@ -894,13 +896,11 @@ static void php_cli_server_poller_remove(php_cli_server_poller *poller, int mode
#endif
} /* }}} */
-static int php_cli_server_poller_poll(php_cli_server_poller *poller, const struct timeval *tv) /* {{{ */
+static int php_cli_server_poller_poll(php_cli_server_poller *poller, struct timeval *tv) /* {{{ */
{
- struct timeval t = *tv;
-
memmove(&poller->active.rfds, &poller->rfds, sizeof(poller->rfds));
memmove(&poller->active.wfds, &poller->wfds, sizeof(poller->wfds));
- return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds, NULL, &t);
+ return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds, NULL, tv);
} /* }}} */
static int php_cli_server_poller_iter_on_active(php_cli_server_poller *poller, void *opaque, int(*callback)(void *, int fd, int events)) /* {{{ */
@@ -2477,7 +2477,7 @@ static int php_cli_server_do_event_loop(php_cli_server *server TSRMLS_DC) /* {{{
{
int retval = SUCCESS;
while (server->is_running) {
- static const struct timeval tv = { 1, 0 };
+ struct timeval tv = { 1, 0 };
int n = php_cli_server_poller_poll(&server->poller, &tv);
if (n > 0) {
php_cli_server_do_event_for_each_fd(server,
diff --git a/sapi/cli/tests/bug67429.phpt b/sapi/cli/tests/bug67429.phpt
new file mode 100644
index 000000000..856946b29
--- /dev/null
+++ b/sapi/cli/tests/bug67429.phpt
@@ -0,0 +1,49 @@
+--TEST--
+FR #67429 (CLI server is missing some new HTTP response codes)
+--SKIPIF--
+<?php
+include "skipif.inc";
+?>
+--FILE--
+<?php
+include "php_cli_server.inc";
+
+foreach ([308, 426] as $code) {
+ php_cli_server_start(<<<PHP
+http_response_code($code);
+PHP
+ );
+
+ list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
+ $port = intval($port)?:80;
+
+ $fp = fsockopen($host, $port, $errno, $errstr, 0.5);
+ if (!$fp) {
+ die("connect failed");
+ }
+
+ if(fwrite($fp, <<<HEADER
+GET / HTTP/1.1
+
+
+HEADER
+ )) {
+ while (!feof($fp)) {
+ echo fgets($fp);
+ }
+ }
+
+ fclose($fp);
+}
+?>
+--EXPECTF--
+HTTP/1.1 308 Permanent Redirect
+Connection: close
+X-Powered-By: %s
+Content-type: text/html; charset=UTF-8
+
+HTTP/1.1 426 Upgrade Required
+Connection: close
+X-Powered-By: %s
+Content-type: text/html; charset=UTF-8
+
diff --git a/sapi/phpdbg/.gitignore b/sapi/phpdbg/.gitignore
new file mode 100644
index 000000000..51165dab2
--- /dev/null
+++ b/sapi/phpdbg/.gitignore
@@ -0,0 +1,6 @@
+.libs/
+phpdbg
+*.lo
+*.o
+*.output
+build
diff --git a/sapi/phpdbg/.travis.yml b/sapi/phpdbg/.travis.yml
index 353402858..d5b492e7c 100644
--- a/sapi/phpdbg/.travis.yml
+++ b/sapi/phpdbg/.travis.yml
@@ -1,3 +1,12 @@
language: c
-script: ./travis/ci.sh
+env:
+- PHP="PHP-5.4"
+- PHP="PHP-5.5"
+- PHP="PHP-5.6"
+- PHP="master"
+
+before_script: ./travis/ci.sh
+
+script:
+- ./php-src/sapi/cli/php php-src/sapi/phpdbg/tests/run-tests.php -diff2stdout --phpdbg php-src/sapi/phpdbg/phpdbg
diff --git a/sapi/phpdbg/Makefile.frag b/sapi/phpdbg/Makefile.frag
index 45768de2e..d787b0fb1 100644
--- a/sapi/phpdbg/Makefile.frag
+++ b/sapi/phpdbg/Makefile.frag
@@ -8,14 +8,17 @@ $(BUILD_SHARED): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_PHPDBG_OBJS)
$(BUILD_BINARY): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_PHPDBG_OBJS)
$(BUILD_PHPDBG)
-$(builddir)/sapi/phpdbg/phpdbg_lexer.lo: $(srcdir)/sapi/phpdbg/phpdbg_parser.h
+%.c: %.y
+%.c: %.l
-$(srcdir)/sapi/phpdbg/phpdbg_lexer.c: $(srcdir)/sapi/phpdbg/phpdbg_lexer.l
- @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date -cbdFo sapi/phpdbg/phpdbg_lexer.c sapi/phpdbg/phpdbg_lexer.l)
+$(builddir)/phpdbg_lexer.lo: $(srcdir)/phpdbg_parser.h
-$(srcdir)/sapi/phpdbg/phpdbg_parser.h: $(srcdir)/sapi/phpdbg/phpdbg_parser.c
-$(srcdir)/sapi/phpdbg/phpdbg_parser.c: $(srcdir)/sapi/phpdbg/phpdbg_parser.y
- @$(YACC) -p phpdbg_ -v -d $(srcdir)/sapi/phpdbg/phpdbg_parser.y -o $@
+$(srcdir)/phpdbg_lexer.c: $(srcdir)/phpdbg_lexer.l
+ @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date -cbdFo $(srcdir)/phpdbg_lexer.c $(srcdir)/phpdbg_lexer.l)
+
+$(srcdir)/phpdbg_parser.h: $(srcdir)/phpdbg_parser.c
+$(srcdir)/phpdbg_parser.c: $(srcdir)/phpdbg_parser.y
+ @$(YACC) -p phpdbg_ -v -d $(srcdir)/phpdbg_parser.y -o $@
install-phpdbg: $(BUILD_BINARY)
@echo "Installing phpdbg binary: $(INSTALL_ROOT)$(bindir)/"
diff --git a/sapi/phpdbg/config.m4 b/sapi/phpdbg/config.m4
index a1b2f9faa..1a6640eac 100644
--- a/sapi/phpdbg/config.m4
+++ b/sapi/phpdbg/config.m4
@@ -9,6 +9,7 @@ PHP_ARG_ENABLE(phpdbg-debug, for phpdbg debug build,
[ --enable-phpdbg-debug Build phpdbg in debug mode], no, no)
if test "$PHP_PHPDBG" != "no"; then
+ AC_HEADER_TIOCGWINSZ
AC_DEFINE(HAVE_PHPDBG, 1, [ ])
if test "$PHP_PHPDBG_DEBUG" != "no"; then
@@ -28,7 +29,7 @@ if test "$PHP_PHPDBG" != "no"; then
PHP_SUBST(PHP_PHPDBG_FILES)
PHP_SUBST(PHPDBG_EXTRA_LIBS)
- PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/phpdbg/Makefile.frag])
+ PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/phpdbg/Makefile.frag], [$abs_srcdir/sapi/phpdbg], [$abs_builddir/sapi/phpdbg])
PHP_SELECT_SAPI(phpdbg, program, $PHP_PHPDBG_FILES, $PHP_PHPDBG_CFLAGS, [$(SAPI_PHPDBG_PATH)])
BUILD_BINARY="sapi/phpdbg/phpdbg"
diff --git a/sapi/phpdbg/phpdbg.h b/sapi/phpdbg/phpdbg.h
index be009e40d..12350d542 100644
--- a/sapi/phpdbg/phpdbg.h
+++ b/sapi/phpdbg/phpdbg.h
@@ -69,11 +69,14 @@
# include <readline/history.h>
#endif
+#include "phpdbg_lexer.h"
#include "phpdbg_cmd.h"
#include "phpdbg_utils.h"
#include "phpdbg_btree.h"
#include "phpdbg_watch.h"
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC);
+
#ifdef ZTS
# define PHPDBG_G(v) TSRMG(phpdbg_globals_id, zend_phpdbg_globals *, v)
#else
@@ -176,10 +179,12 @@ ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
phpdbg_frame_t frame; /* frame */
zend_uint last_line; /* last executed line */
+ phpdbg_lexer_data lexer; /* lexer data */
+ phpdbg_param_t *parser_stack; /* param stack during lexer / parser phase */
+
#ifndef _WIN32
struct sigaction old_sigsegv_signal; /* segv signal handler */
#endif
-
phpdbg_btree watchpoint_tree; /* tree with watchpoints */
phpdbg_btree watch_HashTables; /* tree with original dtors of watchpoints */
HashTable watchpoints; /* watchpoints */
diff --git a/sapi/phpdbg/phpdbg_btree.c b/sapi/phpdbg/phpdbg_btree.c
index 8fc2561e0..491445399 100644
--- a/sapi/phpdbg/phpdbg_btree.c
+++ b/sapi/phpdbg/phpdbg_btree.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/sapi/phpdbg/phpdbg_btree.h b/sapi/phpdbg/phpdbg_btree.h
index 5fb217db3..af2a6ac31 100644
--- a/sapi/phpdbg/phpdbg_btree.h
+++ b/sapi/phpdbg/phpdbg_btree.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2013 The PHP Group |
+ | Copyright (c) 1997-2014 The PHP Group |
+----------------------------------------------------------------------+
| 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/sapi/phpdbg/phpdbg_lexer.c b/sapi/phpdbg/phpdbg_lexer.c
index 94a4ba976..420dcac04 100644
--- a/sapi/phpdbg/phpdbg_lexer.c
+++ b/sapi/phpdbg/phpdbg_lexer.c
@@ -1,2271 +1,996 @@
-#line 2 "sapi/phpdbg/phpdbg_lexer.c"
-
-#line 4 "sapi/phpdbg/phpdbg_lexer.c"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
- are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-/* Enter a start condition. This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yyg->yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state. The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yyg->yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
- #define YY_LESS_LINENO(n)
-
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- *yy_cp = yyg->yy_hold_char; \
- YY_RESTORE_YY_MORE_OFFSET \
- yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
- while ( 0 )
-
-#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- yy_size_t yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
- * shouldn't try reading from the input source any more. We might
- * still have a bunch of tokens to match, though, because of
- * possible backing-up.
- *
- * When we actually see the EOF, we change the status to "new"
- * (via yyrestart()), so that the user can continue scanning by
- * just pointing yyin at a new input file.
- */
-#define YY_BUFFER_EOF_PENDING 2
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
- ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
- : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
-
-void yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypop_buffer_state (yyscan_t yyscanner );
-
-static void yyensure_buffer_stack (yyscan_t yyscanner );
-static void yy_load_buffer_state (yyscan_t yyscanner );
-static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
-
-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
-
-void *yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yyfree (void * ,yyscan_t yyscanner );
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
- { \
- if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (yyscanner); \
- YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
- }
-
-#define yy_set_bol(at_bol) \
- { \
- if ( ! YY_CURRENT_BUFFER ){\
- yyensure_buffer_stack (yyscanner); \
- YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
- }
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* Begin user sect3 */
-
-#define yywrap(yyscanner) 1
-#define YY_SKIP_YYWRAP
-
-typedef unsigned char YY_CHAR;
-
-typedef int yy_state_type;
-
-#define yytext_ptr yytext_r
-
-static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
-static int yy_get_next_buffer (yyscan_t yyscanner );
-static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
- yyg->yytext_ptr = yy_bp; \
- yyleng = (size_t) (yy_cp - yy_bp); \
- yyg->yy_hold_char = *yy_cp; \
- *yy_cp = '\0'; \
- yyg->yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 18
-#define YY_END_OF_BUFFER 19
-/* This struct is not used in this scanner,
- but its presence is necessary. */
-struct yy_trans_info
- {
- flex_int32_t yy_verify;
- flex_int32_t yy_nxt;
- };
-static yyconst flex_int16_t yy_acclist[229] =
- { 0,
- 19, 4, 15, 18, 4, 17, 18, 17, 18, 4,
- 7, 18, 4, 12, 15, 18, 4, 12, 15, 18,
- 4, 9, 18, 4, 15, 18, 4, 15, 18, 4,
- 15, 18, 4, 15, 18, 4, 15, 18, 4, 15,
- 18, 3, 4, 15, 18, 4, 15, 18, 4, 15,
- 18, 4, 15, 18, 4, 15, 18, 16, 18, 16,
- 17, 18, 15, 18, 7, 18, 12, 15, 18, 12,
- 15, 18, 9, 18, 15, 18, 15, 18, 15, 18,
- 15, 18, 15, 18, 15, 18, 15, 18, 15, 18,
- 15, 18, 15, 18, 4, 15, 4, 4, 4, 17,
-
- 17, 4, 12, 15, 4, 15, 4, 8, 4, 15,
- 4, 15, 4, 15, 1, 4, 15, 4, 15, 4,
- 11, 15, 4, 15, 4, 10, 15, 4, 15, 2,
- 4, 15, 4, 15, 4, 15, 4, 15, 16, 16,
- 17, 15, 12, 15, 15, 8, 15, 15, 15, 15,
- 5, 15, 11, 15, 15, 10, 15, 15, 15, 15,
- 4, 4, 13, 15, 4, 15, 4, 15, 4, 15,
- 4, 15, 3, 4, 15, 4, 15, 4, 15, 13,
- 15, 15, 15, 15, 15, 15, 15, 4, 6, 4,
- 15, 4, 15, 4, 15, 4, 15, 4, 15, 6,
-
- 15, 15, 15, 15, 15, 4, 15, 4, 15, 4,
- 15, 15, 15, 15, 4, 14, 15, 4, 15, 4,
- 15, 14, 15, 15, 15, 4, 15, 15
- } ;
-
-static yyconst flex_int16_t yy_accept[127] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 2, 5, 8,
- 10, 13, 17, 21, 24, 27, 30, 33, 36, 39,
- 42, 46, 49, 52, 55, 58, 60, 63, 65, 67,
- 70, 73, 75, 77, 79, 81, 83, 85, 87, 89,
- 91, 93, 95, 97, 98, 99, 101, 102, 105, 107,
- 109, 111, 113, 115, 118, 120, 123, 125, 128, 130,
- 133, 135, 137, 139, 140, 142, 143, 143, 145, 146,
- 147, 148, 149, 150, 151, 153, 155, 156, 158, 159,
- 160, 161, 162, 165, 167, 169, 171, 173, 176, 178,
- 180, 180, 182, 183, 184, 185, 186, 187, 188, 190,
-
- 192, 194, 196, 198, 200, 201, 202, 203, 204, 205,
- 206, 208, 210, 212, 213, 214, 215, 218, 220, 222,
- 224, 225, 226, 228, 229, 229
- } ;
-
-static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 4, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 6, 7, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 9, 1, 1,
- 1, 1, 1, 1, 10, 10, 10, 11, 12, 10,
- 13, 13, 13, 13, 13, 13, 13, 14, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 15,
- 1, 1, 1, 1, 16, 1, 17, 18, 10, 19,
-
- 20, 21, 13, 22, 23, 13, 13, 24, 13, 25,
- 26, 13, 13, 27, 28, 29, 30, 31, 13, 32,
- 33, 34, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-static yyconst flex_int32_t yy_meta[35] =
- { 0,
- 1, 2, 3, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1
- } ;
-
-static yyconst flex_int16_t yy_base[133] =
- { 0,
- 0, 0, 33, 35, 38, 0, 357, 71, 74, 76,
- 352, 79, 87, 90, 96, 100, 108, 109, 112, 120,
- 123, 126, 138, 142, 148, 0, 104, 316, 455, 151,
- 162, 313, 73, 92, 65, 146, 122, 94, 152, 127,
- 155, 163, 172, 318, 131, 176, 182, 288, 190, 314,
- 178, 184, 187, 211, 212, 215, 221, 224, 225, 235,
- 236, 239, 245, 0, 203, 260, 259, 248, 264, 455,
- 237, 190, 243, 253, 255, 222, 259, 194, 249, 250,
- 277, 229, 0, 285, 286, 289, 295, 304, 307, 310,
- 184, 0, 252, 283, 292, 296, 306, 309, 163, 328,
-
- 329, 332, 341, 344, 455, 326, 331, 330, 342, 343,
- 362, 370, 371, 394, 368, 356, 410, 384, 404, 426,
- 376, 378, 420, 411, 455, 442, 445, 447, 450, 148,
- 452, 96
- } ;
-
-static yyconst flex_int16_t yy_def[133] =
- { 0,
- 125, 1, 126, 126, 125, 5, 125, 127, 128, 125,
- 128, 127, 127, 128, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 127, 127, 129, 129, 130, 125, 130,
- 130, 125, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 127, 128, 128, 128, 125, 13, 13, 128,
- 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 129, 129, 130, 125, 130, 130, 125,
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 128, 49, 127, 127, 127, 127, 127, 127, 127,
- 125, 69, 130, 130, 130, 130, 130, 130, 128, 127,
-
- 127, 127, 127, 127, 125, 130, 130, 130, 130, 130,
- 131, 127, 127, 132, 130, 130, 131, 127, 127, 132,
- 130, 130, 127, 130, 0, 125, 125, 125, 125, 125,
- 125, 125
- } ;
-
-static yyconst flex_int16_t yy_nxt[490] =
- { 0,
- 8, 9, 10, 11, 12, 8, 13, 12, 14, 8,
- 8, 8, 8, 8, 15, 8, 8, 8, 16, 17,
- 18, 8, 8, 8, 19, 20, 21, 22, 23, 8,
- 8, 8, 24, 25, 27, 10, 27, 10, 28, 10,
- 10, 29, 30, 28, 31, 30, 32, 28, 28, 28,
- 28, 28, 33, 28, 28, 28, 34, 35, 36, 28,
- 37, 28, 38, 39, 28, 28, 40, 28, 28, 28,
- 41, 42, 44, 67, 44, 46, 47, 47, 47, 45,
- 44, 67, 44, 48, 71, 48, 48, 45, 44, 73,
- 44, 48, 125, 48, 48, 45, 120, 44, 50, 44,
-
- 67, 44, 67, 44, 45, 65, 47, 51, 45, 44,
- 44, 44, 44, 44, 72, 44, 45, 45, 49, 76,
- 45, 44, 52, 44, 44, 55, 44, 44, 45, 44,
- 67, 45, 53, 125, 45, 67, 82, 56, 54, 44,
- 57, 44, 75, 44, 58, 44, 45, 60, 66, 44,
- 45, 44, 59, 79, 67, 68, 45, 68, 68, 67,
- 67, 62, 74, 67, 61, 125, 68, 63, 68, 68,
- 67, 67, 77, 44, 80, 44, 78, 46, 47, 44,
- 45, 44, 81, 47, 47, 44, 45, 44, 44, 105,
- 44, 84, 45, 69, 43, 45, 83, 83, 67, 83,
-
- 83, 83, 67, 86, 65, 47, 83, 83, 83, 83,
- 83, 85, 44, 44, 44, 44, 44, 94, 44, 45,
- 45, 43, 44, 45, 44, 44, 44, 44, 44, 45,
- 67, 125, 45, 45, 99, 87, 44, 44, 44, 44,
- 44, 56, 44, 45, 45, 67, 44, 45, 44, 88,
- 93, 67, 68, 45, 68, 68, 67, 67, 67, 95,
- 67, 67, 106, 67, 91, 89, 58, 67, 67, 90,
- 92, 92, 67, 92, 92, 92, 96, 78, 97, 76,
- 92, 92, 92, 92, 92, 67, 44, 44, 44, 44,
- 44, 67, 44, 45, 45, 100, 44, 45, 44, 107,
-
- 67, 98, 101, 45, 67, 44, 102, 44, 44, 108,
- 44, 44, 45, 44, 67, 45, 125, 67, 45, 43,
- 125, 70, 103, 109, 67, 78, 58, 110, 104, 44,
- 44, 44, 44, 44, 67, 44, 45, 45, 67, 67,
- 45, 114, 44, 111, 44, 44, 112, 44, 115, 45,
- 67, 67, 45, 116, 125, 113, 125, 125, 114, 111,
- 56, 76, 43, 44, 67, 44, 43, 43, 43, 43,
- 45, 44, 44, 44, 44, 122, 67, 43, 45, 45,
- 125, 125, 125, 125, 67, 44, 67, 44, 125, 125,
- 119, 121, 45, 118, 66, 124, 78, 125, 66, 66,
-
- 66, 66, 67, 123, 125, 44, 125, 44, 125, 66,
- 43, 44, 45, 44, 43, 43, 43, 43, 45, 67,
- 125, 44, 58, 44, 125, 43, 66, 125, 45, 76,
- 66, 66, 66, 66, 67, 125, 125, 125, 56, 125,
- 125, 66, 26, 26, 26, 43, 43, 44, 44, 44,
- 64, 64, 117, 117, 7, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125
- } ;
-
-static yyconst flex_int16_t yy_chk[490] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 3, 4, 4, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 8, 35, 8, 9, 9, 10, 10, 8,
- 12, 33, 12, 12, 33, 12, 12, 12, 13, 35,
- 13, 13, 14, 13, 13, 13, 132, 15, 14, 15,
-
- 34, 16, 38, 16, 15, 27, 27, 15, 16, 17,
- 18, 17, 18, 19, 34, 19, 17, 18, 13, 38,
- 19, 20, 16, 20, 21, 18, 21, 22, 20, 22,
- 37, 21, 17, 45, 22, 40, 45, 19, 17, 23,
- 20, 23, 37, 24, 20, 24, 23, 22, 130, 25,
- 24, 25, 21, 40, 36, 30, 25, 30, 30, 30,
- 39, 24, 36, 41, 23, 99, 31, 25, 31, 31,
- 31, 42, 39, 43, 41, 43, 39, 46, 46, 51,
- 43, 51, 42, 47, 47, 52, 51, 52, 53, 91,
- 53, 51, 52, 31, 49, 53, 49, 49, 72, 49,
-
- 49, 49, 78, 53, 65, 65, 49, 49, 49, 49,
- 49, 52, 54, 55, 54, 55, 56, 72, 56, 54,
- 55, 49, 57, 56, 57, 58, 59, 58, 59, 57,
- 76, 82, 58, 59, 82, 55, 60, 61, 60, 61,
- 62, 57, 62, 60, 61, 71, 63, 62, 63, 59,
- 71, 73, 68, 63, 68, 68, 68, 79, 80, 73,
- 93, 74, 93, 75, 67, 61, 62, 77, 66, 63,
- 69, 69, 69, 69, 69, 69, 74, 80, 79, 77,
- 69, 69, 69, 69, 69, 81, 84, 85, 84, 85,
- 86, 94, 86, 84, 85, 84, 87, 86, 87, 94,
-
- 95, 81, 85, 87, 96, 88, 86, 88, 89, 95,
- 89, 90, 88, 90, 97, 89, 50, 98, 90, 48,
- 44, 32, 87, 96, 28, 97, 89, 98, 90, 100,
- 101, 100, 101, 102, 106, 102, 100, 101, 108, 107,
- 102, 106, 103, 100, 103, 104, 101, 104, 107, 103,
- 109, 110, 104, 108, 11, 102, 7, 0, 110, 104,
- 103, 109, 111, 111, 116, 111, 111, 111, 111, 111,
- 111, 112, 113, 112, 113, 116, 115, 111, 112, 113,
- 0, 0, 0, 0, 121, 118, 122, 118, 0, 0,
- 113, 115, 118, 112, 114, 121, 122, 0, 114, 114,
-
- 114, 114, 114, 118, 0, 119, 0, 119, 0, 114,
- 117, 117, 119, 117, 117, 117, 117, 117, 117, 124,
- 0, 123, 119, 123, 0, 117, 120, 0, 123, 124,
- 120, 120, 120, 120, 120, 0, 0, 0, 123, 0,
- 0, 120, 126, 126, 126, 127, 127, 128, 128, 128,
- 129, 129, 131, 131, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125
- } ;
-
-#define REJECT \
-{ \
-*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \
-yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \
-++yyg->yy_lp; \
-goto find_rule; \
-}
-
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-#line 1 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-#line 2 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
+/* Generated by re2c 0.13.5 */
+#line 1 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
/*
* phpdbg_lexer.l
*/
#include "phpdbg.h"
#include "phpdbg_cmd.h"
-#define YYSTYPE phpdbg_param_t
#include "phpdbg_parser.h"
-
+#define LEX(v) (PHPDBG_G(lexer).v)
-#define YY_NO_UNISTD_H 1
-#line 629 "sapi/phpdbg/phpdbg_lexer.c"
+#define YYCTYPE unsigned char
+#define YYSETCONDITION(x) LEX(state) = x;
+#define YYGETCONDITION() LEX(state)
+#define YYCURSOR LEX(cursor)
+#define YYMARKER LEX(marker)
+#define yyleng LEX(len)
+#define yytext ((char*) LEX(text))
+#undef YYDEBUG
+#define YYDEBUG(a, b)
+#define YYFILL(n)
-#define INITIAL 0
+#define NORMAL 0
#define RAW 1
-#define NORMAL 2
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* Holds the entire state of the reentrant scanner. */
-struct yyguts_t
- {
-
- /* User-defined. Not touched by flex. */
- YY_EXTRA_TYPE yyextra_r;
+#define INITIAL 2
- /* The rest are the same as the globals declared in the non-reentrant scanner. */
- FILE *yyin_r, *yyout_r;
- size_t yy_buffer_stack_top; /**< index of top of stack. */
- size_t yy_buffer_stack_max; /**< capacity of stack. */
- YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
- char yy_hold_char;
- yy_size_t yy_n_chars;
- yy_size_t yyleng_r;
- char *yy_c_buf_p;
- int yy_init;
- int yy_start;
- int yy_did_buffer_switch_on_eof;
- int yy_start_stack_ptr;
- int yy_start_stack_depth;
- int *yy_start_stack;
- yy_state_type yy_last_accepting_state;
- char* yy_last_accepting_cpos;
+ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
- int yylineno_r;
- int yy_flex_debug_r;
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ PHPDBG_G(parser_stack) = stack;
- yy_state_type *yy_state_buf;
- yy_state_type *yy_state_ptr;
- char *yy_full_match;
- int yy_lp;
+ YYSETCONDITION(INITIAL);
- /* These are only needed for trailing context rules,
- * but there's no conditional variable for that yet. */
- int yy_looking_for_trail_begin;
- int yy_full_lp;
- int *yy_full_state;
-
- char *yytext_r;
- int yy_more_flag;
- int yy_more_len;
-
- YYSTYPE * yylval_r;
-
- }; /* end struct yyguts_t */
-
-static int yy_init_globals (yyscan_t yyscanner );
-
- /* This must go here because YYSTYPE and YYLTYPE are included
- * from bison output in section 1.*/
- # define yylval yyg->yylval_r
-
-int yylex_init (yyscan_t* scanner);
-
-int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (yyscan_t yyscanner );
-
-int yyget_debug (yyscan_t yyscanner );
-
-void yyset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yyget_in (yyscan_t yyscanner );
-
-void yyset_in (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yyget_out (yyscan_t yyscanner );
-
-void yyset_out (FILE * out_str ,yyscan_t yyscanner );
-
-yy_size_t yyget_leng (yyscan_t yyscanner );
-
-char *yyget_text (yyscan_t yyscanner );
-
-int yyget_lineno (yyscan_t yyscanner );
-
-void yyset_lineno (int line_number ,yyscan_t yyscanner );
-
-int yyget_column (yyscan_t yyscanner );
-
-void yyset_column (int column_no ,yyscan_t yyscanner );
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner );
-
-void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (yyscan_t yyscanner );
-#else
-extern int yywrap (yyscan_t yyscanner );
-#endif
-#endif
-
- static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (yyscan_t yyscanner );
-#else
-static int input (yyscan_t yyscanner );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
-#endif
-
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
- { \
- int c = '*'; \
- size_t n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(yyin); \
- } \
- }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex \
- (YYSTYPE * yylval_param ,yyscan_t yyscanner);
-
-#define YY_DECL int yylex \
- (YYSTYPE * yylval_param , yyscan_t yyscanner)
-#endif /* !YY_DECL */
+ LEX(text) = YYCURSOR = (unsigned char *) input;
+ LEX(len) = strlen(input);
+}
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
+int phpdbg_lex (phpdbg_param_t* yylval) {
+ TSRMLS_FETCH(); /* Slow, but this is not a major problem here. TODO: Use TSRMLS_DC */
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
+restart:
+ LEX(text) = YYCURSOR;
-#define YY_RULE_SETUP \
- YY_USER_ACTION
-/** The main scanner function which does all the work.
- */
-YY_DECL
+#line 48 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-#line 44 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-#line 882 "sapi/phpdbg/phpdbg_lexer.c"
-
- yylval = yylval_param;
-
- if ( !yyg->yy_init )
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ if (YYGETCONDITION() < 1) {
+ goto yyc_NORMAL;
+ } else {
+ if (YYGETCONDITION() < 2) {
+ goto yyc_RAW;
+ } else {
+ goto yyc_INITIAL;
+ }
+ }
+/* *********************************** */
+yyc_INITIAL:
+ {
+ static const unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 0, 0, 128, 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(0, *YYCURSOR);
+ YYFILL(3);
+ yych = *YYCURSOR;
+ if (yych <= 0x1F) {
+ if (yych <= '\t') {
+ if (yych <= 0x00) goto yy6;
+ if (yych <= 0x08) goto yy11;
+ } else {
+ if (yych <= '\n') goto yy4;
+ if (yych != '\r') goto yy11;
+ }
+ } else {
+ if (yych <= 'e') {
+ if (yych <= ' ') goto yy2;
+ if (yych <= 'd') goto yy11;
+ goto yy7;
+ } else {
+ if (yych <= 'q') goto yy11;
+ if (yych <= 'r') goto yy9;
+ if (yych <= 's') goto yy8;
+ goto yy11;
+ }
+ }
+yy2:
+ YYDEBUG(2, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy19;
+ }
+yy3:
+ YYDEBUG(3, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 161 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yyg->yy_init = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- /* Create the reject buffer large enough to save one state per allowed character. */
- if ( ! yyg->yy_state_buf )
- yyg->yy_state_buf = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ,yyscanner);
- if ( ! yyg->yy_state_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
-
- if ( ! yyg->yy_start )
- yyg->yy_start = 1; /* first start state */
+ YYSETCONDITION(NORMAL);
- if ( ! yyin )
- yyin = stdin;
-
- if ( ! yyout )
- yyout = stdout;
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack (yyscanner);
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ YYCURSOR = LEX(text);
+ goto restart;
+}
+#line 138 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy4:
+ YYDEBUG(4, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy19;
}
-
- yy_load_buffer_state(yyscanner );
+ YYDEBUG(5, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return 0;
+}
+#line 151 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy6:
+ YYDEBUG(6, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy3;
+yy7:
+ YYDEBUG(7, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'v') goto yy17;
+ goto yy3;
+yy8:
+ YYDEBUG(8, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'h') goto yy15;
+ goto yy3;
+yy9:
+ YYDEBUG(9, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'u') goto yy12;
+yy10:
+ YYDEBUG(10, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 155 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_RUN;
+}
+#line 180 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy11:
+ YYDEBUG(11, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy3;
+yy12:
+ YYDEBUG(12, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'n') goto yy14;
+ YYDEBUG(13, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ goto yy10;
+yy14:
+ YYDEBUG(14, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy10;
+yy15:
+ YYDEBUG(15, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(16, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 150 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_SHELL;
+}
+#line 207 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy17:
+ YYDEBUG(17, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(18, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 145 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_EVAL;
+}
+#line 219 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy19:
+ YYDEBUG(19, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(20, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy19;
}
-
- while ( 1 ) /* loops until end-of-file is reached */
+ YYDEBUG(21, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yy_cp = yyg->yy_c_buf_p;
+ /* ignore whitespace */
- /* Support of yytext. */
- *yy_cp = yyg->yy_hold_char;
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
- yy_current_state = yyg->yy_start;
-
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
-yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ goto restart;
+}
+#line 237 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+ }
+/* *********************************** */
+yyc_NORMAL:
+ {
+ static const unsigned char yybm[] = {
+ 0, 16, 16, 16, 16, 16, 16, 16,
+ 16, 8, 8, 16, 16, 8, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 8, 16, 16, 0, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 48, 16,
+ 176, 176, 176, 176, 176, 176, 176, 176,
+ 176, 176, 0, 16, 16, 16, 16, 16,
+ 16, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 16, 16, 16, 16, 16,
+ 16, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ };
+ YYDEBUG(22, *YYCURSOR);
+ YYFILL(11);
+ yych = *YYCURSOR;
+ if (yych <= ':') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy29;
+ if (yych <= 0x08) goto yy32;
+ if (yych >= '\n') goto yy27;
+ } else {
+ if (yych == '\r') goto yy24;
+ if (yych <= 0x1F) goto yy32;
+ }
+ } else {
+ if (yych <= '.') {
+ if (yych == '#') goto yy47;
+ if (yych <= '-') goto yy32;
+ goto yy34;
+ } else {
+ if (yych <= '/') goto yy32;
+ if (yych <= '0') goto yy37;
+ if (yych <= '9') goto yy34;
+ goto yy49;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
- ++yy_cp;
}
- while ( yy_current_state != 125 );
-
-yy_find_action:
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
- for ( ; ; ) /* until we find what rule we matched */
- {
- if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] )
- {
- yy_act = yy_acclist[yyg->yy_lp];
- {
- yyg->yy_full_match = yy_cp;
- break;
+ } else {
+ if (yych <= 'i') {
+ if (yych <= 'd') {
+ if (yych == 'Z') goto yy38;
+ if (yych <= 'c') goto yy32;
+ goto yy39;
+ } else {
+ if (yych <= 'e') goto yy40;
+ if (yych <= 'f') goto yy41;
+ if (yych <= 'h') goto yy32;
+ goto yy30;
+ }
+ } else {
+ if (yych <= 's') {
+ if (yych <= 'm') goto yy32;
+ if (yych <= 'n') goto yy42;
+ if (yych <= 'o') goto yy43;
+ goto yy32;
+ } else {
+ if (yych <= 'x') {
+ if (yych <= 't') goto yy44;
+ goto yy32;
+ } else {
+ if (yych <= 'y') goto yy45;
+ if (yych <= 'z') goto yy46;
+ goto yy32;
}
}
- --yy_cp;
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
}
+ }
+yy24:
+ YYDEBUG(24, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(25, *YYCURSOR);
+ if (yybm[0+yych] & 8) {
+ goto yy24;
+ }
+ YYDEBUG(26, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ /* ignore whitespace */
- YY_DO_BEFORE_ACTION;
-
-do_action: /* This label is used only to access EOF actions. */
-
- switch ( yy_act )
- { /* beginning of action switch */
-
-case 1:
-YY_RULE_SETUP
-#line 47 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_EVAL;
- }
- YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 52 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_SHELL;
- }
- YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 57 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_RUN;
- }
- YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 63 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(NORMAL);
- REJECT;
- }
- YY_BREAK
-
-
-case 5:
-YY_RULE_SETUP
-#line 70 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_IF;
- }
- YY_BREAK
-
-
-case 6:
-YY_RULE_SETUP
-#line 78 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_PROTO;
- }
- YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 84 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_POUND; }
- YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 85 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_DCOLON; }
- YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 86 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_COLON; }
- YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 88 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 1;
- return T_TRUTHY;
- }
- YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 93 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 0;
- return T_FALSY;
- }
- YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 98 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = atoi(yytext);
- return T_DIGITS;
- }
- YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 103 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, ADDR_PARAM);
- yylval->addr = strtoul(yytext, 0, 16);
- return T_ADDR;
- }
- YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 108 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, OP_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_OPCODE;
- }
- YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 114 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_ID;
- }
- YY_BREAK
-
-case 16:
-YY_RULE_SETUP
-#line 122 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
+ goto restart;
+}
+#line 348 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy27:
+ YYDEBUG(27, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 8) {
+ goto yy24;
+ }
+yy28:
+ YYDEBUG(28, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return 0;
+}
+#line 362 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy29:
+ YYDEBUG(29, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy28;
+yy30:
+ YYDEBUG(30, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'f') goto yy94;
+ goto yy33;
+yy31:
+ YYDEBUG(31, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = zend_strndup(yytext, yyleng);
yylval->len = yyleng;
- BEGIN(INITIAL);
- return T_INPUT;
-}
- YY_BREAK
-case 17:
-/* rule 17 can match eol */
-YY_RULE_SETUP
-#line 130 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ /* ignore whitespace */ }
- YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-YY_FATAL_ERROR( "flex scanner jammed" );
- YY_BREAK
-#line 1129 "sapi/phpdbg/phpdbg_lexer.c"
- case YY_STATE_EOF(INITIAL):
- case YY_STATE_EOF(RAW):
- case YY_STATE_EOF(NORMAL):
- yyterminate();
-
- case YY_END_OF_BUFFER:
+ return T_ID;
+}
+#line 383 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy32:
+ YYDEBUG(32, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+yy33:
+ YYDEBUG(33, *YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy32;
+ }
+ if (yych <= '9') goto yy31;
+ goto yy54;
+yy34:
+ YYDEBUG(34, *YYCURSOR);
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(35, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy34;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy36;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy36;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
+ }
+ }
+yy36:
+ YYDEBUG(36, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 106 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yyg->yy_hold_char;
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
- * consistency between YY_CURRENT_BUFFER and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = atoi(yytext);
+ return T_DIGITS;
+}
+#line 432 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy37:
+ YYDEBUG(37, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy34;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy36;
+ if (yych <= 0x08) goto yy33;
+ goto yy36;
+ } else {
+ if (yych == '\r') goto yy36;
+ goto yy33;
}
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
-
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++yyg->yy_c_buf_p;
- yy_current_state = yy_next_state;
- goto yy_match;
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy36;
+ if (yych <= '"') goto yy33;
+ goto yy36;
+ } else {
+ if (yych == 'x') goto yy90;
+ goto yy33;
+ }
+ }
+yy38:
+ YYDEBUG(38, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'E') goto yy87;
+ goto yy33;
+yy39:
+ YYDEBUG(39, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'i') goto yy81;
+ goto yy33;
+yy40:
+ YYDEBUG(40, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'n') goto yy76;
+ goto yy33;
+yy41:
+ YYDEBUG(41, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'a') goto yy73;
+ goto yy33;
+yy42:
+ YYDEBUG(42, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'o') goto yy71;
+ goto yy33;
+yy43:
+ YYDEBUG(43, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'f') goto yy70;
+ if (yych == 'n') goto yy66;
+ goto yy33;
+yy44:
+ YYDEBUG(44, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'r') goto yy68;
+ goto yy33;
+yy45:
+ YYDEBUG(45, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy65;
+ goto yy33;
+yy46:
+ YYDEBUG(46, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy53;
+ goto yy33;
+yy47:
+ YYDEBUG(47, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(48, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 84 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_POUND;
+}
+#line 523 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy49:
+ YYDEBUG(49, *YYCURSOR);
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == ':') goto yy51;
+ YYDEBUG(50, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 90 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_COLON;
+}
+#line 534 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy51:
+ YYDEBUG(51, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(52, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 87 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_DCOLON;
+}
+#line 544 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy53:
+ YYDEBUG(53, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'n') goto yy59;
+ goto yy33;
+yy54:
+ YYDEBUG(54, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '/') goto yy56;
+yy55:
+ YYDEBUG(55, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ if (yyaccept <= 3) {
+ if (yyaccept <= 1) {
+ if (yyaccept <= 0) {
+ goto yy31;
+ } else {
+ goto yy36;
}
-
- else
- {
- yy_cp = yyg->yy_c_buf_p;
- goto yy_find_action;
+ } else {
+ if (yyaccept <= 2) {
+ goto yy64;
+ } else {
+ goto yy67;
}
}
-
- else switch ( yy_get_next_buffer( yyscanner ) )
- {
- case EOB_ACT_END_OF_FILE:
- {
- yyg->yy_did_buffer_switch_on_eof = 0;
-
- if ( yywrap(yyscanner ) )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * yytext, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! yyg->yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
- }
- break;
+ } else {
+ if (yyaccept <= 5) {
+ if (yyaccept <= 4) {
+ goto yy72;
+ } else {
+ goto yy93;
}
-
- case EOB_ACT_CONTINUE_SCAN:
- yyg->yy_c_buf_p =
- yyg->yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- yy_cp = yyg->yy_c_buf_p;
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- yyg->yy_c_buf_p =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- yy_cp = yyg->yy_c_buf_p;
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
- goto yy_find_action;
+ } else {
+ goto yy95;
}
- break;
}
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
-} /* end of yylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = yyg->yytext_ptr;
- register int number_to_move, i;
- int ret_val;
-
- if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
+yy56:
+ YYDEBUG(56, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych != '/') goto yy55;
+ YYDEBUG(57, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(58, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 78 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_PROTO;
+}
+#line 598 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy59:
+ YYDEBUG(59, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'd') goto yy33;
+ YYDEBUG(60, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != '_') goto yy33;
+yy61:
+ YYDEBUG(61, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy62;
+ }
+ goto yy33;
+yy62:
+ YYDEBUG(62, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(63, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy62;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy64;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
}
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy64;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
}
}
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
-
- else
+yy64:
+ YYDEBUG(64, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 118 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yy_size_t num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
-
- YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-
+ phpdbg_init_param(yylval, OP_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_OPCODE;
+}
+#line 652 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy65:
+ YYDEBUG(65, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+yy66:
+ YYDEBUG(66, *YYCURSOR);
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy67;
+ if (yych <= '\f') goto yy33;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- yyg->yy_n_chars, num_to_read );
-
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
}
-
- if ( yyg->yy_n_chars == 0 )
+yy67:
+ YYDEBUG(67, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 94 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- yyrestart(yyin ,yyscanner);
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 1;
+ return T_TRUTHY;
+}
+#line 685 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy68:
+ YYDEBUG(68, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'u') goto yy33;
+ YYDEBUG(69, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy66;
+ goto yy33;
+yy70:
+ YYDEBUG(70, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'f') goto yy33;
+yy71:
+ YYDEBUG(71, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy72;
+ if (yych <= '\f') goto yy33;
}
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
}
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
- /* Extend the array by 50%, plus the number we really need. */
- yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
- if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
- }
-
- yyg->yy_n_chars += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
- yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
- return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
- static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
-{
- register yy_state_type yy_current_state;
- register char *yy_cp;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_current_state = yyg->yy_start;
-
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
- for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+yy72:
+ YYDEBUG(72, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 100 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 0;
+ return T_FALSY;
+}
+#line 728 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy73:
+ YYDEBUG(73, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(74, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+ YYDEBUG(75, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy71;
+ goto yy33;
+yy76:
+ YYDEBUG(76, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'a') goto yy33;
+ YYDEBUG(77, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'b') goto yy33;
+ YYDEBUG(78, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(79, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy33;
+ YYDEBUG(80, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'd') goto yy66;
+ goto yy33;
+yy81:
+ YYDEBUG(81, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+ YYDEBUG(82, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'a') goto yy33;
+ YYDEBUG(83, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'b') goto yy33;
+ YYDEBUG(84, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(85, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy33;
+ YYDEBUG(86, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'd') goto yy71;
+ goto yy33;
+yy87:
+ YYDEBUG(87, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'N') goto yy33;
+ YYDEBUG(88, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'D') goto yy33;
+ YYDEBUG(89, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == '_') goto yy61;
+ goto yy33;
+yy90:
+ YYDEBUG(90, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy91;
}
-
- return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
-{
- register int yy_is_jam;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
-
- register YY_CHAR yy_c = 1;
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ goto yy33;
+yy91:
+ YYDEBUG(91, *YYCURSOR);
+ yyaccept = 5;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(92, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy91;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 125);
- if ( ! yy_is_jam )
- *yyg->yy_state_ptr++ = yy_current_state;
-
- (void)yyg;
- return yy_is_jam ? 0 : yy_current_state;
-}
-
- static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
-{
- register char *yy_cp;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_cp = yyg->yy_c_buf_p;
-
- /* undo effects of setting up yytext */
- *yy_cp = yyg->yy_hold_char;
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- { /* need to shift things up to make room */
- /* +2 for EOB chars. */
- register yy_size_t number_to_move = yyg->yy_n_chars + 2;
- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
- register char *source =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
- while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- *--dest = *--source;
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy93;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy93;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
+ }
}
-
- *--yy_cp = (char) c;
-
- yyg->yytext_ptr = yy_bp;
- yyg->yy_hold_char = *yy_cp;
- yyg->yy_c_buf_p = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
- static int yyinput (yyscan_t yyscanner)
-#else
- static int input (yyscan_t yyscanner)
-#endif
-
-{
- int c;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
-
- if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+yy93:
+ YYDEBUG(93, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 112 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
- /* This was really a NUL. */
- *yyg->yy_c_buf_p = '\0';
-
- else
- { /* need more input */
- yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
- ++yyg->yy_c_buf_p;
-
- switch ( yy_get_next_buffer( yyscanner ) )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- yyrestart(yyin ,yyscanner);
-
- /*FALLTHROUGH*/
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( yywrap(yyscanner ) )
- return EOF;
-
- if ( ! yyg->yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
-#ifdef __cplusplus
- return yyinput(yyscanner);
-#else
- return input(yyscanner);
-#endif
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
- break;
- }
+ phpdbg_init_param(yylval, ADDR_PARAM);
+ yylval->addr = strtoul(yytext, 0, 16);
+ return T_ADDR;
+}
+#line 848 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy94:
+ YYDEBUG(94, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy95;
+ if (yych <= '\f') goto yy33;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
}
-
- c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
- *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
- yyg->yy_hold_char = *++yyg->yy_c_buf_p;
-
- return c;
+yy95:
+ YYDEBUG(95, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 72 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_IF;
}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * @param yyscanner The scanner object.
- * @note This function does not reset the start condition to @c INITIAL .
- */
- void yyrestart (FILE * input_file , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack (yyscanner);
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+#line 876 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
-
- yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
- yy_load_buffer_state(yyscanner );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * @param yyscanner The scanner object.
- */
- void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* TODO. We should be able to replace this entire function body
- * with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
- */
- yyensure_buffer_stack (yyscanner);
- if ( YY_CURRENT_BUFFER == new_buffer )
- return;
-
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+/* *********************************** */
+yyc_RAW:
+ {
+ static const unsigned char yybm[] = {
+ 0, 64, 64, 64, 64, 64, 64, 64,
+ 64, 224, 128, 64, 64, 224, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 224, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 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(96, *YYCURSOR);
+ YYFILL(2);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 32) {
+ goto yy98;
}
-
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state(yyscanner );
-
- /* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
- * to go ahead and always set it.
- */
- yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-static void yy_load_buffer_state (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
- yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
- yyg->yy_hold_char = *yyg->yy_c_buf_p;
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * @param yyscanner The scanner object.
- * @return the allocated buffer state.
- */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_buf_size = size;
-
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
- yy_init_buffer(b,file ,yyscanner);
-
- return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
- * @param yyscanner The scanner object.
- */
- void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if ( ! b )
- return;
-
- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
- yyfree((void *) b->yy_ch_buf ,yyscanner );
-
- yyfree((void *) b ,yyscanner );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
- */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
-
-{
- int oerrno = errno;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_flush_buffer(b ,yyscanner);
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
- /* If b is the current buffer, then yy_init_buffer was _probably_
- * called from yyrestart() or through yy_get_next_buffer.
- * In that case, we don't want to reset the lineno or column.
- */
- if (b != YY_CURRENT_BUFFER){
- b->yy_bs_lineno = 1;
- b->yy_bs_column = 0;
- }
-
- b->yy_is_interactive = 0;
-
- errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * @param yyscanner The scanner object.
- */
- void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state(yyscanner );
+ if (yych <= 0x00) goto yy103;
+ if (yych == '\n') goto yy101;
+ goto yy104;
+yy98:
+ YYDEBUG(98, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(99, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy98;
+ }
+ if (yych <= 0x00) goto yy100;
+ if (yych == '\n') goto yy106;
+ goto yy104;
+yy100:
+ YYDEBUG(100, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 132 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_INPUT;
}
-
-/** Pushes the new state onto the stack. The new state becomes
- * the current state. This function will allocate the stack
- * if necessary.
- * @param new_buffer The new state.
- * @param yyscanner The scanner object.
- */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if (new_buffer == NULL)
- return;
-
- yyensure_buffer_stack(yyscanner);
-
- /* This block is copied from yy_switch_to_buffer. */
- if ( YY_CURRENT_BUFFER )
+#line 946 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy101:
+ YYDEBUG(101, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy106;
+ }
+yy102:
+ YYDEBUG(102, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* Flush out information for old buffer. */
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ return 0;
+}
+#line 960 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy103:
+ YYDEBUG(103, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy102;
+yy104:
+ YYDEBUG(104, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(105, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy104;
}
+ goto yy100;
+yy106:
+ YYDEBUG(106, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(107, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy106;
+ }
+ YYDEBUG(108, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ /* ignore whitespace */
- /* Only push if top exists. Otherwise, replace top. */
- if (YY_CURRENT_BUFFER)
- yyg->yy_buffer_stack_top++;
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state(yyscanner );
- yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- * The next element becomes the new top.
- * @param yyscanner The scanner object.
- */
-void yypop_buffer_state (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if (!YY_CURRENT_BUFFER)
- return;
-
- yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
- YY_CURRENT_BUFFER_LVALUE = NULL;
- if (yyg->yy_buffer_stack_top > 0)
- --yyg->yy_buffer_stack_top;
-
- if (YY_CURRENT_BUFFER) {
- yy_load_buffer_state(yyscanner );
- yyg->yy_did_buffer_switch_on_eof = 1;
- }
-}
-
-/* Allocates the stack if it does not exist.
- * Guarantees space for at least one push.
- */
-static void yyensure_buffer_stack (yyscan_t yyscanner)
-{
- yy_size_t num_to_alloc;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (!yyg->yy_buffer_stack) {
-
- /* First allocation is just for 2 elements, since we don't know if this
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
- num_to_alloc = 1;
- yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- , yyscanner);
- if ( ! yyg->yy_buffer_stack )
- YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
- memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
- yyg->yy_buffer_stack_max = num_to_alloc;
- yyg->yy_buffer_stack_top = 0;
- return;
- }
-
- if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
-
- /* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
-
- num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
- yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
- (yyg->yy_buffer_stack,
- num_to_alloc * sizeof(struct yy_buffer_state*)
- , yyscanner);
- if ( ! yyg->yy_buffer_stack )
- YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
- /* zero only the new slots.*/
- memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
- yyg->yy_buffer_stack_max = num_to_alloc;
- }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
-
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- yy_switch_to_buffer(b ,yyscanner );
-
- return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to yylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- * yy_scan_bytes() instead.
- */
-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
-{
-
- return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
- * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- yy_size_t i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = _yybytes_len + 2;
- buf = (char *) yyalloc(n ,yyscanner );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
- for ( i = 0; i < _yybytes_len; ++i )
- buf[i] = yybytes[i];
-
- buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = yy_scan_buffer(buf,n ,yyscanner);
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
-
- return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
-{
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = yyg->yy_hold_char; \
- yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
- yyg->yy_hold_char = *yyg->yy_c_buf_p; \
- *yyg->yy_c_buf_p = '\0'; \
- yyleng = yyless_macro_arg; \
- } \
- while ( 0 )
-
-/* Accessor methods (get/set functions) to struct members. */
-
-/** Get the user-defined data for this scanner.
- * @param yyscanner The scanner object.
- */
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyextra;
-}
-
-/** Get the current line number.
- * @param yyscanner The scanner object.
- */
-int yyget_lineno (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (! YY_CURRENT_BUFFER)
- return 0;
-
- return yylineno;
-}
-
-/** Get the current column number.
- * @param yyscanner The scanner object.
- */
-int yyget_column (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (! YY_CURRENT_BUFFER)
- return 0;
-
- return yycolumn;
-}
-
-/** Get the input stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_in (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyin;
-}
-
-/** Get the output stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_out (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyout;
-}
-
-/** Get the length of the current token.
- * @param yyscanner The scanner object.
- */
-yy_size_t yyget_leng (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyleng;
-}
-
-/** Get the current token.
- * @param yyscanner The scanner object.
- */
-
-char *yyget_text (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yytext;
-}
-
-/** Set the user-defined data. This data is never touched by the scanner.
- * @param user_defined The data to be associated with this scanner.
- * @param yyscanner The scanner object.
- */
-void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyextra = user_defined ;
-}
-
-/** Set the current line number.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_lineno (int line_number , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* lineno is only valid if an input buffer exists. */
- if (! YY_CURRENT_BUFFER )
- YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
-
- yylineno = line_number;
-}
-
-/** Set the current column.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_column (int column_no , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* column is only valid if an input buffer exists. */
- if (! YY_CURRENT_BUFFER )
- YY_FATAL_ERROR( "yyset_column called with no buffer" );
-
- yycolumn = column_no;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * @param yyscanner The scanner object.
- * @see yy_switch_to_buffer
- */
-void yyset_in (FILE * in_str , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyin = in_str ;
-}
-
-void yyset_out (FILE * out_str , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyout = out_str ;
-}
-
-int yyget_debug (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yy_flex_debug;
-}
-
-void yyset_debug (int bdebug , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yy_flex_debug = bdebug ;
-}
-
-/* Accessor methods for yylval and yylloc */
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yylval;
-}
-
-void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yylval = yylval_param;
-}
-
-/* User-visible API */
-
-/* yylex_init is special because it creates the scanner itself, so it is
- * the ONLY reentrant function that doesn't take the scanner as the last argument.
- * That's why we explicitly handle the declaration, instead of using our macros.
- */
-
-int yylex_init(yyscan_t* ptr_yy_globals)
-
-{
- if (ptr_yy_globals == NULL){
- errno = EINVAL;
- return 1;
- }
-
- *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
-
- if (*ptr_yy_globals == NULL){
- errno = ENOMEM;
- return 1;
- }
-
- /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
- memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
- return yy_init_globals ( *ptr_yy_globals );
-}
-
-/* yylex_init_extra has the same functionality as yylex_init, but follows the
- * convention of taking the scanner as the last argument. Note however, that
- * this is a *pointer* to a scanner, as it will be allocated by this call (and
- * is the reason, too, why this function also must handle its own declaration).
- * The user defined value in the first argument will be available to yyalloc in
- * the yyextra field.
- */
-
-int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
-
-{
- struct yyguts_t dummy_yyguts;
-
- yyset_extra (yy_user_defined, &dummy_yyguts);
-
- if (ptr_yy_globals == NULL){
- errno = EINVAL;
- return 1;
- }
-
- *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
- if (*ptr_yy_globals == NULL){
- errno = ENOMEM;
- return 1;
- }
-
- /* By setting to 0xAA, we expose bugs in
- yy_init_globals. Leave at 0x00 for releases. */
- memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
- yyset_extra (yy_user_defined, *ptr_yy_globals);
-
- return yy_init_globals ( *ptr_yy_globals );
-}
-
-static int yy_init_globals (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- /* Initialization is the same as for the non-reentrant scanner.
- * This function is called from yylex_destroy(), so don't allocate here.
- */
-
- yyg->yy_buffer_stack = 0;
- yyg->yy_buffer_stack_top = 0;
- yyg->yy_buffer_stack_max = 0;
- yyg->yy_c_buf_p = (char *) 0;
- yyg->yy_init = 0;
- yyg->yy_start = 0;
-
- yyg->yy_start_stack_ptr = 0;
- yyg->yy_start_stack_depth = 0;
- yyg->yy_start_stack = NULL;
-
- yyg->yy_state_buf = 0;
- yyg->yy_state_ptr = 0;
- yyg->yy_full_match = 0;
- yyg->yy_lp = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
- yyin = stdin;
- yyout = stdout;
-#else
- yyin = (FILE *) 0;
- yyout = (FILE *) 0;
-#endif
-
- /* For future reference: Set errno on error, since we are called by
- * yylex_init()
- */
- return 0;
+ goto restart;
}
-
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* Pop the buffer stack, destroying each element. */
- while(YY_CURRENT_BUFFER){
- yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state(yyscanner);
+#line 992 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
-
- /* Destroy the stack itself. */
- yyfree(yyg->yy_buffer_stack ,yyscanner);
- yyg->yy_buffer_stack = NULL;
-
- /* Destroy the start condition stack. */
- yyfree(yyg->yy_start_stack ,yyscanner );
- yyg->yy_start_stack = NULL;
-
- yyfree ( yyg->yy_state_buf , yyscanner);
- yyg->yy_state_buf = NULL;
-
- /* Reset the globals. This is important in a non-reentrant scanner so the next time
- * yylex() is called, initialization will occur. */
- yy_init_globals( yyscanner);
-
- /* Destroy the main struct (reentrant only). */
- yyfree ( yyscanner , yyscanner );
- yyscanner = NULL;
- return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
-{
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
-{
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
-
- return n;
-}
-#endif
-
-void *yyalloc (yy_size_t size , yyscan_t yyscanner)
-{
- return (void *) malloc( size );
}
+#line 168 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
-void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
-{
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
}
-
-void yyfree (void * ptr , yyscan_t yyscanner)
-{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-
diff --git a/sapi/phpdbg/phpdbg_lexer.h b/sapi/phpdbg/phpdbg_lexer.h
index 1958cef9a..ab51e7daa 100644
--- a/sapi/phpdbg/phpdbg_lexer.h
+++ b/sapi/phpdbg/phpdbg_lexer.h
@@ -1,348 +1,41 @@
-#ifndef yyHEADER_H
-#define yyHEADER_H 1
-#define yyIN_HEADER 1
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2014 The PHP Group |
+ +----------------------------------------------------------------------+
+ | 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 |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Felipe Pena <felipe@php.net> |
+ | Authors: Joe Watkins <joe.watkins@live.co.uk> |
+ | Authors: Bob Weinand <bwoebi@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+#ifndef PHPDBG_LEXER_H
+#define PHPDBG_LEXER_H
+
+#include "phpdbg_cmd.h"
+
+typedef struct {
+ unsigned int len;
+ unsigned char *text;
+ unsigned char *cursor;
+ unsigned char *marker;
+ int state;
+} phpdbg_lexer_data;
+
+#define yyparse phpdbg_parse
+#define yylex phpdbg_lex
+
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC);
+
+int phpdbg_lex (phpdbg_param_t* yylval);
-#line 6 "sapi/phpdbg/phpdbg_lexer.h"
-
-#line 8 "sapi/phpdbg/phpdbg_lexer.h"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
- are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- yy_size_t yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-void yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypop_buffer_state (yyscan_t yyscanner );
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
-
-void *yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yyfree (void * ,yyscan_t yyscanner );
-
-/* Begin user sect3 */
-
-#define yywrap(yyscanner) 1
-#define YY_SKIP_YYWRAP
-
-#define yytext_ptr yytext_r
-
-#ifdef YY_HEADER_EXPORT_START_CONDITIONS
-#define INITIAL 0
-#define RAW 1
-#define NORMAL 2
-
-#endif
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-int yylex_init (yyscan_t* scanner);
-
-int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (yyscan_t yyscanner );
-
-int yyget_debug (yyscan_t yyscanner );
-
-void yyset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yyget_in (yyscan_t yyscanner );
-
-void yyset_in (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yyget_out (yyscan_t yyscanner );
-
-void yyset_out (FILE * out_str ,yyscan_t yyscanner );
-
-yy_size_t yyget_leng (yyscan_t yyscanner );
-
-char *yyget_text (yyscan_t yyscanner );
-
-int yyget_lineno (yyscan_t yyscanner );
-
-void yyset_lineno (int line_number ,yyscan_t yyscanner );
-
-int yyget_column (yyscan_t yyscanner );
-
-void yyset_column (int column_no ,yyscan_t yyscanner );
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner );
-
-void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (yyscan_t yyscanner );
-#else
-extern int yywrap (yyscan_t yyscanner );
-#endif
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex \
- (YYSTYPE * yylval_param ,yyscan_t yyscanner);
-
-#define YY_DECL int yylex \
- (YYSTYPE * yylval_param , yyscan_t yyscanner)
-#endif /* !YY_DECL */
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-#line 347 "sapi/phpdbg/phpdbg_lexer.h"
-#undef yyIN_HEADER
-#endif /* yyHEADER_H */
diff --git a/sapi/phpdbg/phpdbg_lexer.l b/sapi/phpdbg/phpdbg_lexer.l
index b3536feab..4d9c837f1 100644
--- a/sapi/phpdbg/phpdbg_lexer.l
+++ b/sapi/phpdbg/phpdbg_lexer.l
@@ -1,131 +1,169 @@
-%{
-
/*
* phpdbg_lexer.l
*/
#include "phpdbg.h"
#include "phpdbg_cmd.h"
-#define YYSTYPE phpdbg_param_t
#include "phpdbg_parser.h"
-%}
-
-%s RAW
-%s NORMAL
-
-%option outfile="sapi/phpdbg/phpdbg_lexer.c" header-file="sapi/phpdbg/phpdbg_lexer.h"
-%option warn nodefault
-
-%option reentrant noyywrap never-interactive nounistd
-%option bison-bridge
-
-T_TRUE "true"
-T_YES "yes"
-T_ON "on"
-T_ENABLED "enabled"
-T_FALSE "false"
-T_NO "no"
-T_OFF "off"
-T_DISABLED "disabled"
-T_EVAL "ev"
-T_SHELL "sh"
-T_IF "if"
-T_RUN "run"
-T_RUN_SHORT "r"
-
-WS [ \r\n\t]+
-DIGITS [0-9\.]+
-ID [^ \r\n\t:#]+
-ADDR 0x[a-fA-F0-9]+
-OPCODE (ZEND_|zend_)([A-Za-z])+
-INPUT [^\n]+
-%%
-
-<INITIAL>{
- {T_EVAL} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_EVAL;
- }
- {T_SHELL} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_SHELL;
- }
- {T_RUN}|{T_RUN_SHORT} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_RUN;
- }
-
- .+ {
- BEGIN(NORMAL);
- REJECT;
- }
-}
-
-<NORMAL>{
- {T_IF} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_IF;
- }
-}
-
-<INITIAL,NORMAL>{
- {ID}[:]{1}[//]{2} {
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_PROTO;
- }
- [#]{1} { return T_POUND; }
- [:]{2} { return T_DCOLON; }
- [:]{1} { return T_COLON; }
-
- {T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 1;
- return T_TRUTHY;
- }
- {T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 0;
- return T_FALSY;
- }
- {DIGITS} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = atoi(yytext);
- return T_DIGITS;
- }
- {ADDR} {
- phpdbg_init_param(yylval, ADDR_PARAM);
- yylval->addr = strtoul(yytext, 0, 16);
- return T_ADDR;
- }
- {OPCODE} {
- phpdbg_init_param(yylval, OP_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_OPCODE;
- }
- {ID} {
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_ID;
- }
-}
-
-<RAW>{INPUT} {
+#define LEX(v) (PHPDBG_G(lexer).v)
+
+#define YYCTYPE unsigned char
+#define YYSETCONDITION(x) LEX(state) = x;
+#define YYGETCONDITION() LEX(state)
+#define YYCURSOR LEX(cursor)
+#define YYMARKER LEX(marker)
+#define yyleng LEX(len)
+#define yytext ((char*) LEX(text))
+#undef YYDEBUG
+#define YYDEBUG(a, b)
+#define YYFILL(n)
+
+#define NORMAL 0
+#define RAW 1
+#define INITIAL 2
+
+ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
+
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ PHPDBG_G(parser_stack) = stack;
+
+ YYSETCONDITION(INITIAL);
+
+ LEX(text) = YYCURSOR = (unsigned char *) input;
+ LEX(len) = strlen(input);
+}
+
+int phpdbg_lex (phpdbg_param_t* yylval) {
+ TSRMLS_FETCH(); /* Slow, but this is not a major problem here. TODO: Use TSRMLS_DC */
+
+restart:
+ LEX(text) = YYCURSOR;
+
+/*!re2c
+re2c:yyfill:check = 0;
+T_TRUE "true"
+T_YES "yes"
+T_ON "on"
+T_ENABLED "enabled"
+T_FALSE "false"
+T_NO "no"
+T_OFF "off"
+T_DISABLED "disabled"
+T_EVAL "ev"
+T_SHELL "sh"
+T_IF "if"
+T_RUN "run"
+T_RUN_SHORT "r"
+WS [ \r\n\t]+
+DIGITS [0-9\.]+
+ID [^ \r\n\t:#\000]+
+ADDR [0][x][a-fA-F0-9]+
+OPCODE (ZEND_|zend_)([A-Za-z])+
+INPUT [^\n\000]+
+
+<!*> := yyleng = (size_t) YYCURSOR - (size_t) yytext;
+
+<*>[\n\000] {
+ return 0;
+}
+
+<NORMAL>{T_IF} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_IF;
+}
+
+<NORMAL>{ID}[:]{1}[//]{2} {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_PROTO;
+}
+<NORMAL>[#]{1} {
+ return T_POUND;
+}
+<NORMAL>[:]{2} {
+ return T_DCOLON;
+}
+<NORMAL>[:]{1} {
+ return T_COLON;
+}
+
+<NORMAL>{T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 1;
+ return T_TRUTHY;
+}
+
+<NORMAL>{T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 0;
+ return T_FALSY;
+}
+
+<NORMAL>{DIGITS} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = atoi(yytext);
+ return T_DIGITS;
+}
+
+<NORMAL>{ADDR} {
+ phpdbg_init_param(yylval, ADDR_PARAM);
+ yylval->addr = strtoul(yytext, 0, 16);
+ return T_ADDR;
+}
+
+<NORMAL>{OPCODE} {
+ phpdbg_init_param(yylval, OP_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_OPCODE;
+}
+
+<NORMAL>{ID} {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_ID;
+}
+
+<RAW>{INPUT} {
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = zend_strndup(yytext, yyleng);
yylval->len = yyleng;
- BEGIN(INITIAL);
return T_INPUT;
}
-{WS} { /* ignore whitespace */ }
-%%
+<*>{WS} {
+ /* ignore whitespace */
+
+ goto restart;
+}
+
+<INITIAL>{T_EVAL} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_EVAL;
+}
+<INITIAL>{T_SHELL} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_SHELL;
+}
+<INITIAL>{T_RUN}|{T_RUN_SHORT} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_RUN;
+}
+
+<INITIAL>. {
+ YYSETCONDITION(NORMAL);
+
+ YYCURSOR = LEX(text);
+ goto restart;
+}
+
+*/
+}
diff --git a/sapi/phpdbg/phpdbg_parser.c b/sapi/phpdbg/phpdbg_parser.c
index 79af58f8c..f9a3e4d29 100644
--- a/sapi/phpdbg/phpdbg_parser.c
+++ b/sapi/phpdbg/phpdbg_parser.c
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 2.6.2. */
/* Bison implementation for Yacc-like parsers in C
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7"
+#define YYBISON_VERSION "2.6.2"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -59,11 +59,18 @@
#define YYPULL 1
-
+/* Substitute the variable and function names. */
+#define yyparse phpdbg_parse
+#define yylex phpdbg_lex
+#define yyerror phpdbg_error
+#define yylval phpdbg_lval
+#define yychar phpdbg_char
+#define yydebug phpdbg_debug
+#define yynerrs phpdbg_nerrs
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 2 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 336 of yacc.c */
+#line 1 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
/*
@@ -84,25 +91,14 @@
#include "phpdbg_parser.h"
#include "phpdbg_lexer.h"
+#undef yyerror
+static int yyerror(void ***tsrm_ls, const char *msg);
+
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
-int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
- TSRMLS_FETCH();
- phpdbg_error("Parse Error: %s", msg);
- {
- const phpdbg_param_t *top = stack;
-
- while (top) {
- phpdbg_param_debug(
- top, "--> ");
- top = top->next;
- }
- }
- return 0;
-}
-/* Line 371 of yacc.c */
-#line 106 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 336 of yacc.c */
+#line 102 "sapi/phpdbg/phpdbg_parser.c"
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
@@ -122,18 +118,18 @@ int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
/* In a future release of Bison, this section will be replaced
by #include "phpdbg_parser.h". */
-#ifndef YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
-# define YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
+#ifndef PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
+# define PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
-extern int yydebug;
+extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 387 of yacc.c */
-#line 40 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 350 of yacc.c */
+#line 31 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
#include "phpdbg.h"
#ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -142,8 +138,8 @@ typedef void* yyscan_t;
#endif
-/* Line 387 of yacc.c */
-#line 147 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 350 of yacc.c */
+#line 143 "sapi/phpdbg/phpdbg_parser.c"
/* Tokens. */
#ifndef YYTOKENTYPE
@@ -203,24 +199,24 @@ typedef int YYSTYPE;
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
+int phpdbg_parse (void *YYPARSE_PARAM);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
-int yyparse (phpdbg_param_t *stack, yyscan_t scanner);
+int phpdbg_parse (void *tsrm_ls);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED */
+#endif /* !PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H */
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 224 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 353 of yacc.c */
+#line 220 "sapi/phpdbg/phpdbg_parser.c"
#ifdef short
# undef short
@@ -273,24 +269,24 @@ typedef short int yytype_int16;
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
-# define YY_(Msgid) Msgid
+# define YY_(msgid) msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
#else
-# define YYUSE(E) /* empty */
+# define YYUSE(e) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
-# define YYID(N) (N)
+# define YYID(n) (n)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
@@ -438,18 +434,18 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 24
+#define YYFINAL 25
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 33
+#define YYLAST 41
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 21
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 4
+#define YYNNTS 5
/* YYNRULES -- Number of rules. */
-#define YYNRULES 24
+#define YYNRULES 25
/* YYNRULES -- Number of states. */
-#define YYNSTATES 37
+#define YYNSTATES 38
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -496,30 +492,30 @@ static const yytype_uint8 yytranslate[] =
YYRHS. */
static const yytype_uint8 yyprhs[] =
{
- 0, 0, 3, 5, 6, 8, 11, 15, 20, 25,
- 31, 35, 41, 45, 48, 51, 54, 56, 59, 61,
- 63, 65, 67, 69, 71
+ 0, 0, 3, 5, 7, 8, 10, 13, 17, 22,
+ 27, 33, 37, 43, 47, 49, 51, 53, 55, 57,
+ 59, 61, 64, 67, 70, 72
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
- 22, 0, -1, 23, -1, -1, 24, -1, 23, 24,
- -1, 18, 10, 14, -1, 18, 10, 12, 14, -1,
- 13, 18, 10, 14, -1, 13, 18, 10, 12, 14,
- -1, 18, 11, 18, -1, 18, 11, 18, 12, 14,
- -1, 18, 12, 14, -1, 6, 19, -1, 3, 19,
- -1, 5, 19, -1, 4, -1, 4, 19, -1, 17,
- -1, 16, -1, 15, -1, 7, -1, 8, -1, 14,
- -1, 18, -1
+ 22, 0, -1, 23, -1, 25, -1, -1, 24, -1,
+ 23, 24, -1, 18, 10, 14, -1, 18, 10, 12,
+ 14, -1, 13, 18, 10, 14, -1, 13, 18, 10,
+ 12, 14, -1, 18, 11, 18, -1, 18, 11, 18,
+ 12, 14, -1, 18, 12, 14, -1, 17, -1, 16,
+ -1, 15, -1, 7, -1, 8, -1, 14, -1, 18,
+ -1, 6, 19, -1, 3, 19, -1, 5, 19, -1,
+ 4, -1, 4, 19, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 76, 76, 77, 81, 82, 86, 91, 96, 107,
- 118, 123, 129, 135, 140, 145, 150, 154, 159, 160,
- 161, 162, 163, 164, 165
+ 0, 66, 66, 67, 68, 72, 73, 77, 82, 87,
+ 97, 107, 112, 118, 124, 125, 126, 127, 128, 129,
+ 130, 134, 139, 144, 149, 153
};
#endif
@@ -536,7 +532,7 @@ static const char *const yytname[] =
"\"digits (numbers)\"", "\"literal (string)\"", "\"address\"",
"\"opcode\"", "\"identifier (command or function name)\"",
"\"input (input string or data)\"", "\"input\"", "$accept", "input",
- "parameters", "parameter", YY_NULL
+ "parameters", "parameter", "full_expression", YY_NULL
};
#endif
@@ -554,17 +550,17 @@ static const yytype_uint16 yytoknum[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 21, 22, 22, 23, 23, 24, 24, 24, 24,
+ 0, 21, 22, 22, 22, 23, 23, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24
+ 24, 25, 25, 25, 25, 25
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
- 0, 2, 1, 0, 1, 2, 3, 4, 4, 5,
- 3, 5, 3, 2, 2, 2, 1, 2, 1, 1,
- 1, 1, 1, 1, 1
+ 0, 2, 1, 1, 0, 1, 2, 3, 4, 4,
+ 5, 3, 5, 3, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 1, 2
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -572,16 +568,16 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 3, 0, 16, 0, 0, 21, 22, 0, 23, 20,
- 19, 18, 24, 0, 2, 4, 14, 17, 15, 13,
- 0, 0, 0, 0, 1, 5, 0, 0, 6, 10,
- 12, 0, 8, 7, 0, 9, 11
+ 4, 0, 24, 0, 0, 17, 18, 0, 19, 16,
+ 15, 14, 20, 0, 2, 5, 3, 22, 25, 23,
+ 21, 0, 0, 0, 0, 1, 6, 0, 0, 7,
+ 11, 13, 0, 9, 8, 0, 10, 12
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 13, 14, 15
+ -1, 13, 14, 15, 16
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -589,16 +585,16 @@ static const yytype_int8 yydefgoto[] =
#define YYPACT_NINF -11
static const yytype_int8 yypact[] =
{
- -3, -10, 1, 2, 3, -11, -11, 6, -11, -11,
- -11, -11, -4, 23, -3, -11, -11, -11, -11, -11,
- 15, 4, 8, 13, -11, -11, 5, 14, -11, 17,
- -11, 16, -11, -11, 18, -11, -11
+ -3, -10, 10, 11, 12, -11, -11, 14, -11, -11,
+ -11, -11, -4, 28, 9, -11, -11, -11, -11, -11,
+ -11, 23, 6, 16, 21, -11, -11, 7, 22, -11,
+ 25, -11, 24, -11, -11, 26, -11, -11
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
- -11, -11, -11, 19
+ -11, -11, -11, 27, -11
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -607,24 +603,26 @@ static const yytype_int8 yypgoto[] =
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
- 1, 2, 3, 4, 5, 6, 21, 22, 23, 16,
- 7, 8, 9, 10, 11, 12, 27, 31, 28, 32,
- 17, 18, 19, 24, 20, 26, 29, 30, 33, 34,
- 35, 0, 36, 25
+ 1, 2, 3, 4, 5, 6, 22, 23, 24, 17,
+ 7, 8, 9, 10, 11, 12, 5, 6, 28, 32,
+ 29, 33, 7, 8, 9, 10, 11, 12, 25, 18,
+ 19, 20, 21, 27, 30, 31, 34, 35, 36, 0,
+ 37, 26
};
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-11)))
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-11))
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(yytable_value) \
YYID (0)
static const yytype_int8 yycheck[] =
{
3, 4, 5, 6, 7, 8, 10, 11, 12, 19,
- 13, 14, 15, 16, 17, 18, 12, 12, 14, 14,
- 19, 19, 19, 0, 18, 10, 18, 14, 14, 12,
- 14, -1, 14, 14
+ 13, 14, 15, 16, 17, 18, 7, 8, 12, 12,
+ 14, 14, 13, 14, 15, 16, 17, 18, 0, 19,
+ 19, 19, 18, 10, 18, 14, 14, 12, 14, -1,
+ 14, 14
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -632,9 +630,9 @@ static const yytype_int8 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 3, 4, 5, 6, 7, 8, 13, 14, 15,
- 16, 17, 18, 22, 23, 24, 19, 19, 19, 19,
- 18, 10, 11, 12, 0, 24, 10, 12, 14, 18,
- 14, 12, 14, 14, 12, 14, 14
+ 16, 17, 18, 22, 23, 24, 25, 19, 19, 19,
+ 19, 18, 10, 11, 12, 0, 24, 10, 12, 14,
+ 18, 14, 12, 14, 14, 12, 14, 14
};
#define yyerrok (yyerrstatus = 0)
@@ -676,27 +674,56 @@ do \
} \
else \
{ \
- yyerror (stack, scanner, YY_("syntax error: cannot back up")); \
+ yyerror (tsrm_ls, YY_("syntax error: cannot back up")); \
YYERROR; \
} \
while (YYID (0))
-/* Error token number */
+
#define YYTERROR 1
#define YYERRCODE 256
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
/* This macro is provided for backward compatibility. */
+
#ifndef YY_LOCATION_PRINT
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
+
#ifdef YYLEX_PARAM
# define YYLEX yylex (&yylval, YYLEX_PARAM)
#else
-# define YYLEX yylex (&yylval, scanner)
+# define YYLEX yylex (&yylval)
#endif
/* Enable debugging if requested. */
@@ -719,7 +746,7 @@ do { \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value, stack, scanner); \
+ Type, Value, tsrm_ls); \
YYFPRINTF (stderr, "\n"); \
} \
} while (YYID (0))
@@ -733,23 +760,21 @@ do { \
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *tsrm_ls)
#else
static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, tsrm_ls)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
FILE *yyo = yyoutput;
YYUSE (yyo);
if (!yyvaluep)
return;
- YYUSE (stack);
- YYUSE (scanner);
+ YYUSE (tsrm_ls);
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
@@ -759,7 +784,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
switch (yytype)
{
default:
- break;
+ break;
}
}
@@ -771,15 +796,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *tsrm_ls)
#else
static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, stack, scanner)
+yy_symbol_print (yyoutput, yytype, yyvaluep, tsrm_ls)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
if (yytype < YYNTOKENS)
@@ -787,7 +811,7 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, stack, scanner)
else
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
- yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner);
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, tsrm_ls);
YYFPRINTF (yyoutput, ")");
}
@@ -830,14 +854,13 @@ do { \
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, phpdbg_param_t *stack, yyscan_t scanner)
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *tsrm_ls)
#else
static void
-yy_reduce_print (yyvsp, yyrule, stack, scanner)
+yy_reduce_print (yyvsp, yyrule, tsrm_ls)
YYSTYPE *yyvsp;
int yyrule;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
int yynrhs = yyr2[yyrule];
@@ -851,7 +874,7 @@ yy_reduce_print (yyvsp, yyrule, stack, scanner)
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
- , stack, scanner);
+ , tsrm_ls);
YYFPRINTF (stderr, "\n");
}
}
@@ -859,7 +882,7 @@ yy_reduce_print (yyvsp, yyrule, stack, scanner)
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug) \
- yy_reduce_print (yyvsp, Rule, stack, scanner); \
+ yy_reduce_print (yyvsp, Rule, tsrm_ls); \
} while (YYID (0))
/* Nonzero means print parse trace. It is left uninitialized so that
@@ -1005,6 +1028,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
{
YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
const char *yyformat = YY_NULL;
@@ -1067,13 +1091,11 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
break;
}
yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
}
}
}
@@ -1093,12 +1115,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
# undef YYCASE_
}
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
if (*yymsg_alloc < yysize)
{
@@ -1139,20 +1159,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *tsrm_ls)
#else
static void
-yydestruct (yymsg, yytype, yyvaluep, stack, scanner)
+yydestruct (yymsg, yytype, yyvaluep, tsrm_ls)
const char *yymsg;
int yytype;
YYSTYPE *yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
YYUSE (yyvaluep);
- YYUSE (stack);
- YYUSE (scanner);
+ YYUSE (tsrm_ls);
if (!yymsg)
yymsg = "Deleting";
@@ -1162,7 +1180,7 @@ yydestruct (yymsg, yytype, yyvaluep, stack, scanner)
{
default:
- break;
+ break;
}
}
@@ -1187,43 +1205,19 @@ yyparse (YYPARSE_PARAM)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
int
-yyparse (phpdbg_param_t *stack, yyscan_t scanner)
+yyparse (void *tsrm_ls)
#else
int
-yyparse (stack, scanner)
- phpdbg_param_t *stack;
- yyscan_t scanner;
+yyparse (tsrm_ls)
+ void *tsrm_ls;
#endif
#endif
{
/* The lookahead symbol. */
int yychar;
-
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
- _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
- _Pragma ("GCC diagnostic pop")
-#else
-/* Default value used for initialization, for pacifying older GCCs
- or non-GCC compilers. */
-static YYSTYPE yyval_default;
-# define YY_INITIAL_VALUE(Value) = Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
@@ -1254,7 +1248,7 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
int yyn;
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
@@ -1272,8 +1266,9 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1282,6 +1277,13 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
goto yysetstate;
/*------------------------------------------------------------.
@@ -1422,9 +1424,7 @@ yybackup:
yychar = YYEMPTY;
yystate = yyn;
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
goto yynewstate;
@@ -1460,21 +1460,27 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 4:
-/* Line 1792 of yacc.c */
-#line 81 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); }
+ case 3:
+/* Line 1802 of yacc.c */
+#line 67 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); }
break;
case 5:
-/* Line 1792 of yacc.c */
-#line 82 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); }
+/* Line 1802 of yacc.c */
+#line 72 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); }
break;
case 6:
-/* Line 1792 of yacc.c */
-#line 86 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 73 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(2) - (2)])); }
+ break;
+
+ case 7:
+/* Line 1802 of yacc.c */
+#line 77 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = (yyvsp[(2) - (3)]).str;
@@ -1482,9 +1488,9 @@ yyreduce:
}
break;
- case 7:
-/* Line 1792 of yacc.c */
-#line 91 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 8:
+/* Line 1802 of yacc.c */
+#line 82 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
(yyval).file.name = (yyvsp[(1) - (4)]).str;
@@ -1492,13 +1498,12 @@ yyreduce:
}
break;
- case 8:
-/* Line 1792 of yacc.c */
-#line 96 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 9:
+/* Line 1802 of yacc.c */
+#line 87 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
- (yyval).file.name = malloc((yyvsp[(1) - (4)]).len +
- (yyvsp[(2) - (4)]).len + 1);
+ (yyval).file.name = malloc((yyvsp[(1) - (4)]).len + (yyvsp[(2) - (4)]).len + 1);
if ((yyval).file.name) {
memcpy(&(yyval).file.name[0], (yyvsp[(1) - (4)]).str, (yyvsp[(1) - (4)]).len);
memcpy(&(yyval).file.name[(yyvsp[(1) - (4)]).len], (yyvsp[(2) - (4)]).str, (yyvsp[(2) - (4)]).len);
@@ -1508,13 +1513,12 @@ yyreduce:
}
break;
- case 9:
-/* Line 1792 of yacc.c */
-#line 107 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 10:
+/* Line 1802 of yacc.c */
+#line 97 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
- (yyval).file.name = malloc((yyvsp[(1) - (5)]).len +
- (yyvsp[(2) - (5)]).len + 1);
+ (yyval).file.name = malloc((yyvsp[(1) - (5)]).len + (yyvsp[(2) - (5)]).len + 1);
if ((yyval).file.name) {
memcpy(&(yyval).file.name[0], (yyvsp[(1) - (5)]).str, (yyvsp[(1) - (5)]).len);
memcpy(&(yyval).file.name[(yyvsp[(1) - (5)]).len], (yyvsp[(2) - (5)]).str, (yyvsp[(2) - (5)]).len);
@@ -1524,9 +1528,9 @@ yyreduce:
}
break;
- case 10:
-/* Line 1792 of yacc.c */
-#line 118 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 11:
+/* Line 1802 of yacc.c */
+#line 107 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (3)]).str;
@@ -1534,9 +1538,9 @@ yyreduce:
}
break;
- case 11:
-/* Line 1792 of yacc.c */
-#line 123 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 12:
+/* Line 1802 of yacc.c */
+#line 112 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (5)]).str;
@@ -1545,9 +1549,9 @@ yyreduce:
}
break;
- case 12:
-/* Line 1792 of yacc.c */
-#line 129 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 13:
+/* Line 1802 of yacc.c */
+#line 118 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FUNCTION_PARAM;
(yyval).str = (yyvsp[(1) - (3)]).str;
@@ -1556,100 +1560,100 @@ yyreduce:
}
break;
- case 13:
-/* Line 1792 of yacc.c */
-#line 135 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = COND_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
- break;
-
case 14:
-/* Line 1792 of yacc.c */
-#line 140 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = EVAL_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 124 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 15:
-/* Line 1792 of yacc.c */
-#line 145 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = SHELL_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 16:
-/* Line 1792 of yacc.c */
-#line 150 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = RUN_PARAM;
- (yyval).len = 0;
- }
+/* Line 1802 of yacc.c */
+#line 126 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 17:
-/* Line 1792 of yacc.c */
-#line 154 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = RUN_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 127 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 18:
-/* Line 1792 of yacc.c */
-#line 159 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 128 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 19:
-/* Line 1792 of yacc.c */
-#line 160 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 129 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 20:
-/* Line 1792 of yacc.c */
-#line 161 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 130 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 21:
-/* Line 1792 of yacc.c */
-#line 162 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 134 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = COND_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 22:
-/* Line 1792 of yacc.c */
-#line 163 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = EVAL_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 23:
-/* Line 1792 of yacc.c */
-#line 164 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 144 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = SHELL_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 24:
-/* Line 1792 of yacc.c */
-#line 165 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 149 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = RUN_PARAM;
+ (yyval).len = 0;
+ }
break;
+ case 25:
+/* Line 1802 of yacc.c */
+#line 153 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = RUN_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
+ break;
-/* Line 1792 of yacc.c */
-#line 1653 "sapi/phpdbg/phpdbg_parser.c"
+
+/* Line 1802 of yacc.c */
+#line 1657 "sapi/phpdbg/phpdbg_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1699,7 +1703,7 @@ yyerrlab:
{
++yynerrs;
#if ! YYERROR_VERBOSE
- yyerror (stack, scanner, YY_("syntax error"));
+ yyerror (tsrm_ls, YY_("syntax error"));
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
yyssp, yytoken)
@@ -1726,7 +1730,7 @@ yyerrlab:
yymsgp = yymsg;
}
}
- yyerror (stack, scanner, yymsgp);
+ yyerror (tsrm_ls, yymsgp);
if (yysyntax_error_status == 2)
goto yyexhaustedlab;
}
@@ -1750,7 +1754,7 @@ yyerrlab:
else
{
yydestruct ("Error: discarding",
- yytoken, &yylval, stack, scanner);
+ yytoken, &yylval, tsrm_ls);
yychar = YYEMPTY;
}
}
@@ -1806,15 +1810,13 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp, stack, scanner);
+ yystos[yystate], yyvsp, tsrm_ls);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
/* Shift the error token. */
@@ -1843,7 +1845,7 @@ yyabortlab:
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
- yyerror (stack, scanner, YY_("memory exhausted"));
+ yyerror (tsrm_ls, YY_("memory exhausted"));
yyresult = 2;
/* Fall through. */
#endif
@@ -1855,7 +1857,7 @@ yyreturn:
user semantic actions for why this is necessary. */
yytoken = YYTRANSLATE (yychar);
yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval, stack, scanner);
+ yytoken, &yylval, tsrm_ls);
}
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
@@ -1864,7 +1866,7 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp, stack, scanner);
+ yystos[*yyssp], yyvsp, tsrm_ls);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -1880,6 +1882,30 @@ yyreturn:
}
-/* Line 2055 of yacc.c */
-#line 168 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 2048 of yacc.c */
+#line 160 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+
+static int yyerror(void ***tsrm_ls, const char *msg) {
+ phpdbg_error("Parse Error: %s", msg);
+
+ {
+ const phpdbg_param_t *top = PHPDBG_G(parser_stack);
+
+ while (top) {
+ phpdbg_param_debug(top, "--> ");
+ top = top->next;
+ }
+ }
+ return 0;
+}
+
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ phpdbg_init_lexer(stack, input TSRMLS_CC);
+
+#ifdef ZTS
+ return yyparse(TSRMLS_C);
+#else
+ return yyparse(NULL);
+#endif
+}
diff --git a/sapi/phpdbg/phpdbg_parser.h b/sapi/phpdbg/phpdbg_parser.h
index 6acb8963c..b3aadb9c6 100644
--- a/sapi/phpdbg/phpdbg_parser.h
+++ b/sapi/phpdbg/phpdbg_parser.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 2.6.2. */
/* Bison interface for Yacc-like parsers in C
@@ -30,18 +30,18 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-#ifndef YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
-# define YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
+#ifndef PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
+# define PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
-extern int yydebug;
+extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 2058 of yacc.c */
-#line 40 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 2055 of yacc.c */
+#line 31 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
#include "phpdbg.h"
#ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -50,7 +50,7 @@ typedef void* yyscan_t;
#endif
-/* Line 2058 of yacc.c */
+/* Line 2055 of yacc.c */
#line 55 "sapi/phpdbg/phpdbg_parser.h"
/* Tokens. */
@@ -111,16 +111,16 @@ typedef int YYSTYPE;
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
+int phpdbg_parse (void *YYPARSE_PARAM);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
-int yyparse (phpdbg_param_t *stack, yyscan_t scanner);
+int phpdbg_parse (void *tsrm_ls);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED */
+#endif /* !PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H */
diff --git a/sapi/phpdbg/phpdbg_parser.y b/sapi/phpdbg/phpdbg_parser.y
index 4a84504e2..fd81edfc2 100644
--- a/sapi/phpdbg/phpdbg_parser.y
+++ b/sapi/phpdbg/phpdbg_parser.y
@@ -1,4 +1,3 @@
-%error-verbose
%{
/*
@@ -19,23 +18,15 @@
#include "phpdbg_parser.h"
#include "phpdbg_lexer.h"
+#undef yyerror
+static int yyerror(void ***tsrm_ls, const char *msg);
+
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
-int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
- TSRMLS_FETCH();
- phpdbg_error("Parse Error: %s", msg);
- {
- const phpdbg_param_t *top = stack;
-
- while (top) {
- phpdbg_param_debug(
- top, "--> ");
- top = top->next;
- }
- }
- return 0;
-}
%}
+
+%pure-parser
+%error-verbose
%code requires {
#include "phpdbg.h"
@@ -44,59 +35,58 @@ int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
typedef void* yyscan_t;
#endif
}
+
+%parse-param { void *tsrm_ls }
+
%output "sapi/phpdbg/phpdbg_parser.c"
%defines "sapi/phpdbg/phpdbg_parser.h"
-
-%define api.pure
-%lex-param { yyscan_t scanner }
-%parse-param { phpdbg_param_t *stack }
-%parse-param { yyscan_t scanner }
-
-%token T_EVAL "eval"
-%token T_RUN "run"
-%token T_SHELL "shell"
-%token T_IF "if (condition)"
-%token T_TRUTHY "truthy (true, on, yes or enabled)"
-%token T_FALSY "falsy (false, off, no or disabled)"
-%token T_STRING "string (some input, perhaps)"
-%token T_COLON ": (colon)"
-%token T_DCOLON ":: (double colon)"
-%token T_POUND "# (pound sign)"
-%token T_PROTO "protocol (file://)"
-%token T_DIGITS "digits (numbers)"
-%token T_LITERAL "literal (string)"
-%token T_ADDR "address"
-%token T_OPCODE "opcode"
-%token T_ID "identifier (command or function name)"
-%token T_INPUT "input (input string or data)"
-%token T_UNEXPECTED "input"
-%%
+
+%token T_EVAL "eval"
+%token T_RUN "run"
+%token T_SHELL "shell"
+%token T_IF "if (condition)"
+%token T_TRUTHY "truthy (true, on, yes or enabled)"
+%token T_FALSY "falsy (false, off, no or disabled)"
+%token T_STRING "string (some input, perhaps)"
+%token T_COLON ": (colon)"
+%token T_DCOLON ":: (double colon)"
+%token T_POUND "# (pound sign)"
+%token T_PROTO "protocol (file://)"
+%token T_DIGITS "digits (numbers)"
+%token T_LITERAL "literal (string)"
+%token T_ADDR "address"
+%token T_OPCODE "opcode"
+%token T_ID "identifier (command or function name)"
+%token T_INPUT "input (input string or data)"
+%token T_UNEXPECTED "input"
+
+%% /* Rules */
input
- : parameters
- | /* nothing */
- ;
+ : parameters
+ | full_expression { phpdbg_stack_push(PHPDBG_G(parser_stack), &$1); }
+ | /* nothing */
+ ;
parameters
- : parameter { phpdbg_stack_push(stack, &$1); }
- | parameters parameter { phpdbg_stack_push(stack, &$2); }
+ : parameter { phpdbg_stack_push(PHPDBG_G(parser_stack), &$1); }
+ | parameters parameter { phpdbg_stack_push(PHPDBG_G(parser_stack), &$2); }
;
parameter
- : T_ID T_COLON T_DIGITS {
+ : T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
$$.file.name = $2.str;
$$.file.line = $3.num;
}
- | T_ID T_COLON T_POUND T_DIGITS {
+ | T_ID T_COLON T_POUND T_DIGITS {
$$.type = NUMERIC_FILE_PARAM;
$$.file.name = $1.str;
$$.file.line = $4.num;
}
- | T_PROTO T_ID T_COLON T_DIGITS {
+ | T_PROTO T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
- $$.file.name = malloc($1.len +
- $2.len + 1);
+ $$.file.name = malloc($1.len + $2.len + 1);
if ($$.file.name) {
memcpy(&$$.file.name[0], $1.str, $1.len);
memcpy(&$$.file.name[$1.len], $2.str, $2.len);
@@ -104,10 +94,9 @@ parameter
}
$$.file.line = $4.num;
}
- | T_PROTO T_ID T_COLON T_POUND T_DIGITS {
+ | T_PROTO T_ID T_COLON T_POUND T_DIGITS {
$$.type = NUMERIC_FILE_PARAM;
- $$.file.name = malloc($1.len +
- $2.len + 1);
+ $$.file.name = malloc($1.len + $2.len + 1);
if ($$.file.name) {
memcpy(&$$.file.name[0], $1.str, $1.len);
memcpy(&$$.file.name[$1.len], $2.str, $2.len);
@@ -115,54 +104,81 @@ parameter
}
$$.file.line = $5.num;
}
- | T_ID T_DCOLON T_ID {
+ | T_ID T_DCOLON T_ID {
$$.type = METHOD_PARAM;
$$.method.class = $1.str;
$$.method.name = $3.str;
}
- | T_ID T_DCOLON T_ID T_POUND T_DIGITS {
+ | T_ID T_DCOLON T_ID T_POUND T_DIGITS {
$$.type = NUMERIC_METHOD_PARAM;
$$.method.class = $1.str;
$$.method.name = $3.str;
$$.num = $5.num;
}
- | T_ID T_POUND T_DIGITS {
+ | T_ID T_POUND T_DIGITS {
$$.type = NUMERIC_FUNCTION_PARAM;
$$.str = $1.str;
$$.len = $1.len;
$$.num = $3.num;
}
- | T_IF T_INPUT {
+ | T_OPCODE { $$ = $1; }
+ | T_ADDR { $$ = $1; }
+ | T_LITERAL { $$ = $1; }
+ | T_TRUTHY { $$ = $1; }
+ | T_FALSY { $$ = $1; }
+ | T_DIGITS { $$ = $1; }
+ | T_ID { $$ = $1; }
+ ;
+
+full_expression
+ : T_IF T_INPUT {
$$.type = COND_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_EVAL T_INPUT {
+ | T_EVAL T_INPUT {
$$.type = EVAL_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_SHELL T_INPUT {
+ | T_SHELL T_INPUT {
$$.type = SHELL_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_RUN {
+ | T_RUN {
$$.type = RUN_PARAM;
$$.len = 0;
}
- | T_RUN T_INPUT {
+ | T_RUN T_INPUT {
$$.type = RUN_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_OPCODE { $$ = $1; }
- | T_ADDR { $$ = $1; }
- | T_LITERAL { $$ = $1; }
- | T_TRUTHY { $$ = $1; }
- | T_FALSY { $$ = $1; }
- | T_DIGITS { $$ = $1; }
- | T_ID { $$ = $1; }
;
%%
+
+static int yyerror(void ***tsrm_ls, const char *msg) {
+ phpdbg_error("Parse Error: %s", msg);
+
+ {
+ const phpdbg_param_t *top = PHPDBG_G(parser_stack);
+
+ while (top) {
+ phpdbg_param_debug(top, "--> ");
+ top = top->next;
+ }
+ }
+ return 0;
+}
+
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ phpdbg_init_lexer(stack, input TSRMLS_CC);
+
+#ifdef ZTS
+ return yyparse(TSRMLS_C);
+#else
+ return yyparse(NULL);
+#endif
+}
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 7a28a7512..5379e7758 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -38,8 +38,6 @@
#include "phpdbg_lexer.h"
#include "phpdbg_parser.h"
-int yyparse(phpdbg_param_t *stack, yyscan_t scanner);
-
/* {{{ command declarations */
const phpdbg_command_t phpdbg_prompt_commands[] = {
PHPDBG_COMMAND_D(exec, "set execution context", 'e', NULL, "s"),
@@ -248,20 +246,10 @@ void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_
char *why = NULL;
char *input = phpdbg_read_input(cmd TSRMLS_CC);
phpdbg_param_t stack;
- yyscan_t scanner;
- YY_BUFFER_STATE state;
phpdbg_init_param(&stack, STACK_PARAM);
-
- if (yylex_init(&scanner)) {
- phpdbg_error(
- "could not initialize scanner");
- break;
- }
- state = yy_scan_string(input, scanner);
-
- if (yyparse(&stack, scanner) <= 0) {
+ if (phpdbg_do_parse(&stack, input TSRMLS_CC) <= 0) {
switch (phpdbg_stack_execute(&stack, &why TSRMLS_CC)) {
case FAILURE:
// if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
@@ -274,15 +262,12 @@ void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_
break;
}
}
-
+
if (why) {
free(why);
why = NULL;
}
-
- yy_delete_buffer(state, scanner);
- yylex_destroy(scanner);
-
+
phpdbg_stack_free(&stack);
phpdbg_destroy_input(&input TSRMLS_CC);
}
@@ -1014,20 +999,9 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
if (input) {
do {
- yyscan_t scanner;
- YY_BUFFER_STATE state;
-
phpdbg_init_param(&stack, STACK_PARAM);
- if (yylex_init(&scanner)) {
- phpdbg_error(
- "could not initialize scanner");
- return FAILURE;
- }
-
- state = yy_scan_string(input, scanner);
-
- if (yyparse(&stack, scanner) <= 0) {
+ if (phpdbg_do_parse(&stack, input TSRMLS_CC) <= 0) {
switch (ret = phpdbg_stack_execute(&stack, &why TSRMLS_CC)) {
case FAILURE:
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
@@ -1061,9 +1035,6 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
why = NULL;
}
- yy_delete_buffer(state, scanner);
- yylex_destroy(scanner);
-
phpdbg_stack_free(&stack);
phpdbg_destroy_input(&input TSRMLS_CC);
diff --git a/sapi/phpdbg/phpdbg_utils.c b/sapi/phpdbg/phpdbg_utils.c
index c9b22a203..98748b202 100644
--- a/sapi/phpdbg/phpdbg_utils.c
+++ b/sapi/phpdbg/phpdbg_utils.c
@@ -32,6 +32,9 @@
# include "win32/time.h"
#elif defined(HAVE_SYS_IOCTL_H)
# include "sys/ioctl.h"
+# ifndef GWINSZ_IN_SYS_IOCTL
+# include <termios.h>
+# endif
#endif
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
@@ -437,12 +440,12 @@ PHPDBG_API int phpdbg_get_terminal_width(TSRMLS_D) /* {{{ */
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
-#elif defined(HAVE_SYS_IOCTL_H)
+#elif defined(HAVE_SYS_IOCTL_H) && defined (TIOCGWINSZ)
struct winsize w;
- columns = ioctl(fileno(stdout), TIOCGWINSZ, &w) == 0 ? w.ws_col : 100;
+ columns = ioctl(fileno(stdout), TIOCGWINSZ, &w) == 0 ? w.ws_col : 80;
#else
- columns = 100;
+ columns = 80;
#endif
return columns;
} /* }}} */
diff --git a/sapi/phpdbg/phpdbg_utils.h b/sapi/phpdbg/phpdbg_utils.h
index 68ae7e44a..56bacfc45 100644
--- a/sapi/phpdbg/phpdbg_utils.h
+++ b/sapi/phpdbg/phpdbg_utils.h
@@ -124,4 +124,24 @@ PHPDBG_API int phpdbg_get_terminal_width(TSRMLS_D); /* }}} */
int phpdbg_rebuild_symtable(TSRMLS_D);
+#if PHP_VERSION_ID < 50500
+/* copy from zend_hash.c PHP 5.5 for 5.4 compatibility */
+static void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) {
+ Bucket *p;
+
+ p = pos ? (*pos) : ht->pInternalPointer;
+
+ if (!p) {
+ Z_TYPE_P(key) = IS_NULL;
+ } else if (p->nKeyLength) {
+ Z_TYPE_P(key) = IS_STRING;
+ Z_STRVAL_P(key) = IS_INTERNED(p->arKey) ? (char*)p->arKey : estrndup(p->arKey, p->nKeyLength - 1);
+ Z_STRLEN_P(key) = p->nKeyLength - 1;
+ } else {
+ Z_TYPE_P(key) = IS_LONG;
+ Z_LVAL_P(key) = p->h;
+ }
+}
+#endif
+
#endif /* PHPDBG_UTILS_H */
diff --git a/sapi/phpdbg/tests/run-tests.php b/sapi/phpdbg/tests/run-tests.php
index 47a998cca..1cc31d815 100644
--- a/sapi/phpdbg/tests/run-tests.php
+++ b/sapi/phpdbg/tests/run-tests.php
@@ -135,8 +135,8 @@ namespace phpdbg\testing {
* @param array basic configuration
* @param array command line
*/
- public function __construct(TestsConfiguration &$config) {
- $this->config = &$config;
+ public function __construct(TestsConfiguration $config) {
+ $this->config = $config;
if ($this->config->hasFlag('help') ||
$this->config->hasFlag('h')) {
@@ -153,7 +153,7 @@ namespace phpdbg\testing {
$paths = array();
$where = ($in != null) ? array($in) : $this->config['path'];
- foreach ($where as &$path) {
+ foreach ($where as $path) {
if ($path) {
if (is_dir($path)) {
$paths[] = $path;
@@ -243,6 +243,7 @@ namespace phpdbg\testing {
printf("\t--options\toptions to pass to phpdbg%s", PHP_EOL);
printf("\t--phpdbg\tpath to phpdbg binary%s", PHP_EOL);
printf('[flags]:%s', PHP_EOL);
+ printf("\t-diff2stdout\t\twrite diff to stdout instead of files%s", PHP_EOL);
printf("\t-nodiff\t\tdo not write diffs on failure%s", PHP_EOL);
printf("\t-nolog\t\tdo not write logs on failure%s", PHP_EOL);
printf('[examples]:%s', PHP_EOL);
@@ -266,9 +267,11 @@ namespace phpdbg\testing {
$test = sprintf('%s/%s', $path, $file);
if (preg_match('~\.test$~', $test)) {
- yield new Test($this->config, $test);
+ $tests[] = new Test($this->config, $test);
}
}
+
+ return $tests;
}
/**
@@ -354,7 +357,7 @@ namespace phpdbg\testing {
* @param array configuration
* @param string file
*/
- public function __construct(TestsConfiguration &$config, &$file) {
+ public function __construct(TestsConfiguration $config, $file) {
if (($handle = fopen($file, 'r'))) {
while (($line = fgets($handle))) {
$trim = trim($line);
@@ -417,8 +420,8 @@ namespace phpdbg\testing {
}
fclose($handle);
- $this->config = &$config;
- $this->file = &$file;
+ $this->config = $config;
+ $this->file = $file;
}
}
@@ -427,8 +430,7 @@ namespace phpdbg\testing {
*
*/
public function getResult() {
- $options = sprintf(
- '-i%s -nqb', $this->file);
+ $options = sprintf('-i%s -nqb', $this->file);
if ($this->options) {
$options = sprintf(
@@ -526,7 +528,7 @@ namespace phpdbg\testing {
* Write log to disk if configuration allows it
*
*/
- protected function writeLog(&$result = null) {
+ protected function writeLog($result = null) {
$log = sprintf(
'%s/%s.log',
dirname($this->file), basename($this->file));
diff --git a/sapi/phpdbg/travis/ci.sh b/sapi/phpdbg/travis/ci.sh
index 44d56a01f..206b158b9 100755
--- a/sapi/phpdbg/travis/ci.sh
+++ b/sapi/phpdbg/travis/ci.sh
@@ -1,9 +1,11 @@
#!/usr/bin/env sh
git clone https://github.com/php/php-src
-cd php-src/sapi
+cd php-src
+git checkout $PHP
+cd sapi
+rm -rf phpdbg
git clone https://github.com/krakjoe/phpdbg.git
cd ../
./buildconf --force
./configure --disable-all --enable-phpdbg --enable-maintainer-zts
make
-make test-phpdbg
diff --git a/svnclean.bat b/svnclean.bat
deleted file mode 100755
index 4c0118d67..000000000
--- a/svnclean.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-cscript /nologo win32\build\cvsclean.js
diff --git a/tests/classes/bug63462.phpt b/tests/classes/bug63462.phpt
index dc5edbd5e..f425c1526 100644
--- a/tests/classes/bug63462.phpt
+++ b/tests/classes/bug63462.phpt
@@ -2,8 +2,6 @@
Test script to verify that magic methods should be called only once when accessing an unset property.
--CREDITS--
Marco Pivetta <ocramius@gmail.com>
---XFAIL--
-Bug 63462 is not yet fixed
--FILE--
<?php
class Test {
@@ -20,7 +18,7 @@ class Test {
}
function __get($name) {
- echo '__get ' . $name . "\n";
+ echo '__get ' . $name;
return $this->$name;
}
@@ -54,13 +52,13 @@ $test->privateProperty = 'value';
--EXPECTF--
__get nonExisting
-Notice: Undefined index: nonExisting in %__set__get_006.php on line %d
+Notice: Undefined property: Test::$nonExisting in %sbug63462.php on line %d
__get publicProperty
-Notice: Undefined index: publicProperty in %__set__get_006.php on line %d
+Notice: Undefined property: Test::$publicProperty in %sbug63462.php on line %d
__get protectedProperty
-Notice: Undefined index: protectedProperty in %__set__get_006.php on line %d
+Notice: Undefined property: Test::$protectedProperty in %sbug63462.php on line %d
__get privateProperty
-Notice: Undefined index: privateProperty in %__set__get_006.php on line %d
+Notice: Undefined property: Test::$privateProperty in %sbug63462.php on line %d
__isset nonExisting
__isset publicProperty
__isset protectedProperty
diff --git a/travis/compile.sh b/travis/compile.sh
index 899fb5a33..6ad3bfc39 100755
--- a/travis/compile.sh
+++ b/travis/compile.sh
@@ -47,5 +47,6 @@ $TS \
--with-bz2 \
--with-openssl \
--with-gmp \
---enable-bcmath
+--enable-bcmath \
+--enable-phpdbg
make --quiet
diff --git a/vcsclean b/vcsclean
index e1004e434..b5d201b69 100755
--- a/vcsclean
+++ b/vcsclean
@@ -1,10 +1,6 @@
#! /bin/sh
-if test -d 'CVS'; then
- ${MAKE:-make} -f build/build.mk cvsclean-work
-elif test -d '.svn'; then
- ${MAKE:-make} -f build/build.mk svnclean-work
-elif test -d '.git'; then
+if test -d '.git'; then
${MAKE:-make} -f build/build.mk gitclean-work
else
echo "Can't figure out your VCS, not cleaning."
diff --git a/win32/build/cvsclean.js b/win32/build/cvsclean.js
deleted file mode 100644
index c5f92a388..000000000
--- a/win32/build/cvsclean.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2009 The PHP Group |
- +----------------------------------------------------------------------+
- | 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 |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Wez Furlong <wez@thebrainroom.com> |
- | Pierre A. Joye <pierre@php.net> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-// Cleans up files that do not belong in the repository
-
-var FSO = WScript.CreateObject("Scripting.FileSystemObject");
-var WshShell = WScript.CreateObject("WScript.Shell");
-var STDOUT = WScript.StdOut;
-
-/* svn propget svn:ignore dirname */
-function find_ignore(dirname)
-{
- dirname = "" + dirname;
- dirname_len = dirname.length;
-
- if (!FSO.FolderExists(dirname) || (dirname_len >= 4 &&
- dirname.substring(dirname_len - 4) == ".svn")) {
- return;
- }
-
- var f = FSO.GetFolder(dirname);
- var fc = new Enumerator(f.SubFolders);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- find_ignore(fc.item());
- }
-
- kill_from_ignore(dirname);
-}
-
-/* recursive remove using ignore props style wildcard matching;
- * note that FSO.DeleteFolder and FSO.DeleteFile methods both
- * accept wildcards, but that they are dangerous to use eg:
- * "*.php" will match "*.phpt" */
-function rm_r(filename)
-{
- if (FSO.FolderExists(filename)) {
- var fc = new Enumerator(FSO.GetFolder(filename).SubFolders);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- rm_r(fc.item());
- }
-
- fc = new Enumerator(FSO.GetFolder(filename).Files);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- FSO.DeleteFile(fc.item(), true);
- }
-
- FSO.DeleteFolder(filename, true);
- } else if (FSO.FileExists(filename)) {
- FSO.DeleteFile(filename, true);
- } else {
- /* we need to handle wildcards here */
- var foldername = FSO.GetParentFolderName(filename);
-
- if (foldername == "")
- foldername = ".";
-
- var filename = FSO.GetFileName(filename);
-
- var retext = filename.replace(/\./g, '\\.');
- retext = '^' + retext.replace(/\*/g, '.*') + "$";
- var re = new RegExp(retext);
-
- var folder = FSO.GetFolder(foldername);
- var fc = new Enumerator(folder.SubFolders);
- for (; !fc.atEnd(); fc.moveNext()) {
-
- var item = FSO.GetFileName(fc.item());
-
- if (item.match(re)) {
- rm_r(fc.item());
- }
- }
- var fc = new Enumerator(folder.Files);
- for (; !fc.atEnd(); fc.moveNext()) {
- item = FSO.GetFileName(fc.item());
-
- if (item.match(re)) {
- FSO.DeleteFile(fc.item(), true);
- }
- }
- }
-}
-
-function kill_from_ignore(dirname)
-{
- var l;
- var e = WshShell.Exec("svn propget svn:ignore " + dirname);
- var re = /^(config\.nice.*)|(\*)$/i;
-
- while (!e.StdOut.atEndOfStream) {
- l = e.StdOut.ReadLine();
- if (l.length == 0 || re.test(l)) {
- continue;
- }
- rm_r(dirname + l);
- }
-
-}
-
-find_ignore(".");
diff --git a/win32/build/svnclean.js b/win32/build/svnclean.js
deleted file mode 100644
index c5f92a388..000000000
--- a/win32/build/svnclean.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2009 The PHP Group |
- +----------------------------------------------------------------------+
- | 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 |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Wez Furlong <wez@thebrainroom.com> |
- | Pierre A. Joye <pierre@php.net> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-// Cleans up files that do not belong in the repository
-
-var FSO = WScript.CreateObject("Scripting.FileSystemObject");
-var WshShell = WScript.CreateObject("WScript.Shell");
-var STDOUT = WScript.StdOut;
-
-/* svn propget svn:ignore dirname */
-function find_ignore(dirname)
-{
- dirname = "" + dirname;
- dirname_len = dirname.length;
-
- if (!FSO.FolderExists(dirname) || (dirname_len >= 4 &&
- dirname.substring(dirname_len - 4) == ".svn")) {
- return;
- }
-
- var f = FSO.GetFolder(dirname);
- var fc = new Enumerator(f.SubFolders);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- find_ignore(fc.item());
- }
-
- kill_from_ignore(dirname);
-}
-
-/* recursive remove using ignore props style wildcard matching;
- * note that FSO.DeleteFolder and FSO.DeleteFile methods both
- * accept wildcards, but that they are dangerous to use eg:
- * "*.php" will match "*.phpt" */
-function rm_r(filename)
-{
- if (FSO.FolderExists(filename)) {
- var fc = new Enumerator(FSO.GetFolder(filename).SubFolders);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- rm_r(fc.item());
- }
-
- fc = new Enumerator(FSO.GetFolder(filename).Files);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- FSO.DeleteFile(fc.item(), true);
- }
-
- FSO.DeleteFolder(filename, true);
- } else if (FSO.FileExists(filename)) {
- FSO.DeleteFile(filename, true);
- } else {
- /* we need to handle wildcards here */
- var foldername = FSO.GetParentFolderName(filename);
-
- if (foldername == "")
- foldername = ".";
-
- var filename = FSO.GetFileName(filename);
-
- var retext = filename.replace(/\./g, '\\.');
- retext = '^' + retext.replace(/\*/g, '.*') + "$";
- var re = new RegExp(retext);
-
- var folder = FSO.GetFolder(foldername);
- var fc = new Enumerator(folder.SubFolders);
- for (; !fc.atEnd(); fc.moveNext()) {
-
- var item = FSO.GetFileName(fc.item());
-
- if (item.match(re)) {
- rm_r(fc.item());
- }
- }
- var fc = new Enumerator(folder.Files);
- for (; !fc.atEnd(); fc.moveNext()) {
- item = FSO.GetFileName(fc.item());
-
- if (item.match(re)) {
- FSO.DeleteFile(fc.item(), true);
- }
- }
- }
-}
-
-function kill_from_ignore(dirname)
-{
- var l;
- var e = WshShell.Exec("svn propget svn:ignore " + dirname);
- var re = /^(config\.nice.*)|(\*)$/i;
-
- while (!e.StdOut.atEndOfStream) {
- l = e.StdOut.ReadLine();
- if (l.length == 0 || re.test(l)) {
- continue;
- }
- rm_r(dirname + l);
- }
-
-}
-
-find_ignore(".");
diff --git a/win32/build/template.rc b/win32/build/template.rc
index 13e92e9a3..f36f2c041 100644
--- a/win32/build/template.rc
+++ b/win32/build/template.rc
@@ -65,7 +65,7 @@ BEGIN
#endif
VALUE "FileVersion", EXT_VERSION
VALUE "InternalName", INTERNAL_NAME
- VALUE "LegalCopyright", "Copyright © 1997-2013 The PHP Group"
+ VALUE "LegalCopyright", "Copyright © 1997-2014 The PHP Group"
VALUE "LegalTrademarks", "PHP"
VALUE "OriginalFilename", FILE_NAME
VALUE "ProductName", "PHP"