summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-01-11 15:43:42 +0100
committerOndřej Surý <ondrej@sury.org>2012-01-11 15:43:42 +0100
commit8f1428d29ef91d74b4d272af171675f2971eb15b (patch)
treea1f4f4d7dc5bfe8096806dd5c5266634e19fa07a /ext
parentc6e4182351e0173fe58de141e143aac2eacf5efe (diff)
downloadphp-8f1428d29ef91d74b4d272af171675f2971eb15b.tar.gz
Imported Upstream version 5.3.9upstream/5.3.9
Diffstat (limited to 'ext')
-rw-r--r--ext/bcmath/bcmath.c6
-rw-r--r--ext/bcmath/php_bcmath.h4
-rw-r--r--ext/bcmath/tests/bug60377.phpt13
-rw-r--r--ext/bz2/bz2.c4
-rw-r--r--ext/bz2/bz2_filter.c4
-rw-r--r--ext/bz2/php_bz2.h4
-rw-r--r--ext/calendar/cal_unix.c2
-rw-r--r--ext/calendar/calendar.c4
-rw-r--r--ext/calendar/easter.c2
-rw-r--r--ext/calendar/gregor.c22
-rw-r--r--ext/calendar/tests/bug53574_1.phpt36
-rw-r--r--ext/calendar/tests/bug53574_2.phpt (renamed from ext/calendar/tests/bug53574.phpt)13
-rw-r--r--ext/calendar/tests/bug55797_1.phpt36
-rw-r--r--ext/calendar/tests/bug55797_2.phpt36
-rw-r--r--ext/calendar/tests/easter_date.phpt1
-rw-r--r--ext/calendar/tests/jdtomonthname.phpt12
-rw-r--r--ext/calendar/tests/unixtojd.phpt3
-rw-r--r--ext/com_dotnet/com_com.c4
-rw-r--r--ext/com_dotnet/com_dotnet.c4
-rw-r--r--ext/com_dotnet/com_extension.c4
-rw-r--r--ext/com_dotnet/com_handlers.c4
-rw-r--r--ext/com_dotnet/com_iterator.c4
-rw-r--r--ext/com_dotnet/com_misc.c4
-rw-r--r--ext/com_dotnet/com_olechar.c4
-rwxr-xr-xext/com_dotnet/com_persist.c4
-rw-r--r--ext/com_dotnet/com_saproxy.c4
-rw-r--r--ext/com_dotnet/com_typeinfo.c4
-rw-r--r--ext/com_dotnet/com_variant.c4
-rw-r--r--ext/com_dotnet/com_wrapper.c4
-rw-r--r--ext/com_dotnet/php_com_dotnet.h4
-rw-r--r--ext/com_dotnet/php_com_dotnet_internal.h4
-rw-r--r--ext/ctype/ctype.c2
-rw-r--r--ext/ctype/php_ctype.h2
-rw-r--r--ext/curl/interface.c147
-rw-r--r--ext/curl/multi.c28
-rw-r--r--ext/curl/php_curl.h7
-rw-r--r--ext/curl/streams.c4
-rw-r--r--ext/curl/tests/bug27023.phpt48
-rw-r--r--ext/curl/tests/bug48203.phpt7
-rw-r--r--ext/curl/tests/bug48203_multi.phpt90
-rw-r--r--ext/curl/tests/bug54798.phpt72
-rw-r--r--ext/curl/tests/curl_CURLOPT_READDATA.phpt2
-rwxr-xr-xext/curl/tests/curl_basic_008.phpt8
-rw-r--r--ext/curl/tests/curl_basic_010.phpt8
-rw-r--r--ext/curl/tests/curl_basic_011.phpt4
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_001.phpt4
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_002.phpt4
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_004.phpt4
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_005.phpt4
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_006.phpt2
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_007.phpt2
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_008.phpt25
-rw-r--r--ext/curl/tests/curl_error_basic.phpt18
-rw-r--r--ext/curl/tests/curl_file_deleted_before_curl_close.phpt38
-rw-r--r--ext/curl/tests/curl_multi_getcontent_basic3.phpt32
-rw-r--r--ext/curl/tests/curl_setopt_array_basic.phpt1
-rw-r--r--ext/curl/tests/curl_setopt_basic002.phpt8
-rw-r--r--ext/curl/tests/curl_setopt_basic003.phpt2
-rw-r--r--ext/curl/tests/curl_setopt_basic004.phpt2
-rw-r--r--ext/curl/tests/curl_version_error.phpt5
-rw-r--r--ext/curl/tests/curl_version_variation1.phpt7
-rw-r--r--ext/curl/tests/curl_writeheader_callback.phpt9
-rw-r--r--ext/curl/tests/responder/get.php8
-rw-r--r--ext/date/lib/interval.c3
-rw-r--r--ext/date/lib/parse_date.c180
-rw-r--r--ext/date/lib/parse_date.c.orig25222
-rw-r--r--ext/date/lib/parse_date.re180
-rw-r--r--ext/date/lib/parse_iso_intervals.c6
-rw-r--r--ext/date/lib/parse_iso_intervals.re4
-rw-r--r--ext/date/lib/timelib.h14
-rw-r--r--ext/date/lib/timezonedb.h1522
-rw-r--r--ext/date/lib/tm2unixtime.c18
-rw-r--r--ext/date/lib/unixtime2tm.c6
-rw-r--r--ext/date/php_date.c105
-rw-r--r--ext/date/php_date.h6
-rw-r--r--ext/date/tests/DateInterval_format_a.phpt3
-rw-r--r--ext/date/tests/DateTime_add-fall-type2-type2.phpt42
-rw-r--r--ext/date/tests/DateTime_add-spring-type2-type2.phpt22
-rw-r--r--ext/date/tests/DateTime_data-dates.inc2
-rw-r--r--ext/date/tests/DateTime_data-february.inc9
-rw-r--r--ext/date/tests/DateTime_data-spring-type2-type2.inc8
-rw-r--r--ext/date/tests/DateTime_data-spring-type2-type3.inc8
-rw-r--r--ext/date/tests/DateTime_data-spring-type3-type2.inc8
-rw-r--r--ext/date/tests/DateTime_data-spring-type3-type3.inc8
-rw-r--r--ext/date/tests/DateTime_days-spring-type2-type2.phpt2
-rw-r--r--ext/date/tests/DateTime_days-spring-type2-type3.phpt2
-rw-r--r--ext/date/tests/DateTime_days-spring-type3-type2.phpt2
-rw-r--r--ext/date/tests/DateTime_days-spring-type3-type3.phpt2
-rw-r--r--ext/date/tests/DateTime_diff-fall-type2-type2.phpt6
-rw-r--r--ext/date/tests/DateTime_diff-spring-type2-type2.phpt10
-rw-r--r--ext/date/tests/DateTime_sub-dates.phpt4
-rw-r--r--ext/date/tests/DateTime_sub-fall-type2-type2.phpt42
-rw-r--r--ext/date/tests/DateTime_sub-february.phpt18
-rw-r--r--ext/date/tests/DateTime_sub-spring-type2-type2.phpt22
-rw-r--r--ext/date/tests/bug13142.phpt3
-rw-r--r--ext/date/tests/bug27780.phpt5
-rw-r--r--ext/date/tests/bug28088.phpt4
-rw-r--r--ext/date/tests/bug32555.phpt5
-rw-r--r--ext/date/tests/bug33415-2.phpt48
-rw-r--r--ext/date/tests/bug33532.phpt5
-rw-r--r--ext/date/tests/bug48476.phpt33
-rw-r--r--ext/date/tests/bug48678.phpt10
-rw-r--r--ext/date/tests/bug50392.phpt2
-rw-r--r--ext/date/tests/bug51096.phpt2
-rw-r--r--ext/date/tests/bug51866.phpt161
-rw-r--r--ext/date/tests/bug51994.phpt3
-rw-r--r--ext/date/tests/bug52062-64bit.phpt27
-rw-r--r--ext/date/tests/bug52062.phpt27
-rw-r--r--ext/date/tests/bug52113.phpt102
-rw-r--r--ext/date/tests/bug53437.phpt28
-rw-r--r--ext/date/tests/bug53502.phpt13
-rw-r--r--ext/date/tests/bug54597.phpt18
-rw-r--r--ext/date/tests/bug54851.phpt57
-rwxr-xr-xext/date/tests/bug55253.phpt4
-rw-r--r--ext/date/tests/bug60236.phpt22
-rw-r--r--ext/date/tests/date.phpt4
-rw-r--r--ext/date/tests/date_default_timezone_set-1.phpt4
-rw-r--r--ext/date/tests/gmstrftime_variation22.phpt13
-rw-r--r--ext/date/tests/mktime-2.phpt4
-rw-r--r--ext/date/tests/rfc-datetime_and_daylight_saving_time-type1.phpt380
-rw-r--r--ext/date/tests/rfc-datetime_and_daylight_saving_time-type2.phpt380
-rw-r--r--ext/date/tests/rfc-datetime_and_daylight_saving_time-type3.phpt399
-rw-r--r--ext/date/tests/strftime_variation22.phpt13
-rw-r--r--ext/date/tests/timezone-configuration.phpt4
-rw-r--r--ext/dba/dba.c4
-rw-r--r--ext/dba/dba_cdb.c4
-rwxr-xr-xext/dba/dba_db1.c4
-rw-r--r--ext/dba/dba_db2.c4
-rw-r--r--ext/dba/dba_db3.c4
-rw-r--r--ext/dba/dba_db4.c4
-rw-r--r--ext/dba/dba_dbm.c4
-rw-r--r--ext/dba/dba_flatfile.c4
-rw-r--r--ext/dba/dba_gdbm.c4
-rw-r--r--ext/dba/dba_inifile.c4
-rw-r--r--ext/dba/dba_ndbm.c4
-rwxr-xr-xext/dba/dba_qdbm.c4
-rw-r--r--ext/dba/php_dba.h4
-rw-r--r--ext/dom/attr.c4
-rw-r--r--ext/dom/cdatasection.c4
-rw-r--r--ext/dom/characterdata.c4
-rw-r--r--ext/dom/comment.c4
-rw-r--r--ext/dom/document.c4
-rw-r--r--ext/dom/documentfragment.c4
-rw-r--r--ext/dom/documenttype.c4
-rw-r--r--ext/dom/dom_ce.h4
-rw-r--r--ext/dom/dom_fe.h4
-rw-r--r--ext/dom/dom_iterators.c4
-rw-r--r--ext/dom/dom_properties.h4
-rw-r--r--ext/dom/domconfiguration.c4
-rw-r--r--ext/dom/domerror.c4
-rw-r--r--ext/dom/domerrorhandler.c4
-rw-r--r--ext/dom/domexception.c4
-rw-r--r--ext/dom/domimplementation.c4
-rw-r--r--ext/dom/domimplementationlist.c4
-rw-r--r--ext/dom/domimplementationsource.c4
-rw-r--r--ext/dom/domlocator.c4
-rw-r--r--ext/dom/domstringlist.c4
-rw-r--r--ext/dom/element.c4
-rw-r--r--ext/dom/entity.c4
-rw-r--r--ext/dom/entityreference.c4
-rw-r--r--ext/dom/namednodemap.c4
-rw-r--r--ext/dom/namelist.c4
-rw-r--r--ext/dom/node.c4
-rw-r--r--ext/dom/nodelist.c4
-rw-r--r--ext/dom/notation.c4
-rw-r--r--ext/dom/php_dom.c4
-rw-r--r--ext/dom/php_dom.h4
-rw-r--r--ext/dom/processinginstruction.c4
-rw-r--r--ext/dom/string_extend.c4
-rw-r--r--ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt6
-rw-r--r--ext/dom/tests/dom_xinclude.phpt8
-rw-r--r--ext/dom/text.c4
-rw-r--r--ext/dom/typeinfo.c4
-rw-r--r--ext/dom/userdatahandler.c4
-rw-r--r--ext/dom/xml_common.h4
-rw-r--r--ext/dom/xpath.c4
-rwxr-xr-xext/enchant/enchant.c6
-rw-r--r--ext/enchant/php_enchant.h4
-rw-r--r--ext/ereg/ereg.c7
-rw-r--r--ext/ereg/php_ereg.h4
-rw-r--r--ext/ereg/php_regex.h4
-rw-r--r--ext/ereg/regex/regerror.c8
-rw-r--r--ext/exif/exif.c10
-rw-r--r--ext/exif/php_exif.h4
-rw-r--r--ext/exif/tests/bug60150.jpgbin0 -> 121856 bytes
-rwxr-xr-xext/exif/tests/bug60150.phpt21
-rw-r--r--ext/fileinfo/fileinfo.c14
-rw-r--r--ext/fileinfo/libmagic.patch180
-rw-r--r--ext/fileinfo/libmagic/apprentice.c2
-rw-r--r--ext/fileinfo/libmagic/cdf_time.c2
-rw-r--r--ext/fileinfo/libmagic/print.c1
-rw-r--r--ext/fileinfo/php_fileinfo.h4
-rw-r--r--ext/fileinfo/tests/finfo_open_002.phpt17
-rw-r--r--ext/filter/callback_filter.c4
-rw-r--r--ext/filter/filter.c6
-rw-r--r--ext/filter/filter_private.h4
-rw-r--r--ext/filter/logical_filters.c6
-rw-r--r--ext/filter/php_filter.h4
-rw-r--r--ext/filter/sanitizing_filters.c4
-rw-r--r--ext/filter/tests/005.phpt2
-rw-r--r--ext/filter/tests/bug39763.phpt4
-rw-r--r--ext/filter/tests/bug44779.phpt2
-rw-r--r--ext/filter/tests/bug46973.phpt2
-rw-r--r--ext/filter/tests/bug47435.phpt2
-rw-r--r--ext/filter/tests/bug47745.phpt2
-rw-r--r--ext/filter/tests/bug48762.phpt2
-rw-r--r--ext/filter/tests/bug50158.phpt2
-rw-r--r--ext/filter/tests/bug55478.phpt11
-rw-r--r--ext/ftp/ftp.c7
-rw-r--r--ext/ftp/ftp.h4
-rw-r--r--ext/ftp/php_ftp.c4
-rw-r--r--ext/ftp/php_ftp.h4
-rw-r--r--ext/gd/gd.c4
-rw-r--r--ext/gd/gd_ctx.c4
-rw-r--r--ext/gd/libgd/gd.c21
-rw-r--r--ext/gd/php_gd.h4
-rw-r--r--ext/gd/tests/bug60160.phpt26
-rw-r--r--ext/gd/tests/image_type_to_mime_type_variation3.phpt76
-rw-r--r--ext/gettext/gettext.c4
-rw-r--r--ext/gettext/php_gettext.h4
-rw-r--r--ext/gmp/gmp.c2
-rw-r--r--ext/gmp/php_gmp.h2
-rw-r--r--ext/hash/hash.c4
-rw-r--r--ext/hash/hash_adler32.c4
-rw-r--r--ext/hash/hash_crc32.c4
-rw-r--r--ext/hash/hash_gost.c4
-rw-r--r--ext/hash/hash_haval.c4
-rw-r--r--ext/hash/hash_md.c4
-rw-r--r--ext/hash/hash_ripemd.c4
-rw-r--r--ext/hash/hash_salsa.c4
-rw-r--r--ext/hash/hash_sha.c4
-rw-r--r--ext/hash/hash_snefru.c4
-rw-r--r--ext/hash/hash_tiger.c4
-rw-r--r--ext/hash/hash_whirlpool.c4
-rw-r--r--ext/hash/php_hash.h4
-rw-r--r--ext/hash/php_hash_adler32.h4
-rw-r--r--ext/hash/php_hash_crc32.h4
-rw-r--r--ext/hash/php_hash_crc32_tables.h4
-rw-r--r--ext/hash/php_hash_gost.h4
-rw-r--r--ext/hash/php_hash_haval.h4
-rw-r--r--ext/hash/php_hash_md.h4
-rw-r--r--ext/hash/php_hash_ripemd.h4
-rw-r--r--ext/hash/php_hash_salsa.h4
-rw-r--r--ext/hash/php_hash_sha.h4
-rw-r--r--ext/hash/php_hash_snefru.h4
-rw-r--r--ext/hash/php_hash_snefru_tables.h4
-rw-r--r--ext/hash/php_hash_tiger.h4
-rw-r--r--ext/hash/php_hash_tiger_tables.h4
-rw-r--r--ext/hash/php_hash_types.h4
-rw-r--r--ext/hash/php_hash_whirlpool.h4
-rw-r--r--ext/hash/php_hash_whirlpool_tables.h4
-rw-r--r--ext/hash/tests/hash_copy_001.phpt2
-rw-r--r--ext/hash/tests/hash_copy_002.phpt2
-rw-r--r--ext/iconv/iconv.c4
-rw-r--r--ext/iconv/php_iconv.h4
-rw-r--r--ext/iconv/tests/bug52941.phpt14
-rw-r--r--ext/iconv/tests/iconv_stream_filter.phpt2
-rw-r--r--ext/imap/php_imap.c4
-rw-r--r--ext/imap/php_imap.h4
-rw-r--r--ext/imap/tests/imap_utf8_to_mutf7_basic.phpt4
-rw-r--r--ext/interbase/ibase_blobs.c4
-rw-r--r--ext/interbase/ibase_events.c4
-rw-r--r--ext/interbase/ibase_query.c4
-rw-r--r--ext/interbase/ibase_service.c4
-rw-r--r--ext/interbase/interbase.c4
-rwxr-xr-xext/interbase/php_ibase_includes.h4
-rw-r--r--ext/interbase/php_ibase_udf.c4
-rw-r--r--ext/interbase/php_interbase.h4
-rw-r--r--ext/interbase/tests/003.phpt26
-rw-r--r--ext/interbase/tests/006.phpt4
-rwxr-xr-xext/interbase/tests/skipif.inc8
-rwxr-xr-xext/intl/collator/collator_compare.c8
-rwxr-xr-xext/intl/collator/collator_locale.c9
-rwxr-xr-xext/intl/collator/collator_sort.c23
-rwxr-xr-xext/intl/formatter/formatter_attr.c6
-rwxr-xr-xext/intl/locale/locale_methods.c22
-rw-r--r--ext/intl/tests/bug60192-compare.phpt19
-rw-r--r--ext/intl/tests/bug60192-getlocale.phpt20
-rw-r--r--ext/intl/tests/bug60192-getsortkey.phpt20
-rw-r--r--ext/intl/tests/bug60192-sort.phpt21
-rw-r--r--ext/intl/tests/bug60192-sortwithsortkeys.phpt21
-rwxr-xr-xext/intl/tests/dateformat_parse.phpt99
-rwxr-xr-xext/intl/tests/dateformat_parse_timestamp_parsepos.phpt119
-rwxr-xr-xext/intl/tests/locale_get_display_region.phpt12
-rwxr-xr-xext/intl/tests/locale_get_region.phpt12
-rwxr-xr-xext/intl/tests/locale_parse_locale.phpt143
-rw-r--r--ext/intl/tests/resourcebundle_arrayaccess.phpt2
-rw-r--r--ext/intl/tests/resourcebundle_individual.phpt2
-rw-r--r--ext/intl/tests/resourcebundle_iterator.phpt2
-rw-r--r--ext/json/json.c6
-rw-r--r--ext/json/php_json.h4
-rw-r--r--ext/json/tests/bug55543.phpt13
-rw-r--r--ext/ldap/ldap.c6
-rw-r--r--ext/ldap/php_ldap.h4
-rw-r--r--ext/libxml/libxml.c10
-rw-r--r--ext/libxml/php_libxml.h4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c50
-rw-r--r--ext/mbstring/mb_gpc.c4
-rw-r--r--ext/mbstring/mbstring.c6
-rw-r--r--ext/mbstring/mbstring.h4
-rw-r--r--ext/mbstring/oniguruma/regparse.c1
-rw-r--r--ext/mbstring/php_mbregex.c13
-rw-r--r--ext/mbstring/php_mbregex.h4
-rw-r--r--ext/mbstring/php_unicode.c2
-rw-r--r--ext/mbstring/php_unicode.h2
-rw-r--r--ext/mbstring/tests/bug40685.phpt20
-rw-r--r--ext/mbstring/tests/bug52931.phpt2
-rw-r--r--ext/mbstring/tests/empty_pattern.phpt18
-rw-r--r--ext/mcrypt/mcrypt.c4
-rw-r--r--ext/mcrypt/mcrypt_filter.c4
-rw-r--r--ext/mcrypt/php_mcrypt.h4
-rw-r--r--ext/mcrypt/php_mcrypt_filter.h4
-rw-r--r--ext/mcrypt/tests/bug43143.phpt3
-rw-r--r--ext/mcrypt/tests/bug46010.phpt2
-rw-r--r--ext/mcrypt/tests/bug55169.phpt5
-rw-r--r--ext/mssql/php_mssql.c4
-rw-r--r--ext/mssql/php_mssql.h9
-rw-r--r--ext/mysql/php_mysql.c8
-rw-r--r--ext/mysql/php_mysql.h4
-rw-r--r--ext/mysql/php_mysql_structs.h4
-rwxr-xr-xext/mysql/tests/001.phpt5
-rw-r--r--ext/mysql/tests/bug53649.phpt36
-rw-r--r--ext/mysql/tests/bug55473.phpt79
-rwxr-xr-xext/mysql/tests/connect.inc5
-rw-r--r--ext/mysql/tests/mysql_affected_rows.phpt2
-rw-r--r--ext/mysql/tests/mysql_connect.phpt5
-rw-r--r--ext/mysql/tests/mysql_insert_id.phpt2
-rw-r--r--ext/mysql/tests/mysql_max_links.phpt1
-rw-r--r--ext/mysql/tests/mysql_num_rows.phpt17
-rwxr-xr-xext/mysql/tests/mysql_pconn_kill.phpt4
-rw-r--r--ext/mysql/tests/mysql_query_load_data_openbasedir.phpt13
-rw-r--r--ext/mysql/tests/mysql_sql_safe_mode.phpt1
-rw-r--r--ext/mysql/tests/setupdefault.inc10
-rwxr-xr-xext/mysql/tests/skipifdefaultconnectfailure.inc11
-rw-r--r--ext/mysqli/mysqli.c4
-rw-r--r--ext/mysqli/mysqli_api.c13
-rw-r--r--ext/mysqli/mysqli_driver.c4
-rw-r--r--ext/mysqli/mysqli_embedded.c2
-rw-r--r--ext/mysqli/mysqli_exception.c2
-rw-r--r--ext/mysqli/mysqli_fe.c4
-rw-r--r--ext/mysqli/mysqli_fe.h2
-rw-r--r--ext/mysqli/mysqli_libmysql.h3
-rw-r--r--ext/mysqli/mysqli_mysqlnd.h1
-rw-r--r--ext/mysqli/mysqli_nonapi.c4
-rw-r--r--ext/mysqli/mysqli_priv.h2
-rw-r--r--ext/mysqli/mysqli_prop.c36
-rw-r--r--ext/mysqli/mysqli_report.c4
-rw-r--r--ext/mysqli/mysqli_report.h4
-rw-r--r--ext/mysqli/mysqli_warning.c2
-rw-r--r--ext/mysqli/php_mysqli.h4
-rw-r--r--ext/mysqli/php_mysqli_structs.h4
-rw-r--r--ext/mysqli/tests/004.phpt17
-rw-r--r--ext/mysqli/tests/014.phpt16
-rw-r--r--ext/mysqli/tests/015.phpt16
-rw-r--r--ext/mysqli/tests/061.phpt10
-rw-r--r--ext/mysqli/tests/071.phpt6
-rw-r--r--ext/mysqli/tests/072.phpt2
-rw-r--r--ext/mysqli/tests/bug34810.phpt4
-rw-r--r--ext/mysqli/tests/bug45289.phpt2
-rw-r--r--ext/mysqli/tests/bug49442.phpt11
-rw-r--r--ext/mysqli/tests/bug51647.phpt29
-rw-r--r--ext/mysqli/tests/bug53503.phpt25
-rw-r--r--ext/mysqli/tests/bug55283.phpt32
-rw-r--r--ext/mysqli/tests/bug55582.phpt41
-rw-r--r--ext/mysqli/tests/bug55653.phpt36
-rw-r--r--ext/mysqli/tests/bug55859.phpt20
-rw-r--r--ext/mysqli/tests/connect.inc47
-rw-r--r--ext/mysqli/tests/local_infile_tools.inc57
-rw-r--r--ext/mysqli/tests/mysqli_autocommit.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_autocommit_oo.phpt17
-rw-r--r--ext/mysqli/tests/mysqli_change_user_rollback.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_character_set.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_interface.phpt123
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt49
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt9
-rw-r--r--ext/mysqli/tests/mysqli_commit.phpt22
-rw-r--r--ext/mysqli/tests/mysqli_commit_oo.phpt23
-rw-r--r--ext/mysqli/tests/mysqli_connect.phpt9
-rw-r--r--ext/mysqli/tests/mysqli_connect_oo.phpt9
-rw-r--r--ext/mysqli/tests/mysqli_connect_oo_defaults.phpt7
-rw-r--r--ext/mysqli/tests/mysqli_constants.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_debug_append.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_debug_control_string.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_debug_ini.phpt1
-rw-r--r--ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_explain_metadata.phpt3
-rw-r--r--ext/mysqli/tests/mysqli_fetch_field_types.phpt4
-rw-r--r--ext/mysqli/tests/mysqli_fork.phpt19
-rw-r--r--ext/mysqli/tests/mysqli_kill.phpt15
-rw-r--r--ext/mysqli/tests/mysqli_last_insert_id.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_poll_kill.phpt11
-rw-r--r--ext/mysqli/tests/mysqli_poll_reference.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_query_local_infile_large.phpt10
-rw-r--r--ext/mysqli/tests/mysqli_real_connect.phpt42
-rw-r--r--ext/mysqli/tests/mysqli_report.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_report_wo_ps.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_rollback.phpt20
-rw-r--r--ext/mysqli/tests/mysqli_select_db.phpt12
-rw-r--r--ext/mysqli/tests/mysqli_set_charset.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_default.phpt10
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt13
-rwxr-xr-xext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt21
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_stmt_execute_stored_proc_next_result.phpt8
-rw-r--r--ext/mysqli/tests/mysqli_stmt_execute_stored_proc_out.phpt8
-rw-r--r--ext/mysqli/tests/mysqli_stmt_num_rows.phpt12
-rw-r--r--ext/mysqlnd/config9.m413
-rw-r--r--ext/mysqlnd/mysqlnd.c289
-rw-r--r--ext/mysqlnd/mysqlnd.h6
-rw-r--r--ext/mysqlnd/mysqlnd_block_alloc.c4
-rw-r--r--ext/mysqlnd/mysqlnd_block_alloc.h4
-rw-r--r--ext/mysqlnd/mysqlnd_charset.c12
-rw-r--r--ext/mysqlnd/mysqlnd_charset.h2
-rw-r--r--ext/mysqlnd/mysqlnd_debug.c4
-rw-r--r--ext/mysqlnd/mysqlnd_debug.h4
-rw-r--r--ext/mysqlnd/mysqlnd_enum_n_def.h4
-rw-r--r--ext/mysqlnd/mysqlnd_libmysql_compat.h2
-rw-r--r--ext/mysqlnd/mysqlnd_loaddata.c2
-rw-r--r--ext/mysqlnd/mysqlnd_net.c21
-rw-r--r--ext/mysqlnd/mysqlnd_net.h2
-rw-r--r--ext/mysqlnd/mysqlnd_priv.h11
-rw-r--r--ext/mysqlnd/mysqlnd_ps.c14
-rw-r--r--ext/mysqlnd/mysqlnd_ps_codec.c4
-rw-r--r--ext/mysqlnd/mysqlnd_result.c9
-rw-r--r--ext/mysqlnd/mysqlnd_result.h4
-rw-r--r--ext/mysqlnd/mysqlnd_result_meta.c4
-rw-r--r--ext/mysqlnd/mysqlnd_result_meta.h4
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.c4
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.h4
-rw-r--r--ext/mysqlnd/mysqlnd_structs.h6
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.c2
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.h4
-rw-r--r--ext/mysqlnd/php_mysqlnd.c9
-rw-r--r--ext/mysqlnd/php_mysqlnd.h4
-rw-r--r--ext/oci8/oci8.c56
-rw-r--r--ext/oci8/oci8_collection.c4
-rw-r--r--ext/oci8/oci8_interface.c4
-rw-r--r--ext/oci8/oci8_lob.c4
-rw-r--r--ext/oci8/oci8_statement.c4
-rw-r--r--ext/oci8/package.xml34
-rw-r--r--ext/oci8/php_oci8.h6
-rw-r--r--ext/oci8/php_oci8_int.h4
-rw-r--r--ext/oci8/tests/array_bind_003.phpt4
-rw-r--r--ext/oci8/tests/array_bind_004.phpt4
-rw-r--r--ext/oci8/tests/array_bind_bdouble.phpt21
-rw-r--r--ext/oci8/tests/array_bind_bfloat.phpt21
-rw-r--r--ext/oci8/tests/array_bind_uin.phpt21
-rw-r--r--ext/oci8/tests/bind_char_1.phpt10
-rw-r--r--ext/oci8/tests/bind_char_1_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bind_char_2.phpt10
-rw-r--r--ext/oci8/tests/bind_char_2_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bind_char_3.phpt10
-rw-r--r--ext/oci8/tests/bind_char_3_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bind_char_4.phpt10
-rw-r--r--ext/oci8/tests/bind_char_4_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bug27303_1.phpt10
-rw-r--r--ext/oci8/tests/bug27303_1_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bug27303_2.phpt10
-rw-r--r--ext/oci8/tests/bug27303_2_11gR1.phpt11
-rw-r--r--ext/oci8/tests/bug27303_4.phpt20
-rw-r--r--ext/oci8/tests/bug27303_4_11gR1.phpt21
-rw-r--r--ext/oci8/tests/bug42496_1.phpt16
-rw-r--r--ext/oci8/tests/bug42496_2.phpt16
-rw-r--r--ext/oci8/tests/bug43497.phpt2
-rw-r--r--ext/oci8/tests/bug43497_92.phpt2
-rw-r--r--ext/oci8/tests/bug44113.phpt2
-rw-r--r--ext/oci8/tests/bug47281.phpt7
-rw-r--r--ext/oci8/tests/conn_attr_4.phpt2
-rw-r--r--ext/oci8/tests/details.inc11
-rw-r--r--ext/oci8/tests/error2.phpt2
-rw-r--r--ext/oci8/tests/error3.phpt40
-rw-r--r--ext/oci8/tests/extauth_01.phpt2
-rw-r--r--ext/oci8/tests/extauth_02.phpt3
-rw-r--r--ext/oci8/tests/extauth_03.phpt3
-rw-r--r--ext/oci8/tests/lob_043.phpt2
-rw-r--r--ext/oci8/tests/password_new.phpt4
-rw-r--r--ext/oci8/tests/password_old.phpt4
-rw-r--r--ext/oci8/tests/pecl_bug10194.phpt2
-rw-r--r--ext/oci8/tests/pecl_bug10194_blob.phpt2
-rw-r--r--ext/oci8/tests/pecl_bug10194_blob_64.phpt2
-rw-r--r--ext/oci8/tests/pecl_bug16035.phpt3
-rw-r--r--ext/oci8/tests/pecl_bug16842.phpt3
-rw-r--r--ext/odbc/birdstep.c4
-rw-r--r--ext/odbc/php_birdstep.h4
-rw-r--r--ext/odbc/php_odbc.c4
-rw-r--r--ext/odbc/php_odbc.h4
-rw-r--r--ext/odbc/php_odbc_includes.h4
-rw-r--r--ext/openssl/openssl.c8
-rw-r--r--ext/openssl/php_openssl.h4
-rw-r--r--ext/openssl/tests/bug36732.phpt3
-rw-r--r--ext/openssl/tests/bug54992.phpt4
-rw-r--r--ext/openssl/tests/openssl.cnf43
-rw-r--r--ext/openssl/tests/openssl_encrypt_crash.phpt13
-rw-r--r--ext/openssl/xp_ssl.c6
-rw-r--r--ext/pcntl/config.m44
-rwxr-xr-xext/pcntl/pcntl.c4
-rw-r--r--ext/pcntl/php_pcntl.h4
-rw-r--r--ext/pcntl/php_signal.c4
-rw-r--r--ext/pcntl/php_signal.h4
-rw-r--r--ext/pcre/php_pcre.c4
-rw-r--r--ext/pcre/php_pcre.h4
-rw-r--r--ext/pcre/tests/006.phpt2
-rwxr-xr-xext/pdo/pdo.c4
-rwxr-xr-xext/pdo/pdo_dbh.c4
-rw-r--r--ext/pdo/pdo_sql_parser.c4
-rw-r--r--ext/pdo/pdo_sql_parser.c.orig876
-rw-r--r--ext/pdo/pdo_sql_parser.re4
-rw-r--r--ext/pdo/pdo_sqlstate.c4
-rwxr-xr-xext/pdo/pdo_stmt.c12
-rwxr-xr-xext/pdo/php_pdo.h4
-rwxr-xr-xext/pdo/php_pdo_driver.h4
-rwxr-xr-xext/pdo/php_pdo_int.h4
-rw-r--r--ext/pdo/tests/bug_34630.phpt2
-rw-r--r--ext/pdo/tests/bug_36798.phpt6
-rw-r--r--ext/pdo/tests/bug_43130.phpt1
-rw-r--r--ext/pdo/tests/bug_43139.phpt2
-rw-r--r--ext/pdo/tests/bug_44861.phpt4
-rw-r--r--ext/pdo/tests/pdo_016.phpt1
-rwxr-xr-xext/pdo/tests/pdo_016a.phpt1
-rw-r--r--ext/pdo/tests/pdo_036.phpt2
-rw-r--r--ext/pdo/tests/pdorow.phpt2
-rw-r--r--ext/pdo_dblib/dblib_driver.c4
-rw-r--r--ext/pdo_dblib/dblib_stmt.c4
-rw-r--r--ext/pdo_dblib/pdo_dblib.c4
-rw-r--r--ext/pdo_dblib/php_pdo_dblib.h4
-rw-r--r--ext/pdo_dblib/php_pdo_dblib_int.h4
-rw-r--r--ext/pdo_firebird/firebird_driver.c11
-rw-r--r--ext/pdo_firebird/firebird_statement.c19
-rw-r--r--ext/pdo_firebird/pdo_firebird.c4
-rw-r--r--ext/pdo_firebird/php_pdo_firebird.h4
-rw-r--r--ext/pdo_firebird/php_pdo_firebird_int.h4
-rw-r--r--ext/pdo_firebird/tests/bug_47415.phpt42
-rw-r--r--ext/pdo_firebird/tests/bug_48877.phpt42
-rw-r--r--ext/pdo_firebird/tests/bug_53280.phpt63
-rw-r--r--ext/pdo_firebird/tests/rowCount.phpt3
-rw-r--r--ext/pdo_mysql/get_error_codes.php4
-rwxr-xr-xext/pdo_mysql/mysql_driver.c55
-rwxr-xr-xext/pdo_mysql/mysql_statement.c14
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c26
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql.h4
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql_int.h4
-rw-r--r--ext/pdo_mysql/php_pdo_mysql_sqlstate.h774
-rw-r--r--ext/pdo_mysql/tests/mysql_pdo_test.inc11
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct.phpt4
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt2
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_interface.phpt3
-rwxr-xr-xext/pdo_oci/oci_driver.c71
-rwxr-xr-xext/pdo_oci/oci_statement.c4
-rwxr-xr-xext/pdo_oci/pdo_oci.c4
-rwxr-xr-xext/pdo_oci/php_pdo_oci.h4
-rwxr-xr-xext/pdo_oci/php_pdo_oci_int.h4
-rw-r--r--ext/pdo_oci/tests/bug46274.phpt2
-rw-r--r--ext/pdo_oci/tests/bug46274_2.phpt2
-rw-r--r--ext/pdo_oci/tests/common.phpt4
-rw-r--r--ext/pdo_oci/tests/pdo_oci_fread_1.phpt1
-rw-r--r--ext/pdo_oci/tests/pdo_oci_stream_1.phpt1
-rwxr-xr-xext/pdo_odbc/odbc_driver.c4
-rwxr-xr-xext/pdo_odbc/odbc_stmt.c4
-rwxr-xr-xext/pdo_odbc/pdo_odbc.c4
-rw-r--r--ext/pdo_odbc/php_pdo_odbc.h4
-rwxr-xr-xext/pdo_odbc/php_pdo_odbc_int.h4
-rw-r--r--ext/pdo_pgsql/pdo_pgsql.c6
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c4
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c4
-rw-r--r--ext/pdo_pgsql/php_pdo_pgsql.h4
-rw-r--r--ext/pdo_pgsql/php_pdo_pgsql_int.h4
-rw-r--r--ext/pdo_sqlite/pdo_sqlite.c4
-rw-r--r--ext/pdo_sqlite/php_pdo_sqlite.h4
-rw-r--r--ext/pdo_sqlite/php_pdo_sqlite_int.h4
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c4
-rw-r--r--ext/pdo_sqlite/sqlite_statement.c4
-rw-r--r--ext/pgsql/pgsql.c22
-rw-r--r--ext/pgsql/php_pgsql.h4
-rw-r--r--ext/pgsql/tests/09notice.phpt13
-rwxr-xr-xext/pgsql/tests/22pg_fetch_object.phpt2
-rwxr-xr-xext/pgsql/tests/80_bug32223.phpt7
-rwxr-xr-xext/pgsql/tests/80_bug32223b.phpt7
-rw-r--r--ext/pgsql/tests/bug60244.phpt57
-rw-r--r--ext/pgsql/tests/lcmess.inc21
-rw-r--r--ext/pgsql/tests/skipif.inc1
-rw-r--r--ext/phar/dirstream.c2
-rw-r--r--ext/phar/dirstream.h4
-rw-r--r--ext/phar/func_interceptors.c4
-rw-r--r--ext/phar/func_interceptors.h4
-rw-r--r--ext/phar/phar.c16
-rw-r--r--ext/phar/phar_internal.h4
-rw-r--r--ext/phar/phar_object.c4
-rw-r--r--ext/phar/phar_path_check.c4
-rw-r--r--ext/phar/phar_path_check.re4
-rw-r--r--ext/phar/pharzip.h4
-rw-r--r--ext/phar/php_phar.h4
-rw-r--r--ext/phar/stream.c2
-rw-r--r--ext/phar/stream.h4
-rw-r--r--ext/phar/stub.h4
-rw-r--r--ext/phar/tar.c2
-rw-r--r--ext/phar/tar.h2
-rw-r--r--ext/phar/tests/bug53872.phpt28
-rw-r--r--ext/phar/tests/bug53872/first.txt1
-rw-r--r--ext/phar/tests/bug53872/second.txt0
-rw-r--r--ext/phar/tests/bug53872/third.txt1
-rw-r--r--ext/phar/tests/bug60164.phpt21
-rw-r--r--ext/phar/tests/bug60261.phpt19
-rw-r--r--ext/phar/tests/files/stuboflength1041.pharbin0 -> 1168 bytes
-rw-r--r--ext/phar/tests/files/stuboflength1041.phar.inc42
-rw-r--r--ext/phar/tests/fopen_edgecases2.phpt2
-rw-r--r--ext/phar/tests/phar_commitwrite.phpt2
-rw-r--r--ext/phar/tests/phar_create_in_cwd.phpt2
-rw-r--r--ext/phar/tests/phar_gobyebye-win32.phpt48
-rw-r--r--ext/phar/tests/phar_gobyebye.phpt5
-rwxr-xr-xext/phar/tests/phar_oo_001.phpt4
-rw-r--r--ext/phar/util.c14
-rw-r--r--ext/phar/zip.c2
-rw-r--r--ext/posix/php_posix.h4
-rw-r--r--ext/posix/posix.c6
-rw-r--r--ext/posix/tests/posix_getpgid_error.phpt2
-rw-r--r--ext/posix/tests/posix_getpgid_variation.phpt2
-rw-r--r--ext/posix/tests/posix_ttyname_error.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation1.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation2.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation3.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation4.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation5.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation6.phpt6
-rw-r--r--ext/posix/tests/posix_ttyname_variation7.phpt6
-rw-r--r--ext/pspell/php_pspell.h4
-rw-r--r--ext/pspell/pspell.c4
-rw-r--r--ext/readline/php_readline.h4
-rw-r--r--ext/readline/readline.c4
-rw-r--r--ext/recode/php_recode.h4
-rw-r--r--ext/recode/recode.c6
-rw-r--r--ext/reflection/php_reflection.c10
-rw-r--r--ext/reflection/php_reflection.h4
-rw-r--r--ext/reflection/tests/bug60367.phpt26
-rw-r--r--ext/session/mod_files.c4
-rw-r--r--ext/session/mod_files.h4
-rw-r--r--ext/session/mod_mm.c6
-rw-r--r--ext/session/mod_mm.h4
-rw-r--r--ext/session/mod_user.c4
-rw-r--r--ext/session/mod_user.h4
-rw-r--r--ext/session/php_session.h4
-rw-r--r--ext/session/session.c6
-rw-r--r--ext/session/tests/014.phpt12
-rw-r--r--ext/session/tests/015.phpt1
-rw-r--r--ext/session/tests/018.phpt1
-rw-r--r--ext/session/tests/020.phpt1
-rw-r--r--ext/session/tests/021.phpt1
-rw-r--r--ext/session/tests/bug36459.phpt83
-rw-r--r--ext/session/tests/bug41600.phpt1
-rw-r--r--ext/session/tests/bug60634.phpt46
-rw-r--r--ext/session/tests/bug60634_error_1.phpt49
-rw-r--r--ext/session/tests/bug60634_error_2.phpt49
-rw-r--r--ext/session/tests/bug60634_error_3.phpt48
-rw-r--r--ext/session/tests/bug60634_error_4.phpt48
-rw-r--r--ext/session/tests/bug60634_error_5.phpt49
-rw-r--r--ext/session/tests/session_save_path_variation4.phpt5
-rw-r--r--ext/shmop/php_shmop.h2
-rw-r--r--ext/shmop/shmop.c4
-rw-r--r--ext/simplexml/php_simplexml.h4
-rwxr-xr-xext/simplexml/php_simplexml_exports.h4
-rw-r--r--ext/simplexml/simplexml.c11
-rwxr-xr-xext/simplexml/sxe.c4
-rwxr-xr-xext/simplexml/sxe.h4
-rw-r--r--ext/simplexml/tests/008.phpt9
-rw-r--r--ext/simplexml/tests/bug37076.phpt2
-rw-r--r--ext/simplexml/tests/bug37076_1.phpt2
-rw-r--r--ext/simplexml/tests/bug51615.phpt4
-rw-r--r--ext/snmp/php_snmp.h4
-rw-r--r--ext/snmp/snmp.c4
-rw-r--r--ext/soap/php_encoding.c4
-rw-r--r--ext/soap/php_encoding.h4
-rw-r--r--ext/soap/php_http.c6
-rw-r--r--ext/soap/php_http.h4
-rw-r--r--ext/soap/php_packet_soap.c4
-rw-r--r--ext/soap/php_packet_soap.h4
-rw-r--r--ext/soap/php_schema.c14
-rw-r--r--ext/soap/php_schema.h4
-rw-r--r--ext/soap/php_sdl.c4
-rw-r--r--ext/soap/php_sdl.h4
-rw-r--r--ext/soap/php_soap.h4
-rw-r--r--ext/soap/php_xml.c4
-rw-r--r--ext/soap/php_xml.h4
-rw-r--r--ext/soap/soap.c15
-rw-r--r--ext/soap/tests/bugs/bug44686.phpt14
-rw-r--r--ext/soap/tests/bugs/bug44686.wsdl193
-rw-r--r--ext/soap/tests/bugs/bug54911.phpt22
-rw-r--r--ext/soap/tests/schema/schema064.phpt6
-rw-r--r--ext/sockets/php_sockets.h4
-rw-r--r--ext/sockets/sockets.c8
-rw-r--r--ext/sockets/tests/socket_strerror.phpt6
-rw-r--r--ext/sockets/unix_socket_constants.h4
-rw-r--r--ext/sockets/win32_socket_constants.h4
-rwxr-xr-xext/spl/php_spl.c5
-rwxr-xr-xext/spl/php_spl.h2
-rwxr-xr-xext/spl/spl_array.c15
-rwxr-xr-xext/spl/spl_array.h4
-rwxr-xr-xext/spl/spl_directory.c9
-rwxr-xr-xext/spl/spl_directory.h6
-rw-r--r--ext/spl/spl_dllist.c4
-rw-r--r--ext/spl/spl_dllist.h4
-rwxr-xr-xext/spl/spl_engine.c2
-rwxr-xr-xext/spl/spl_engine.h4
-rwxr-xr-xext/spl/spl_exceptions.c4
-rwxr-xr-xext/spl/spl_exceptions.h4
-rw-r--r--ext/spl/spl_fixedarray.c4
-rw-r--r--ext/spl/spl_fixedarray.h4
-rwxr-xr-xext/spl/spl_functions.c4
-rwxr-xr-xext/spl/spl_functions.h4
-rw-r--r--ext/spl/spl_heap.c4
-rw-r--r--ext/spl/spl_heap.h4
-rwxr-xr-xext/spl/spl_iterators.c16
-rwxr-xr-xext/spl/spl_iterators.h4
-rwxr-xr-xext/spl/spl_observer.c4
-rwxr-xr-xext/spl/spl_observer.h4
-rw-r--r--ext/spl/tests/DirectoryIterator_by_reference.phpt4
-rw-r--r--ext/spl/tests/DirectoryIterator_getExtension_basic.phpt6
-rw-r--r--ext/spl/tests/DirectoryIterator_getGroup_basic.phpt19
-rw-r--r--ext/spl/tests/DirectoryIterator_getOwner_basic.phpt3
-rw-r--r--ext/spl/tests/SplFileInfo_getGroup_basic.phpt4
-rw-r--r--ext/spl/tests/SplFileInfo_getOwner_basic.phpt4
-rw-r--r--ext/spl/tests/bug53071.phpt53
-rw-r--r--ext/spl/tests/bug54304.phpt26
-rw-r--r--ext/spl/tests/bug54971.phpt4
-rwxr-xr-xext/spl/tests/bug60082.phpt21
-rw-r--r--ext/spl/tests/spl_autoload_call_basic.phpt18
-rw-r--r--ext/sqlite/libsqlite/src/parse.c2843
-rw-r--r--ext/sqlite/pdo_sqlite2.c4
-rw-r--r--ext/sqlite/php_sqlite.h4
-rw-r--r--ext/sqlite/sess_sqlite.c4
-rw-r--r--ext/sqlite/sqlite.c6
-rw-r--r--ext/sqlite3/php_sqlite3.h4
-rw-r--r--ext/sqlite3/php_sqlite3_structs.h4
-rw-r--r--ext/sqlite3/sqlite3.c4
-rw-r--r--ext/sqlite3/tests/bug53463.phpt2
-rw-r--r--ext/sqlite3/tests/sqlite3_15_open_error.phpt7
-rw-r--r--ext/sqlite3/tests/sqlite3_prepare_001.phpt2
-rw-r--r--ext/standard/array.c4
-rw-r--r--ext/standard/assert.c4
-rw-r--r--ext/standard/base64.c12
-rw-r--r--ext/standard/base64.h4
-rw-r--r--ext/standard/basic_functions.c21
-rw-r--r--ext/standard/basic_functions.h4
-rw-r--r--ext/standard/browscap.c4
-rw-r--r--ext/standard/crc32.c4
-rw-r--r--ext/standard/crc32.h4
-rw-r--r--ext/standard/credits.c4
-rw-r--r--ext/standard/credits.h4
-rw-r--r--ext/standard/crypt.c4
-rw-r--r--ext/standard/css.c4
-rw-r--r--ext/standard/css.h4
-rw-r--r--ext/standard/cyr_convert.c4
-rw-r--r--ext/standard/cyr_convert.h4
-rw-r--r--ext/standard/datetime.c4
-rw-r--r--ext/standard/datetime.h4
-rw-r--r--ext/standard/dir.c4
-rw-r--r--ext/standard/dl.c4
-rw-r--r--ext/standard/dl.h4
-rw-r--r--ext/standard/dns.c4
-rw-r--r--ext/standard/dns_win32.c5
-rw-r--r--ext/standard/exec.c4
-rw-r--r--ext/standard/exec.h4
-rw-r--r--ext/standard/file.c8
-rw-r--r--ext/standard/file.h4
-rw-r--r--ext/standard/filestat.c4
-rw-r--r--ext/standard/filters.c14
-rw-r--r--ext/standard/flock_compat.c4
-rw-r--r--ext/standard/flock_compat.h4
-rw-r--r--ext/standard/formatted_print.c4
-rw-r--r--ext/standard/fsock.c4
-rw-r--r--ext/standard/fsock.h4
-rw-r--r--ext/standard/ftok.c4
-rw-r--r--ext/standard/ftp_fopen_wrapper.c4
-rw-r--r--ext/standard/head.c4
-rw-r--r--ext/standard/head.h4
-rw-r--r--ext/standard/html.c8
-rw-r--r--ext/standard/html.h4
-rw-r--r--ext/standard/http.c4
-rw-r--r--ext/standard/http_fopen_wrapper.c12
-rw-r--r--ext/standard/image.c4
-rw-r--r--ext/standard/incomplete_class.c4
-rw-r--r--ext/standard/info.c6
-rw-r--r--ext/standard/info.h4
-rw-r--r--ext/standard/iptc.c4
-rw-r--r--ext/standard/lcg.c4
-rw-r--r--ext/standard/levenshtein.c4
-rw-r--r--ext/standard/link.c4
-rw-r--r--ext/standard/link_win32.c4
-rw-r--r--ext/standard/mail.c4
-rw-r--r--ext/standard/math.c4
-rw-r--r--ext/standard/md5.c4
-rw-r--r--ext/standard/md5.h4
-rw-r--r--ext/standard/metaphone.c4
-rw-r--r--ext/standard/microtime.c4
-rw-r--r--ext/standard/microtime.h4
-rw-r--r--ext/standard/pack.c4
-rw-r--r--ext/standard/pack.h4
-rw-r--r--ext/standard/pageinfo.c4
-rw-r--r--ext/standard/pageinfo.h4
-rw-r--r--ext/standard/php_array.h4
-rw-r--r--ext/standard/php_assert.h4
-rw-r--r--ext/standard/php_browscap.h4
-rw-r--r--ext/standard/php_crypt.h4
-rw-r--r--ext/standard/php_crypt_r.c7
-rw-r--r--ext/standard/php_crypt_r.h4
-rw-r--r--ext/standard/php_dir.h4
-rw-r--r--ext/standard/php_dns.h4
-rw-r--r--ext/standard/php_ext_syslog.h4
-rw-r--r--ext/standard/php_filestat.h4
-rw-r--r--ext/standard/php_fopen_wrapper.c4
-rw-r--r--ext/standard/php_fopen_wrappers.h4
-rw-r--r--ext/standard/php_ftok.h4
-rw-r--r--ext/standard/php_http.h4
-rw-r--r--ext/standard/php_image.h4
-rw-r--r--ext/standard/php_incomplete_class.h4
-rw-r--r--ext/standard/php_iptc.h4
-rw-r--r--ext/standard/php_lcg.h4
-rw-r--r--ext/standard/php_link.h4
-rw-r--r--ext/standard/php_mail.h4
-rw-r--r--ext/standard/php_math.h4
-rw-r--r--ext/standard/php_metaphone.h4
-rw-r--r--ext/standard/php_rand.h4
-rw-r--r--ext/standard/php_smart_str.h4
-rw-r--r--ext/standard/php_smart_str_public.h4
-rw-r--r--ext/standard/php_standard.h4
-rw-r--r--ext/standard/php_string.h4
-rw-r--r--ext/standard/php_type.h4
-rw-r--r--ext/standard/php_uuencode.h4
-rw-r--r--ext/standard/php_var.h4
-rw-r--r--ext/standard/php_versioning.h4
-rw-r--r--ext/standard/proc_open.c9
-rw-r--r--ext/standard/proc_open.h4
-rw-r--r--ext/standard/quot_print.c4
-rw-r--r--ext/standard/quot_print.h4
-rw-r--r--ext/standard/rand.c4
-rw-r--r--ext/standard/scanf.c4
-rw-r--r--ext/standard/scanf.h4
-rw-r--r--ext/standard/sha1.c4
-rw-r--r--ext/standard/sha1.h4
-rw-r--r--ext/standard/soundex.c4
-rw-r--r--ext/standard/streamsfuncs.c4
-rw-r--r--ext/standard/streamsfuncs.h4
-rw-r--r--ext/standard/string.c16
-rw-r--r--ext/standard/syslog.c4
-rw-r--r--ext/standard/tests/array/array_change_key_case_variation8.phpt5
-rw-r--r--ext/standard/tests/array/arsort_variation5.phpt25
-rw-r--r--ext/standard/tests/array/asort_variation5.phpt7
-rw-r--r--ext/standard/tests/array/krsort_variation5.phpt25
-rw-r--r--ext/standard/tests/array/ksort_variation5.phpt25
-rw-r--r--ext/standard/tests/array/natcasesort_variation4.phpt5
-rw-r--r--ext/standard/tests/array/rsort_variation5.phpt5
-rw-r--r--ext/standard/tests/array/sort_variation5.phpt16
-rw-r--r--ext/standard/tests/class_object/is_a.phpt378
-rw-r--r--ext/standard/tests/class_object/is_a_error_001.phpt24
-rw-r--r--ext/standard/tests/class_object/is_subclass_of_error_001.phpt24
-rw-r--r--ext/standard/tests/dir/opendir_variation6-win32.phpt75
-rw-r--r--ext/standard/tests/directory/open_basedir_001.phpt17
-rw-r--r--ext/standard/tests/file/bug20424.phpt2
-rw-r--r--ext/standard/tests/file/bug52624.phpt12
-rw-r--r--ext/standard/tests/file/bug60120.phpt74
-rw-r--r--ext/standard/tests/file/file_get_contents_error001.phpt1
-rw-r--r--ext/standard/tests/file/fread_socket_variation1.phpt6
-rw-r--r--ext/standard/tests/file/lstat_stat_basic.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation10.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation11.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation12.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation13.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation15.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation16.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation17.phpt1
-rw-r--r--ext/standard/tests/file/lstat_stat_variation21.phpt1
-rwxr-xr-xext/standard/tests/file/lstat_stat_variation4.phpt1
-rwxr-xr-xext/standard/tests/file/lstat_stat_variation5.phpt1
-rwxr-xr-xext/standard/tests/file/lstat_stat_variation6.phpt3
-rw-r--r--ext/standard/tests/file/lstat_stat_variation8.phpt1
-rw-r--r--ext/standard/tests/file/readlink_realpath_variation3.phpt12
-rw-r--r--ext/standard/tests/file/readlink_variation1.phpt14
-rw-r--r--ext/standard/tests/file/rename_variation13-win32.phpt3
-rw-r--r--ext/standard/tests/file/rename_variation6-win32.phpt2
-rw-r--r--ext/standard/tests/file/touch_basic.phpt1
-rw-r--r--ext/standard/tests/general_functions/bug39322.phpt5
-rw-r--r--ext/standard/tests/general_functions/call_user_method_002.phpt12
-rw-r--r--ext/standard/tests/general_functions/parse_ini_file-win32.phpt196
-rw-r--r--ext/standard/tests/general_functions/parse_ini_file.phpt4
-rw-r--r--ext/standard/tests/general_functions/parse_ini_string_002.phpt4
-rw-r--r--ext/standard/tests/general_functions/proc_open02.phpt15
-rw-r--r--ext/standard/tests/general_functions/sleep_basic.phpt4
-rw-r--r--ext/standard/tests/general_functions/usleep_basic.phpt4
-rw-r--r--ext/standard/tests/http/bug38802.phpt2
-rw-r--r--ext/standard/tests/http/bug43510.phpt2
-rw-r--r--ext/standard/tests/http/bug48929.phpt2
-rw-r--r--ext/standard/tests/http/bug53198.phpt113
-rw-r--r--ext/standard/tests/http/bug60570.phpt53
-rw-r--r--ext/standard/tests/http/ignore_errors.phpt2
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_basic.phpt (renamed from ext/gd/tests/image_type_to_mime_type_basic.phpt)0
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_error.phpt (renamed from ext/gd/tests/image_type_to_mime_type_error.phpt)0
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_variation1.phpt (renamed from ext/gd/tests/image_type_to_mime_type_variation1.phpt)0
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_variation2.phpt (renamed from ext/gd/tests/image_type_to_mime_type_variation2.phpt)0
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_variation4.phpt (renamed from ext/gd/tests/image_type_to_mime_type_variation4.phpt)0
-rw-r--r--ext/standard/tests/misc/time_sleep_until_basic.phpt12
-rw-r--r--ext/standard/tests/network/bug41347.phpt6
-rw-r--r--ext/standard/tests/network/gethostbyaddr_basic1.phpt4
-rw-r--r--ext/standard/tests/network/gethostbyname_basic001.phpt4
-rw-r--r--ext/standard/tests/network/gethostbyname_basic002.phpt4
-rw-r--r--ext/standard/tests/network/gethostbyname_error004.phpt4
-rw-r--r--ext/standard/tests/network/getmxrr.phpt5
-rw-r--r--ext/standard/tests/network/http-stream.phpt5
-rw-r--r--ext/standard/tests/network/ip2long_variation1.phpt5
-rw-r--r--ext/standard/tests/php_ini_loaded_file.phpt2
-rw-r--r--ext/standard/tests/serialize/bug55798.phpt18
-rw-r--r--ext/standard/tests/serialize/serialization_miscTypes_001.phptbin7586 -> 7586 bytes
-rw-r--r--ext/standard/tests/streams/bug46024.phpt2
-rw-r--r--ext/standard/tests/streams/bug54946.phpt13
-rw-r--r--ext/standard/tests/streams/bug60455_01.phpt21
-rw-r--r--ext/standard/tests/streams/bug60455_02.phpt30
-rw-r--r--ext/standard/tests/streams/bug60455_03.phpt53
-rw-r--r--ext/standard/tests/streams/stream_context_set_option_basic.phpt37
-rw-r--r--ext/standard/tests/streams/stream_context_set_option_error_001.phpt21
-rw-r--r--ext/standard/tests/streams/stream_context_set_option_error_002.phpt18
-rw-r--r--ext/standard/tests/strings/bug55674.phpt50
-rw-r--r--ext/standard/tests/strings/htmlentities_html4.phpt22
-rw-r--r--ext/standard/tests/strings/md5_file.phptbin3159 -> 2837 bytes
-rw-r--r--ext/standard/tests/strings/sha1_file.phpt12
-rw-r--r--ext/standard/tests/strings/substr_replace_array.phpt19
-rw-r--r--ext/standard/tests/url/bug55273.phpt25
-rw-r--r--ext/standard/type.c4
-rw-r--r--ext/standard/uniqid.c4
-rw-r--r--ext/standard/uniqid.h4
-rw-r--r--ext/standard/url.c4
-rw-r--r--ext/standard/url.h4
-rw-r--r--ext/standard/url_scanner_ex.c.orig1109
-rw-r--r--ext/standard/url_scanner_ex.h4
-rw-r--r--ext/standard/user_filters.c4
-rw-r--r--ext/standard/uuencode.c4
-rw-r--r--ext/standard/var.c10
-rw-r--r--ext/standard/var_unserializer.c21
-rw-r--r--ext/standard/var_unserializer.c.orig1177
-rw-r--r--ext/standard/var_unserializer.re19
-rw-r--r--ext/standard/versioning.c4
-rw-r--r--ext/sybase_ct/php_sybase_ct.c4
-rw-r--r--ext/sybase_ct/php_sybase_ct.h4
-rw-r--r--ext/sysvmsg/php_sysvmsg.h4
-rw-r--r--ext/sysvmsg/sysvmsg.c6
-rw-r--r--ext/sysvsem/php_sysvsem.h4
-rw-r--r--ext/sysvsem/sysvsem.c4
-rw-r--r--ext/sysvshm/php_sysvshm.h4
-rw-r--r--ext/sysvshm/sysvshm.c6
-rw-r--r--ext/sysvshm/tests/001.phpt2
-rw-r--r--ext/tidy/php_tidy.h4
-rw-r--r--ext/tidy/tests/010.phpt12
-rw-r--r--ext/tidy/tests/012.phpt2
-rw-r--r--ext/tidy/tests/024.phpt3
-rw-r--r--ext/tidy/tests/025.phpt6
-rw-r--r--ext/tidy/tests/bug54682.phpt13
-rw-r--r--ext/tidy/tidy.c8
-rw-r--r--ext/tokenizer/php_tokenizer.h4
-rw-r--r--ext/tokenizer/tokenizer.c4
-rw-r--r--ext/tokenizer/tokenizer_data.c4
-rwxr-xr-xext/tokenizer/tokenizer_data_gen.sh2
-rw-r--r--ext/wddx/php_wddx.h4
-rw-r--r--ext/wddx/php_wddx_api.h4
-rw-r--r--ext/wddx/tests/bug48562.phpt6
-rw-r--r--ext/wddx/tests/bug52468.phpt6
-rw-r--r--ext/wddx/wddx.c4
-rw-r--r--ext/xml/compat.c2
-rw-r--r--ext/xml/expat_compat.h4
-rw-r--r--ext/xml/php_xml.h4
-rw-r--r--ext/xml/xml.c4
-rw-r--r--ext/xmlreader/php_xmlreader.c4
-rw-r--r--ext/xmlreader/php_xmlreader.h4
-rwxr-xr-xext/xmlreader/tests/012.phpt22
-rw-r--r--ext/xmlrpc/php_xmlrpc.h4
-rw-r--r--ext/xmlrpc/tests/bug51288.phpt2
-rw-r--r--ext/xmlrpc/xmlrpc-epi-php.c4
-rw-r--r--ext/xmlwriter/php_xmlwriter.c4
-rw-r--r--ext/xmlwriter/php_xmlwriter.h4
-rw-r--r--ext/xmlwriter/tests/004.phpt2
-rw-r--r--ext/xmlwriter/tests/OO_004.phpt2
-rw-r--r--ext/xsl/php_xsl.c23
-rw-r--r--ext/xsl/php_xsl.h14
-rw-r--r--ext/xsl/tests/bug54446_with_ini.phpt95
-rw-r--r--ext/xsl/tests/exslt.xml6
-rw-r--r--ext/xsl/tests/xslt010.phpt96
-rw-r--r--ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt4
-rw-r--r--ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt4
-rw-r--r--ext/xsl/xsl_fe.h4
-rw-r--r--ext/xsl/xsltprocessor.c54
-rw-r--r--ext/zip/php_zip.c6
-rw-r--r--ext/zip/php_zip.h4
-rw-r--r--ext/zip/tests/bug38943.inc16
-rw-r--r--ext/zip/tests/bug38943.phpt24
-rw-r--r--ext/zip/tests/bug38943_2.phpt38
-rw-r--r--ext/zip/tests/bug53885.phpt5
-rw-r--r--ext/zlib/php_zlib.h4
-rw-r--r--ext/zlib/tests/003.phpt10
-rw-r--r--ext/zlib/tests/gzfilegzreadfile.phpt2
-rw-r--r--ext/zlib/zlib.c4
-rw-r--r--ext/zlib/zlib_filter.c4
-rw-r--r--ext/zlib/zlib_fopen_wrapper.c4
1009 files changed, 11974 insertions, 34105 deletions
diff --git a/ext/bcmath/bcmath.c b/ext/bcmath/bcmath.c
index d14a7a270..4060750cb 100644
--- a/ext/bcmath/bcmath.c
+++ b/ext/bcmath/bcmath.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: bcmath.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: bcmath.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -560,7 +560,7 @@ PHP_FUNCTION(bcscale)
return;
}
- BCG(bc_precision) = (new_scale < 0) ? 0 : new_scale;
+ BCG(bc_precision) = ((int)new_scale < 0) ? 0 : new_scale;
RETURN_TRUE;
}
diff --git a/ext/bcmath/php_bcmath.h b/ext/bcmath/php_bcmath.h
index 2b78ca9fb..6c6ec4afa 100644
--- a/ext/bcmath/php_bcmath.h
+++ b/ext/bcmath/php_bcmath.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_bcmath.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_bcmath.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_BCMATH_H
#define PHP_BCMATH_H
diff --git a/ext/bcmath/tests/bug60377.phpt b/ext/bcmath/tests/bug60377.phpt
new file mode 100644
index 000000000..7c4200291
--- /dev/null
+++ b/ext/bcmath/tests/bug60377.phpt
@@ -0,0 +1,13 @@
+--TEST--
+bcscale related problem on 64bits platforms
+--SKIPIF--
+<?php if(!extension_loaded("bcmath")) print "skip"; ?>
+--FILE--
+<?php
+$var48 = bcscale(634314234334311);
+$var67 = bcsqrt(false);
+$var414 = bcadd(false,null,10);
+die('ALIVE');
+?>
+--EXPECTF--
+ALIVE
diff --git a/ext/bz2/bz2.c b/ext/bz2/bz2.c
index b8a6d7cd3..157a56bb0 100644
--- a/ext/bz2/bz2.c
+++ b/ext/bz2/bz2.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: bz2.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: bz2.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/bz2/bz2_filter.c b/ext/bz2/bz2_filter.c
index e76e33385..0d7a79642 100644
--- a/ext/bz2/bz2_filter.c
+++ b/ext/bz2/bz2_filter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: bz2_filter.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: bz2_filter.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/bz2/php_bz2.h b/ext/bz2/php_bz2.h
index a35ba79b9..f30760cf0 100644
--- a/ext/bz2/php_bz2.h
+++ b/ext/bz2/php_bz2.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_bz2.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_bz2.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_BZ2_H
#define PHP_BZ2_H
diff --git a/ext/calendar/cal_unix.c b/ext/calendar/cal_unix.c
index 0b7b9e852..ad0a79747 100644
--- a/ext/calendar/cal_unix.c
+++ b/ext/calendar/cal_unix.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/calendar/calendar.c b/ext/calendar/calendar.c
index d802b5b69..a0c858d0c 100644
--- a/ext/calendar/calendar.c
+++ b/ext/calendar/calendar.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
| Wez Furlong <wez@thebrainroom.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: calendar.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: calendar.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/calendar/easter.c b/ext/calendar/easter.c
index 703d08b16..f1b76c2ac 100644
--- a/ext/calendar/easter.c
+++ b/ext/calendar/easter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/calendar/gregor.c b/ext/calendar/gregor.c
index c9c0bf761..ebb743fdd 100644
--- a/ext/calendar/gregor.c
+++ b/ext/calendar/gregor.c
@@ -127,6 +127,7 @@
**************************************************************************/
#include "sdncal.h"
+#include <limits.h>
#define GREGOR_SDN_OFFSET 32045
#define DAYS_PER_5_MONTHS 153
@@ -146,21 +147,12 @@ void SdnToGregorian(
long int temp;
int dayOfYear;
- if (sdn <= 0) {
- *pYear = 0;
- *pMonth = 0;
- *pDay = 0;
- return;
+ if (sdn <= 0 ||
+ sdn > (LONG_MAX - 4 * GREGOR_SDN_OFFSET) / 4) {
+ goto fail;
}
temp = (sdn + GREGOR_SDN_OFFSET) * 4 - 1;
- if (temp < 0) {
- *pYear = 0;
- *pMonth = 0;
- *pDay = 0;
- return;
- }
-
/* Calculate the century (year/100). */
century = temp / DAYS_PER_400_YEARS;
@@ -190,6 +182,12 @@ void SdnToGregorian(
*pYear = year;
*pMonth = month;
*pDay = day;
+ return;
+
+fail:
+ *pYear = 0;
+ *pMonth = 0;
+ *pDay = 0;
}
long int GregorianToSdn(
diff --git a/ext/calendar/tests/bug53574_1.phpt b/ext/calendar/tests/bug53574_1.phpt
new file mode 100644
index 000000000..51f9b4266
--- /dev/null
+++ b/ext/calendar/tests/bug53574_1.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Bug #53574 (Integer overflow in SdnToJulian; leads to segfault)
+--SKIPIF--
+<?php
+include 'skipif.inc';
+if (PHP_INT_SIZE != 4) {
+ die("skip this test is for 32bit platform only");
+}
+?>
+--FILE--
+<?php
+$x = 882858043;
+
+var_dump(cal_from_jd($x, CAL_JULIAN));
+--EXPECT--
+array(9) {
+ ["date"]=>
+ string(5) "0/0/0"
+ ["month"]=>
+ int(0)
+ ["day"]=>
+ int(0)
+ ["year"]=>
+ int(0)
+ ["dow"]=>
+ int(5)
+ ["abbrevdayname"]=>
+ string(3) "Fri"
+ ["dayname"]=>
+ string(6) "Friday"
+ ["abbrevmonth"]=>
+ string(0) ""
+ ["monthname"]=>
+ string(0) ""
+}
+
diff --git a/ext/calendar/tests/bug53574.phpt b/ext/calendar/tests/bug53574_2.phpt
index e42699135..45e15cb39 100644
--- a/ext/calendar/tests/bug53574.phpt
+++ b/ext/calendar/tests/bug53574_2.phpt
@@ -1,14 +1,15 @@
--TEST--
Bug #53574 (Integer overflow in SdnToJulian; leads to segfault)
--SKIPIF--
-<?php include 'skipif.inc'; ?>
+<?php
+include 'skipif.inc';
+if (PHP_INT_SIZE == 4) {
+ die("skip this test is for 64bit platform only");
+}
+?>
--FILE--
<?php
-if (PHP_INT_MAX == 0x7FFFFFFF) {
- $x = 882858043;
-} else {
- $x = 3315881921229094912;
-}
+$x = 3315881921229094912;
var_dump(cal_from_jd($x, CAL_JULIAN));
--EXPECT--
diff --git a/ext/calendar/tests/bug55797_1.phpt b/ext/calendar/tests/bug55797_1.phpt
new file mode 100644
index 000000000..ffd617dfb
--- /dev/null
+++ b/ext/calendar/tests/bug55797_1.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Bug #55797: Integer overflow in SdnToGregorian leads to segfault (in optimized builds)
+--SKIPIF--
+<?php
+include 'skipif.inc';
+if (PHP_INT_SIZE != 4) {
+ die("skip this test is for 32bit platform only");
+}
+?>
+--FILE--
+<?php
+$x = 882858030;
+
+var_dump(cal_from_jd($x, CAL_GREGORIAN));
+--EXPECTF--
+array(9) {
+ ["date"]=>
+ string(5) "0/0/0"
+ ["month"]=>
+ int(0)
+ ["day"]=>
+ int(0)
+ ["year"]=>
+ int(0)
+ ["dow"]=>
+ int(%d)
+ ["abbrevdayname"]=>
+ string(%d) "%s"
+ ["dayname"]=>
+ string(%d) "%s"
+ ["abbrevmonth"]=>
+ string(0) ""
+ ["monthname"]=>
+ string(0) ""
+}
+
diff --git a/ext/calendar/tests/bug55797_2.phpt b/ext/calendar/tests/bug55797_2.phpt
new file mode 100644
index 000000000..2a9183dd8
--- /dev/null
+++ b/ext/calendar/tests/bug55797_2.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Bug #55797: Integer overflow in SdnToGregorian leads to segfault (in optimized builds)
+--SKIPIF--
+<?php
+include 'skipif.inc';
+if (PHP_INT_SIZE == 4) {
+ die("skip this test is for 64bit platform only");
+}
+?>
+--FILE--
+<?php
+$x = 9223372036854743639;
+
+var_dump(cal_from_jd($x, CAL_GREGORIAN));
+--EXPECTF--
+array(9) {
+ ["date"]=>
+ string(5) "0/0/0"
+ ["month"]=>
+ int(0)
+ ["day"]=>
+ int(0)
+ ["year"]=>
+ int(0)
+ ["dow"]=>
+ int(%d)
+ ["abbrevdayname"]=>
+ string(%d) "%s"
+ ["dayname"]=>
+ string(%d) "%s"
+ ["abbrevmonth"]=>
+ string(0) ""
+ ["monthname"]=>
+ string(0) ""
+}
+
diff --git a/ext/calendar/tests/easter_date.phpt b/ext/calendar/tests/easter_date.phpt
index 1adff6929..9222d3c27 100644
--- a/ext/calendar/tests/easter_date.phpt
+++ b/ext/calendar/tests/easter_date.phpt
@@ -6,6 +6,7 @@ date.timezone=UTC
<?php include 'skipif.inc'; ?>
--FILE--
<?php
+putenv('TZ=UTC');
echo date("Y-m-d", easter_date(2000))."\n";
echo date("Y-m-d", easter_date(2001))."\n";
echo date("Y-m-d", easter_date(2002))."\n";
diff --git a/ext/calendar/tests/jdtomonthname.phpt b/ext/calendar/tests/jdtomonthname.phpt
index 76d127d6b..5dc330742 100644
--- a/ext/calendar/tests/jdtomonthname.phpt
+++ b/ext/calendar/tests/jdtomonthname.phpt
@@ -14,30 +14,37 @@ $jd_days = Array(
);
foreach ($jd_days as $jd_day) {
+ echo "=== ", $jd_day, "\n";
var_dump(jdmonthname($jd_day,0));
var_dump(jdmonthname($jd_day,1));
var_dump(jdmonthname($jd_day,2));
var_dump(jdmonthname($jd_day,3));
var_dump(jdmonthname($jd_day,4));
var_dump(jdmonthname($jd_day,5));
+ echo "\n";
}
echo "Done\n";
?>
--EXPECTF--
+=== 2453396
string(3) "Jan"
string(7) "January"
string(3) "Jan"
string(7) "January"
string(6) "Shevat"
string(0) ""
+
+=== 2440588
string(3) "Jan"
string(7) "January"
string(3) "Dec"
string(8) "December"
string(5) "Tevet"
string(0) ""
+
+=== -1
string(0) ""
string(0) ""
string(0) ""
@@ -45,6 +52,8 @@ string(0) ""
string(0) ""
string(0) ""
+=== Array
+
Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
bool(false)
@@ -62,10 +71,13 @@ bool(false)
Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
bool(false)
+
+=== 10000000
string(3) "Dec"
string(8) "December"
string(3) "Jul"
string(4) "July"
string(6) "Tishri"
string(0) ""
+
Done
diff --git a/ext/calendar/tests/unixtojd.phpt b/ext/calendar/tests/unixtojd.phpt
index e8e953c37..11edde5f2 100644
--- a/ext/calendar/tests/unixtojd.phpt
+++ b/ext/calendar/tests/unixtojd.phpt
@@ -4,11 +4,12 @@ unixtojd()
<?php include 'skipif.inc'; ?>
--FILE--
<?php
+putenv('TZ=UTC');
echo unixtojd(40000). "\n";
echo unixtojd(1000000000). "\n";
echo unixtojd(1152459009). "\n";
?>
--EXPECT--
2440588
-2452161
+2452162
2453926
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c
index 1584036e1..bf54525a1 100644
--- a/ext/com_dotnet/com_com.c
+++ b/ext/com_dotnet/com_com.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_com.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_com.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c
index 546e8750c..21e9b9777 100644
--- a/ext/com_dotnet/com_dotnet.c
+++ b/ext/com_dotnet/com_dotnet.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_dotnet.c 313827 2011-07-28 10:34:16Z pajoye $ */
+/* $Id: com_dotnet.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c
index 9cbb5d1b8..e166bc9a3 100644
--- a/ext/com_dotnet/com_extension.c
+++ b/ext/com_dotnet/com_extension.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_extension.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: com_extension.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c
index 33e1fcd48..a15c79d4d 100644
--- a/ext/com_dotnet/com_handlers.c
+++ b/ext/com_dotnet/com_handlers.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_handlers.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_handlers.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_iterator.c b/ext/com_dotnet/com_iterator.c
index a7f432e7a..113f5436b 100644
--- a/ext/com_dotnet/com_iterator.c
+++ b/ext/com_dotnet/com_iterator.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_iterator.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_iterator.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_misc.c b/ext/com_dotnet/com_misc.c
index 2dc9530bf..496997a62 100644
--- a/ext/com_dotnet/com_misc.c
+++ b/ext/com_dotnet/com_misc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_misc.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_misc.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_olechar.c b/ext/com_dotnet/com_olechar.c
index 129b347fb..77251594d 100644
--- a/ext/com_dotnet/com_olechar.c
+++ b/ext/com_dotnet/com_olechar.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_olechar.c 307626 2011-01-20 13:57:40Z pajoye $ */
+/* $Id: com_olechar.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c
index a4b01b422..326627c2d 100755
--- a/ext/com_dotnet/com_persist.c
+++ b/ext/com_dotnet/com_persist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_persist.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: com_persist.c 321634 2012-01-01 13:15:04Z felipe $ */
/* Infrastructure for working with persistent COM objects.
* Implements: IStream* wrapper for PHP streams.
diff --git a/ext/com_dotnet/com_saproxy.c b/ext/com_dotnet/com_saproxy.c
index e4f6e72ef..219d4a540 100644
--- a/ext/com_dotnet/com_saproxy.c
+++ b/ext/com_dotnet/com_saproxy.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_saproxy.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_saproxy.c 321634 2012-01-01 13:15:04Z felipe $ */
/* This module implements a SafeArray proxy which is used internally
* by the engine when resolving multi-dimensional array accesses on
diff --git a/ext/com_dotnet/com_typeinfo.c b/ext/com_dotnet/com_typeinfo.c
index a2c3d6978..f70f5328e 100644
--- a/ext/com_dotnet/com_typeinfo.c
+++ b/ext/com_dotnet/com_typeinfo.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_typeinfo.c 307614 2011-01-20 06:49:17Z pajoye $ */
+/* $Id: com_typeinfo.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c
index 4d00feeb4..faed69b0d 100644
--- a/ext/com_dotnet/com_variant.c
+++ b/ext/com_dotnet/com_variant.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_variant.c 307617 2011-01-20 06:58:04Z pajoye $ */
+/* $Id: com_variant.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c
index 6cff4b969..e244ef620 100644
--- a/ext/com_dotnet/com_wrapper.c
+++ b/ext/com_dotnet/com_wrapper.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_wrapper.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: com_wrapper.c 321634 2012-01-01 13:15:04Z felipe $ */
/* This module exports a PHP object as a COM object by wrapping it
* using IDispatchEx */
diff --git a/ext/com_dotnet/php_com_dotnet.h b/ext/com_dotnet/php_com_dotnet.h
index f2243a020..3c3768eaa 100644
--- a/ext/com_dotnet/php_com_dotnet.h
+++ b/ext/com_dotnet/php_com_dotnet.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_com_dotnet.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_com_dotnet.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_COM_DOTNET_H
#define PHP_COM_DOTNET_H
diff --git a/ext/com_dotnet/php_com_dotnet_internal.h b/ext/com_dotnet/php_com_dotnet_internal.h
index a8837b693..ace4fcdfe 100644
--- a/ext/com_dotnet/php_com_dotnet_internal.h
+++ b/ext/com_dotnet/php_com_dotnet_internal.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_com_dotnet_internal.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_com_dotnet_internal.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_COM_DOTNET_INTERNAL_H
#define PHP_COM_DOTNET_INTERNAL_H
diff --git a/ext/ctype/ctype.c b/ext/ctype/ctype.c
index b80e1df6e..64cbf1579 100644
--- a/ext/ctype/ctype.c
+++ b/ext/ctype/ctype.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/ctype/php_ctype.h b/ext/ctype/php_ctype.h
index 0036702d9..484b34739 100644
--- a/ext/ctype/php_ctype.h
+++ b/ext/ctype/php_ctype.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/curl/interface.c b/ext/curl/interface.c
index 23bd2edce..02f7fdf76 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interface.c 313826 2011-07-28 10:31:34Z pajoye $ */
+/* $Id: interface.c 321634 2012-01-01 13:15:04Z felipe $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -150,6 +150,7 @@ static struct gcry_thread_cbs php_curl_gnutls_tsl = {
static void _php_curl_close_ex(php_curl *ch TSRMLS_DC);
static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
+
#define SAVE_CURL_ERROR(__handle, __err) (__handle)->err.no = (int) __err;
#define CAAL(s, v) add_assoc_long_ex(return_value, s, sizeof(s), (long) v);
@@ -197,13 +198,79 @@ static int php_curl_option_url(php_curl *ch, const char *url, const int len) /*
#else
copystr = estrndup(url, len);
error = curl_easy_setopt(ch->cp, CURLOPT_URL, copystr);
- zend_llist_add_element(&ch->to_free.str, &copystr);
+ zend_llist_add_element(&ch->to_free->str, &copystr);
#endif
return (error == CURLE_OK ? 1 : 0);
}
/* }}} */
+int _php_curl_verify_handlers(php_curl *ch, int reporterror TSRMLS_DC) /* {{{ */
+{
+ php_stream *stream;
+ if (!ch || !ch->handlers) {
+ return 0;
+ }
+
+ if (ch->handlers->std_err) {
+ stream = (php_stream *) zend_fetch_resource(&ch->handlers->std_err TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream());
+ if (stream == NULL) {
+ if (reporterror) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_STDERR resource has gone away, resetting to stderr");
+ }
+ zval_ptr_dtor(&ch->handlers->std_err);
+ ch->handlers->std_err = NULL;
+
+ curl_easy_setopt(ch->cp, CURLOPT_STDERR, stderr);
+ }
+ }
+ if (ch->handlers->read && ch->handlers->read->stream) {
+ stream = (php_stream *) zend_fetch_resource(&ch->handlers->read->stream TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream());
+ if (stream == NULL) {
+ if (reporterror) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_INFILE resource has gone away, resetting to default");
+ }
+ zval_ptr_dtor(&ch->handlers->read->stream);
+ ch->handlers->read->fd = 0;
+ ch->handlers->read->fp = 0;
+ ch->handlers->read->stream = NULL;
+
+ curl_easy_setopt(ch->cp, CURLOPT_INFILE, (void *) ch);
+ }
+ }
+ if (ch->handlers->write_header && ch->handlers->write_header->stream) {
+ stream = (php_stream *) zend_fetch_resource(&ch->handlers->write_header->stream TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream());
+ if (stream == NULL) {
+ if (reporterror) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_WRITEHEADER resource has gone away, resetting to default");
+ }
+ zval_ptr_dtor(&ch->handlers->write_header->stream);
+ ch->handlers->write_header->fp = 0;
+ ch->handlers->write_header->stream = NULL;
+
+ ch->handlers->write_header->method = PHP_CURL_IGNORE;
+ curl_easy_setopt(ch->cp, CURLOPT_WRITEHEADER, (void *) ch);
+ }
+ }
+ if (ch->handlers->write && ch->handlers->write->stream) {
+ stream = (php_stream *) zend_fetch_resource(&ch->handlers->write->stream TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream());
+ if (stream == NULL) {
+ if (reporterror) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_FILE resource has gone away, resetting to default");
+ }
+ zval_ptr_dtor(&ch->handlers->write->stream);
+ ch->handlers->write->fp = 0;
+ ch->handlers->write->stream = NULL;
+
+ ch->handlers->write->method = PHP_CURL_STDOUT;
+ ch->handlers->write->type = PHP_CURL_ASCII;
+ curl_easy_setopt(ch->cp, CURLOPT_FILE, (void *) ch);
+ }
+ }
+ return 1;
+}
+/* }}} */
+
/* {{{ arginfo */
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_version, 0, 0, 0)
ZEND_ARG_INFO(0, version)
@@ -337,7 +404,6 @@ PHP_INI_BEGIN()
PHP_INI_END()
/* }}} */
-/* }}} */
/* {{{ PHP_MINFO_FUNCTION
*/
PHP_MINFO_FUNCTION(curl)
@@ -1346,6 +1412,7 @@ PHP_FUNCTION(curl_version)
static void alloc_curl_handle(php_curl **ch)
{
*ch = emalloc(sizeof(php_curl));
+ (*ch)->to_free = ecalloc(1, sizeof(struct _php_curl_free));
(*ch)->handlers = ecalloc(1, sizeof(php_curl_handlers));
(*ch)->handlers->write = ecalloc(1, sizeof(php_curl_write));
(*ch)->handlers->write_header = ecalloc(1, sizeof(php_curl_write));
@@ -1356,10 +1423,13 @@ static void alloc_curl_handle(php_curl **ch)
(*ch)->header.str_len = 0;
memset(&(*ch)->err, 0, sizeof((*ch)->err));
+ (*ch)->handlers->write->stream = NULL;
+ (*ch)->handlers->write_header->stream = NULL;
+ (*ch)->handlers->read->stream = NULL;
- zend_llist_init(&(*ch)->to_free.str, sizeof(char *), (llist_dtor_func_t) curl_free_string, 0);
- zend_llist_init(&(*ch)->to_free.slist, sizeof(struct curl_slist), (llist_dtor_func_t) curl_free_slist, 0);
- zend_llist_init(&(*ch)->to_free.post, sizeof(struct HttpPost), (llist_dtor_func_t) curl_free_post, 0);
+ zend_llist_init(&(*ch)->to_free->str, sizeof(char *), (llist_dtor_func_t) curl_free_string, 0);
+ zend_llist_init(&(*ch)->to_free->slist, sizeof(struct curl_slist), (llist_dtor_func_t) curl_free_slist, 0);
+ zend_llist_init(&(*ch)->to_free->post, sizeof(struct HttpPost), (llist_dtor_func_t) curl_free_post, 0);
}
/* }}} */
@@ -1394,6 +1464,7 @@ static void split_certinfo(char *string, zval *hash)
efree(org);
}
}
+/* }}} */
/* {{{ create_certinfo
*/
@@ -1537,6 +1608,7 @@ PHP_FUNCTION(curl_copy_handle)
dupch->cp = cp;
dupch->uses = 0;
+ ch->uses++;
if (ch->handlers->write->stream) {
Z_ADDREF_P(dupch->handlers->write->stream);
dupch->handlers->write->stream = ch->handlers->write->stream;
@@ -1577,18 +1649,21 @@ PHP_FUNCTION(curl_copy_handle)
zval_add_ref(&ch->handlers->write_header->func_name);
dupch->handlers->write_header->func_name = ch->handlers->write_header->func_name;
}
+
+ if (ch->handlers->progress->func_name) {
+ zval_add_ref(&ch->handlers->progress->func_name);
+ dupch->handlers->progress->func_name = ch->handlers->progress->func_name;
+ }
+ dupch->handlers->progress->method = ch->handlers->progress->method;
curl_easy_setopt(dupch->cp, CURLOPT_ERRORBUFFER, dupch->err.str);
curl_easy_setopt(dupch->cp, CURLOPT_FILE, (void *) dupch);
curl_easy_setopt(dupch->cp, CURLOPT_INFILE, (void *) dupch);
curl_easy_setopt(dupch->cp, CURLOPT_WRITEHEADER, (void *) dupch);
+ curl_easy_setopt(dupch->cp, CURLOPT_PROGRESSDATA, (void *) dupch);
- zend_llist_copy(&dupch->to_free.str, &ch->to_free.str);
- /* Don't try to free copied strings, they're free'd when the original handle is destroyed */
- dupch->to_free.str.dtor = NULL;
-
- zend_llist_copy(&dupch->to_free.slist, &ch->to_free.slist);
- zend_llist_copy(&dupch->to_free.post, &ch->to_free.post);
+ efree(dupch->to_free);
+ dupch->to_free = ch->to_free;
/* Keep track of cloned copies to avoid invoking curl destructors for every clone */
Z_ADDREF_P(ch->clone);
@@ -1782,7 +1857,7 @@ string_copy:
#endif
copystr = estrndup(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue));
error = curl_easy_setopt(ch->cp, option, copystr);
- zend_llist_add_element(&ch->to_free.str, &copystr);
+ zend_llist_add_element(&ch->to_free->str, &copystr);
} else {
#if LIBCURL_VERSION_NUM >= 0x071100
/* Strings passed to libcurl as ’char *’ arguments, are copied by the library... NOTE: before 7.17.0 strings were not copied. */
@@ -1822,6 +1897,9 @@ string_copy:
switch (option) {
case CURLOPT_FILE:
if (((php_stream *) what)->mode[0] != 'r' || ((php_stream *) what)->mode[1] == '+') {
+ if (ch->handlers->write->stream) {
+ Z_DELREF_P(ch->handlers->write->stream);
+ }
Z_ADDREF_PP(zvalue);
ch->handlers->write->fp = fp;
ch->handlers->write->method = PHP_CURL_FILE;
@@ -1834,6 +1912,9 @@ string_copy:
break;
case CURLOPT_WRITEHEADER:
if (((php_stream *) what)->mode[0] != 'r' || ((php_stream *) what)->mode[1] == '+') {
+ if (ch->handlers->write_header->stream) {
+ Z_DELREF_P(ch->handlers->write_header->stream);
+ }
Z_ADDREF_PP(zvalue);
ch->handlers->write_header->fp = fp;
ch->handlers->write_header->method = PHP_CURL_FILE;
@@ -1845,6 +1926,9 @@ string_copy:
}
break;
case CURLOPT_INFILE:
+ if (ch->handlers->read->stream) {
+ Z_DELREF_P(ch->handlers->read->stream);
+ }
Z_ADDREF_PP(zvalue);
ch->handlers->read->fp = fp;
ch->handlers->read->fd = Z_LVAL_PP(zvalue);
@@ -2014,7 +2098,7 @@ string_copy:
return 1;
}
- zend_llist_add_element(&ch->to_free.post, &first);
+ zend_llist_add_element(&ch->to_free->post, &first);
error = curl_easy_setopt(ch->cp, CURLOPT_HTTPPOST, first);
} else {
@@ -2028,7 +2112,7 @@ string_copy:
convert_to_string_ex(zvalue);
post = estrndup(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue));
- zend_llist_add_element(&ch->to_free.str, &post);
+ zend_llist_add_element(&ch->to_free->str, &post);
error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDS, post);
error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDSIZE, Z_STRLEN_PP(zvalue));
@@ -2064,7 +2148,7 @@ string_copy:
return 1;
}
}
- zend_llist_add_element(&ch->to_free.slist, &slist);
+ zend_llist_add_element(&ch->to_free->slist, &slist);
error = curl_easy_setopt(ch->cp, option, slist);
@@ -2094,7 +2178,7 @@ string_copy:
copystr = estrndup(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue));
error = curl_easy_setopt(ch->cp, option, copystr);
- zend_llist_add_element(&ch->to_free.str, &copystr);
+ zend_llist_add_element(&ch->to_free->str, &copystr);
#endif
break;
}
@@ -2211,6 +2295,8 @@ PHP_FUNCTION(curl_exec)
ZEND_FETCH_RESOURCE(ch, php_curl *, &zid, -1, le_curl_name, le_curl);
+ _php_curl_verify_handlers(ch, 1 TSRMLS_CC);
+
_php_curl_cleanup_handle(ch);
error = curl_easy_perform(ch->cp);
@@ -2223,6 +2309,14 @@ PHP_FUNCTION(curl_exec)
RETURN_FALSE;
}
+ if (ch->handlers->std_err) {
+ php_stream *stream;
+ stream = (php_stream*)zend_fetch_resource(&ch->handlers->std_err TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream());
+ if (stream) {
+ php_stream_flush(stream);
+ }
+ }
+
if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) {
smart_str_0(&ch->handlers->write->buf);
RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1);
@@ -2500,25 +2594,18 @@ static void _php_curl_close_ex(php_curl *ch TSRMLS_DC)
fprintf(stderr, "DTOR CALLED, ch = %x\n", ch);
#endif
- /* Prevent crash inside cURL if passed file has already been closed */
- if (ch->handlers->std_err && Z_REFCOUNT_P(ch->handlers->std_err) <= 0) {
- curl_easy_setopt(ch->cp, CURLOPT_STDERR, stderr);
- }
-
+ _php_curl_verify_handlers(ch, 0 TSRMLS_CC);
curl_easy_cleanup(ch->cp);
- zend_llist_clean(&ch->to_free.str);
/* cURL destructors should be invoked only by last curl handle */
if (Z_REFCOUNT_P(ch->clone) <= 1) {
- zend_llist_clean(&ch->to_free.slist);
- zend_llist_clean(&ch->to_free.post);
+ zend_llist_clean(&ch->to_free->str);
+ zend_llist_clean(&ch->to_free->slist);
+ zend_llist_clean(&ch->to_free->post);
+ efree(ch->to_free);
FREE_ZVAL(ch->clone);
} else {
Z_DELREF_P(ch->clone);
- ch->to_free.slist.dtor = NULL;
- ch->to_free.post.dtor = NULL;
- zend_llist_clean(&ch->to_free.slist);
- zend_llist_clean(&ch->to_free.post);
}
if (ch->handlers->write->buf.len > 0) {
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index 98a08159e..8679797aa 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: multi.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: multi.c 321634 2012-01-01 13:15:04Z felipe $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -211,6 +211,19 @@ PHP_FUNCTION(curl_multi_exec)
ZEND_FETCH_RESOURCE(mh, php_curlm *, &z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ {
+ zend_llist_position pos;
+ php_curl *ch;
+ zval *pz_ch;
+
+ for(pz_ch = (zval *)zend_llist_get_first_ex(&mh->easyh, &pos); pz_ch;
+ pz_ch = (zval *)zend_llist_get_next_ex(&mh->easyh, &pos)) {
+
+ ZEND_FETCH_RESOURCE(ch, php_curl *, &pz_ch, -1, le_curl_name, le_curl);
+ _php_curl_verify_handlers(ch, 1 TSRMLS_CC);
+ }
+ }
+
convert_to_long_ex(&z_still_running);
still_running = Z_LVAL_P(z_still_running);
result = curl_multi_perform(mh->multi, &still_running);
@@ -324,6 +337,17 @@ void _php_curl_multi_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */
{
php_curlm *mh = (php_curlm *) rsrc->ptr;
if (mh) {
+ zend_llist_position pos;
+ php_curl *ch;
+ zval *pz_ch;
+
+ for(pz_ch = (zval *)zend_llist_get_first_ex(&mh->easyh, &pos); pz_ch;
+ pz_ch = (zval *)zend_llist_get_next_ex(&mh->easyh, &pos)) {
+
+ ch = (php_curl *) zend_fetch_resource(&pz_ch TSRMLS_CC, -1, le_curl_name, NULL, 1, le_curl);
+ _php_curl_verify_handlers(ch, 0 TSRMLS_CC);
+ }
+
curl_multi_cleanup(mh->multi);
zend_llist_clean(&mh->easyh);
efree(mh);
diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h
index 844cc0ab3..88cd4686a 100644
--- a/ext/curl/php_curl.h
+++ b/ext/curl/php_curl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_curl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_curl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef _PHP_CURL_H
#define _PHP_CURL_H
@@ -131,7 +131,7 @@ struct _php_curl_free {
typedef struct {
struct _php_curl_error err;
- struct _php_curl_free to_free;
+ struct _php_curl_free *to_free;
struct _php_curl_send_headers header;
void ***thread_ctx;
CURL *cp;
@@ -150,6 +150,7 @@ typedef struct {
void _php_curl_cleanup_handle(php_curl *);
void _php_curl_multi_cleanup_list(void *data);
+int _php_curl_verify_handlers(php_curl *ch, int reporterror TSRMLS_DC);
/* streams support */
diff --git a/ext/curl/streams.c b/ext/curl/streams.c
index 264f33d26..525a351c3 100644
--- a/ext/curl/streams.c
+++ b/ext/curl/streams.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: streams.c 321634 2012-01-01 13:15:04Z felipe $ */
/* This file implements cURL based wrappers.
* NOTE: If you are implementing your own streams that are intended to
diff --git a/ext/curl/tests/bug27023.phpt b/ext/curl/tests/bug27023.phpt
new file mode 100644
index 000000000..b738c956e
--- /dev/null
+++ b/ext/curl/tests/bug27023.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Bug #27023 (CURLOPT_POSTFIELDS does not parse content types for files)
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ exit("skip curl extension not loaded");
+}
+if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+}
+?>
+--FILE--
+<?php
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file");
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt');
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;type=text/plain');
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;filename=foo.txt');
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;type=text/plain;filename=foo.txt');
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;filename=foo.txt;type=text/plain');
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+
+curl_close($ch);
+?>
+--EXPECTF--
+string(%d) "curl_testdata1.txt|application/octet-stream"
+string(%d) "curl_testdata1.txt|text/plain"
+string(%d) "foo.txt|application/octet-stream"
+string(%d) "foo.txt|text/plain"
+string(%d) "foo.txt|text/plain"
diff --git a/ext/curl/tests/bug48203.phpt b/ext/curl/tests/bug48203.phpt
index 84fcf83a0..d8f4d2269 100644
--- a/ext/curl/tests/bug48203.phpt
+++ b/ext/curl/tests/bug48203.phpt
@@ -18,16 +18,19 @@ $ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $fp);
-curl_setopt($ch, CURLOPT_URL, "");
+curl_setopt($ch, CURLOPT_URL, getenv('PHP_CURL_HTTP_REMOTE_SERVER'));
fclose($fp); // <-- premature close of $fp caused a crash!
curl_exec($ch);
+curl_close($ch);
echo "Ok\n";
?>
--CLEAN--
<?php @unlink(dirname(__FILE__) . '/bug48203.tmp'); ?>
---EXPECT--
+--EXPECTF--
+Warning: curl_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203.php on line %d
+%A
Ok
diff --git a/ext/curl/tests/bug48203_multi.phpt b/ext/curl/tests/bug48203_multi.phpt
new file mode 100644
index 000000000..7d4ee4769
--- /dev/null
+++ b/ext/curl/tests/bug48203_multi.phpt
@@ -0,0 +1,90 @@
+--TEST--
+Variation of bug #48203 with curl_multi_exec (Crash when file pointers passed to curl are closed before calling curl_multi_exec)
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ exit("skip curl extension not loaded");
+}
+if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+}
+?>
+--FILE--
+<?php
+
+function checkForClosedFilePointer($curl_option, $description) {
+ $fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w');
+
+ $ch1 = curl_init();
+ $ch2 = curl_init();
+
+ $options = array(
+ CURLOPT_RETURNTRANSFER => 1,
+ $curl_option => $fp,
+ CURLOPT_URL => getenv("PHP_CURL_HTTP_REMOTE_SERVER")
+ );
+
+ // we also need to set CURLOPT_VERBOSE to test CURLOPT_STDERR properly
+ if (CURLOPT_STDERR == $curl_option) {
+ $options[CURLOPT_VERBOSE] = 1;
+ }
+
+ if (CURLOPT_INFILE == $curl_option) {
+ $options[CURLOPT_UPLOAD] = 1;
+ }
+
+ curl_setopt_array($ch1, $options);
+ curl_setopt_array($ch2, $options);
+
+ fclose($fp); // <-- premature close of $fp caused a crash!
+
+ $mh = curl_multi_init();
+
+ curl_multi_add_handle($mh, $ch1);
+ curl_multi_add_handle($mh, $ch2);
+
+ $active = 0;
+ do {
+ curl_multi_exec($mh, $active);
+ } while ($active > 0);
+
+ curl_multi_remove_handle($mh, $ch1);
+ curl_multi_remove_handle($mh, $ch2);
+ curl_multi_close($mh);
+
+ echo "Ok for $description\n";
+}
+
+$options_to_check = array(
+ "CURLOPT_STDERR", "CURLOPT_WRITEHEADER", "CURLOPT_FILE", "CURLOPT_INFILE"
+);
+
+foreach($options_to_check as $option) {
+ checkForClosedFilePointer(constant($option), $option);
+}
+
+?>
+--CLEAN--
+<?php @unlink(dirname(__FILE__) . '/bug48203.tmp'); ?>
+--EXPECTF--
+Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36
+
+Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36
+%A
+Ok for CURLOPT_STDERR
+%A
+Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+
+Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+Ok for CURLOPT_WRITEHEADER
+
+Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+
+Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+%A
+Ok for CURLOPT_FILE
+
+Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+
+Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
+Ok for CURLOPT_INFILE
diff --git a/ext/curl/tests/bug54798.phpt b/ext/curl/tests/bug54798.phpt
new file mode 100644
index 000000000..7ec84adda
--- /dev/null
+++ b/ext/curl/tests/bug54798.phpt
@@ -0,0 +1,72 @@
+--TEST--
+Bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed before calling curl_exec)
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ exit("skip curl extension not loaded");
+}
+if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+}
+?>
+--FILE--
+<?php
+
+function checkForClosedFilePointer($host, $curl_option, $description) {
+ $fp = fopen(dirname(__FILE__) . '/bug54798.tmp', 'w+');
+
+ $ch = curl_init();
+
+ // we also need CURLOPT_VERBOSE to be set to test CURLOPT_STDERR properly
+ if (CURLOPT_STDERR == $curl_option) {
+ curl_setopt($ch, CURLOPT_VERBOSE, 1);
+ }
+
+ if (CURLOPT_INFILE == $curl_option) {
+ curl_setopt($ch, CURLOPT_UPLOAD, 1);
+ }
+
+ curl_setopt($ch, $curl_option, $fp);
+
+ curl_setopt($ch, CURLOPT_URL, $host);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+ fclose($fp); // <-- premature close of $fp caused a crash!
+
+ curl_exec($ch);
+
+ curl_close($ch);
+
+ echo "Ok for $description\n";
+}
+
+$options_to_check = array(
+ "CURLOPT_STDERR",
+ "CURLOPT_WRITEHEADER",
+ "CURLOPT_FILE",
+ "CURLOPT_INFILE"
+);
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+foreach($options_to_check as $option) {
+ checkForClosedFilePointer($host, constant($option), $option);
+}
+
+?>
+--CLEAN--
+<?php @unlink(dirname(__FILE__) . '/bug54798.tmp'); ?>
+--EXPECTF--
+Warning: curl_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug54798.php on line %d
+* About to connect() %a
+* Closing connection #%d
+Ok for CURLOPT_STDERR
+
+Warning: curl_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug54798.php on line 24
+Ok for CURLOPT_WRITEHEADER
+
+Warning: curl_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug54798.php on line 24
+%a
+Ok for CURLOPT_FILE
+
+Warning: curl_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug54798.php on line %d
+Ok for CURLOPT_INFILE
diff --git a/ext/curl/tests/curl_CURLOPT_READDATA.phpt b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
index 00f3ea95a..ea63d445a 100644
--- a/ext/curl/tests/curl_CURLOPT_READDATA.phpt
+++ b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
@@ -4,7 +4,7 @@ Test CURLOPT_READDATA without a callback function
Mattijs Hoitink mattijshoitink@gmail.com
#Testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_basic_008.phpt b/ext/curl/tests/curl_basic_008.phpt
index 32de4d0f5..29e334370 100755
--- a/ext/curl/tests/curl_basic_008.phpt
+++ b/ext/curl/tests/curl_basic_008.phpt
@@ -3,7 +3,13 @@ Test curl_error() & curl_errno() function with problematic host
--CREDITS--
TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net>
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php
+ if (!extension_loaded("curl")) print "skip";
+ $addr = "www.".uniqid().".".uniqid();
+ if (gethostbyname($addr) != $addr) {
+ print "skip catch all dns";
+ }
+?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_basic_010.phpt b/ext/curl/tests/curl_basic_010.phpt
index 9a595b3c0..7da64d39b 100644
--- a/ext/curl/tests/curl_basic_010.phpt
+++ b/ext/curl/tests/curl_basic_010.phpt
@@ -3,7 +3,13 @@ Test curl_error() & curl_errno() function with problematic proxy
--CREDITS--
TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net>
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php
+ if (!extension_loaded("curl")) print "skip";
+ $addr = "www.".uniqid().".".uniqid();
+ if (gethostbyname($addr) != $addr) {
+ print "skip catch all dns";
+ }
+?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_basic_011.phpt b/ext/curl/tests/curl_basic_011.phpt
index dfdc8f9e0..10c90b123 100644
--- a/ext/curl/tests/curl_basic_011.phpt
+++ b/ext/curl/tests/curl_basic_011.phpt
@@ -3,7 +3,7 @@ Test curl_opt() function with COOKIE
--CREDITS--
TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -35,4 +35,4 @@ TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
*** Testing curl with cookie ***
string(3) "bar"
===DONE===
- \ No newline at end of file
+
diff --git a/ext/curl/tests/curl_copy_handle_basic_001.phpt b/ext/curl/tests/curl_copy_handle_basic_001.phpt
index db4bf0233..f1b4db3ce 100644
--- a/ext/curl/tests/curl_copy_handle_basic_001.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_001.phpt
@@ -4,7 +4,7 @@ Test curl_copy_handle() with simple get
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
@@ -39,4 +39,4 @@ string(106) "array(2) {
array(0) {
}
"
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_002.phpt b/ext/curl/tests/curl_copy_handle_basic_002.phpt
index 8a3582384..9ab33635f 100644
--- a/ext/curl/tests/curl_copy_handle_basic_002.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_002.phpt
@@ -4,7 +4,7 @@ Test curl_copy_handle() with simple POST
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
@@ -29,8 +29,6 @@ Rick Buitenman <rick@meritos.nl>
var_dump( $curl_content );
?>
===DONE===
---XFAIL--
-This test fails, the copy seems to be missing the CURLOPT_POSTFIELDS after the original is closed
--EXPECTF--
*** Testing curl copy handle with simple POST ***
string(163) "array(1) {
diff --git a/ext/curl/tests/curl_copy_handle_basic_004.phpt b/ext/curl/tests/curl_copy_handle_basic_004.phpt
index 2b75eb6a4..9b794e91b 100644
--- a/ext/curl/tests/curl_copy_handle_basic_004.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_004.phpt
@@ -4,7 +4,7 @@ Test curl_copy_handle() after exec()
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
@@ -41,4 +41,4 @@ string(106) "array(2) {
array(0) {
}
"
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_005.phpt b/ext/curl/tests/curl_copy_handle_basic_005.phpt
index dcc7e47af..aa9e2fa99 100644
--- a/ext/curl/tests/curl_copy_handle_basic_005.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_005.phpt
@@ -4,7 +4,7 @@ Test curl_copy_handle() after exec() with POST
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
@@ -32,8 +32,6 @@ Rick Buitenman <rick@meritos.nl>
var_dump( $curl_content_copy );
?>
===DONE===
---XFAIL--
-This test fails, the output of the copy seems to be corrupted if the original is closed after exec()
--EXPECTF--
*** Test curl_copy_handle() after exec() with POST ***
string(163) "array(1) {
diff --git a/ext/curl/tests/curl_copy_handle_basic_006.phpt b/ext/curl/tests/curl_copy_handle_basic_006.phpt
index d2374c721..defc0f232 100644
--- a/ext/curl/tests/curl_copy_handle_basic_006.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_006.phpt
@@ -4,7 +4,7 @@ Test curl_copy_handle() with User Agent
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_copy_handle_basic_007.phpt b/ext/curl/tests/curl_copy_handle_basic_007.phpt
index a51d9f6df..aa7306c1c 100644
--- a/ext/curl/tests/curl_copy_handle_basic_007.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_007.phpt
@@ -1,7 +1,7 @@
--TEST--
Test curl_copy_handle() with simple POST
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
diff --git a/ext/curl/tests/curl_copy_handle_basic_008.phpt b/ext/curl/tests/curl_copy_handle_basic_008.phpt
new file mode 100644
index 000000000..692c2df19
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_008.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test curl_copy_handle() with CURLOPT_PROGRESSFUNCTION
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+--FILE--
+<?php
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ $url = "{$host}/get.php";
+ $ch = curl_init($url);
+
+ curl_setopt($ch, CURLOPT_NOPROGRESS, 0);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function() { });
+ $ch2 = curl_copy_handle($ch);
+ echo curl_exec($ch), PHP_EOL;
+ unset($ch);
+ echo curl_exec($ch2);
+
+?>
+--EXPECTF--
+Hello World!
+Hello World!
+Hello World!
+Hello World!
diff --git a/ext/curl/tests/curl_error_basic.phpt b/ext/curl/tests/curl_error_basic.phpt
index c9aa9ef8a..bd01847f0 100644
--- a/ext/curl/tests/curl_error_basic.phpt
+++ b/ext/curl/tests/curl_error_basic.phpt
@@ -4,7 +4,15 @@ curl_error() function - basic test for curl_error using a fake url
Mattijs Hoitink mattijshoitink@gmail.com
#Testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php
+
+if (!extension_loaded("curl")) die("skip\n");
+
+$url = "fakeURL";
+$ip = gethostbyname($url);
+if ($ip != $url) die("skip 'fakeURL' resolves to $ip\n");
+
+?>
--FILE--
<?php
/*
@@ -21,13 +29,13 @@ echo "== Testing curl_error with a fake URL ==\n";
// cURL handler
$ch = curl_init($url);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-ob_start(); // start output buffering
curl_exec($ch);
-echo "Error: " . curl_error($ch);
+var_dump(curl_error($ch));
curl_close($ch);
?>
---EXPECT--
+--EXPECTF--
== Testing curl_error with a fake URL ==
-Error: Couldn't resolve host 'fakeURL'
+string(%d) "%sfakeURL%s"
diff --git a/ext/curl/tests/curl_file_deleted_before_curl_close.phpt b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt
new file mode 100644
index 000000000..592f110fb
--- /dev/null
+++ b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Memory corruption error if fp of just created file is closed before curl_close.
+--CREDITS--
+Alexey Shein <confik@gmail.com>
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+$ch = curl_init(getenv('PHP_CURL_HTTP_REMOTE_SERVER'));
+
+$temp_file = dirname(__FILE__) . '/curl_file_deleted_before_curl_close.tmp';
+if (file_exists($temp_file)) {
+ unlink($temp_file); // file should not exist before test
+}
+
+$handle = fopen($temp_file, 'w');
+
+curl_setopt($ch, CURLOPT_STDERR, $handle);
+curl_setopt($ch, CURLOPT_VERBOSE, 1);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+curl_exec($ch);
+
+fclose($handle); // causes glibc memory error
+
+//unlink($temp_file); // uncomment to test segfault (file not found on iowrite.c)
+
+curl_close($ch);
+echo "Closed correctly\n";
+?>
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/curl_file_deleted_before_curl_close.tmp');
+?>
+--EXPECTF--
+* Closing connection #%d
+Closed correctly
diff --git a/ext/curl/tests/curl_multi_getcontent_basic3.phpt b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
index bf17ab6b6..ac2a37172 100644
--- a/ext/curl/tests/curl_multi_getcontent_basic3.phpt
+++ b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
@@ -5,7 +5,10 @@ Rein Velt (rein@velt.org)
#TestFest Utrecht 20090509
--SKIPIF--
<?php
-if (!extension_loaded('curl')) print 'skip';
+if (!extension_loaded('curl')) print 'skip need ext/curl';
+if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+}
?>
--FILE--
<?php
@@ -16,7 +19,8 @@ if (!extension_loaded('curl')) print 'skip';
$ch2=curl_init();
//SET URL AND OTHER OPTIONS
- curl_setopt($ch1, CURLOPT_URL, "http://php.net/robots.txt");
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ curl_setopt($ch1, CURLOPT_URL, "{$host}/get.php?test=getpost&get_param=Hello%20World");
curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
@@ -46,19 +50,13 @@ if (!extension_loaded('curl')) print 'skip';
echo $results2;
?>
---EXPECT--
-User-agent: *
-Disallow: /backend/
-Disallow: /distributions/
-Disallow: /stats/
-Disallow: /source.php
-Disallow: /search.php
-Disallow: /mod.php
-Disallow: /manual/add-note.php
-
-Disallow: /harming/humans
-Disallow: /ignoring/human/orders
-Disallow: /harm/to/self
-
+--EXPECTF--
+array(2) {
+ ["test"]=>
+ string(7) "getpost"
+ ["get_param"]=>
+ string(11) "Hello World"
+}
+array(0) {
+}
CURL2
-
diff --git a/ext/curl/tests/curl_setopt_array_basic.phpt b/ext/curl/tests/curl_setopt_array_basic.phpt
index 877079bca..427de7fc7 100644
--- a/ext/curl/tests/curl_setopt_array_basic.phpt
+++ b/ext/curl/tests/curl_setopt_array_basic.phpt
@@ -46,6 +46,7 @@ $returnContent = curl_exec($ch);
curl_close($ch);
var_dump($returnContent);
+isset($tempname) and is_file($tempname) and @unlink($tempname);
?>
--EXPECT--
diff --git a/ext/curl/tests/curl_setopt_basic002.phpt b/ext/curl/tests/curl_setopt_basic002.phpt
index 051703fb0..d90ecb7bd 100644
--- a/ext/curl/tests/curl_setopt_basic002.phpt
+++ b/ext/curl/tests/curl_setopt_basic002.phpt
@@ -4,7 +4,7 @@ curl_setopt basic tests with CURLOPT_STDERR.
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
@@ -26,7 +26,7 @@ $curl_content = curl_exec($ch);
fclose($handle);
unset($handle);
-var_dump( file_get_contents($temp_file) );
+var_dump(preg_replace('/[\r\n]/', ' ', file_get_contents($temp_file)));
@unlink($temp_file);
ob_start(); // start output buffering
@@ -38,7 +38,7 @@ ob_end_clean();
fclose($handle);
unset($handle);
-var_dump( file_get_contents($temp_file) );
+var_dump(preg_replace('/[\r\n]/', ' ', file_get_contents($temp_file)));
@unlink($temp_file);
curl_close($ch);
@@ -48,3 +48,5 @@ curl_close($ch);
*** Testing curl_setopt with CURLOPT_STDERR
string(%d) "%S"
string(%d) "%S"
+* Closing connection #%d
+
diff --git a/ext/curl/tests/curl_setopt_basic003.phpt b/ext/curl/tests/curl_setopt_basic003.phpt
index 47ae0f773..784914076 100644
--- a/ext/curl/tests/curl_setopt_basic003.phpt
+++ b/ext/curl/tests/curl_setopt_basic003.phpt
@@ -4,7 +4,7 @@ curl_setopt() call with CURLOPT_HTTPHEADER
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_setopt_basic004.phpt b/ext/curl/tests/curl_setopt_basic004.phpt
index 63f956162..97b4115e3 100644
--- a/ext/curl/tests/curl_setopt_basic004.phpt
+++ b/ext/curl/tests/curl_setopt_basic004.phpt
@@ -4,7 +4,7 @@ curl_setopt() call with CURLOPT_RETURNTRANSFER
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_version_error.phpt b/ext/curl/tests/curl_version_error.phpt
index f9de8dd32..fb4793af1 100644
--- a/ext/curl/tests/curl_version_error.phpt
+++ b/ext/curl/tests/curl_version_error.phpt
@@ -2,9 +2,12 @@
Test curl_version() function : error conditions
--SKIPIF--
<?php
-if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+if (!extension_loaded("curl")) {
die('skip - curl extension not available in this build');
}
+if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
+}
?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_version_variation1.phpt b/ext/curl/tests/curl_version_variation1.phpt
index 4b8676099..cd912c480 100644
--- a/ext/curl/tests/curl_version_variation1.phpt
+++ b/ext/curl/tests/curl_version_variation1.phpt
@@ -2,8 +2,11 @@
Test curl_version() function : usage variations - test values for $ascii argument
--SKIPIF--
<?php
-if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- die('skip - curl extension not available in this build');
+if (!extension_loaded("curl")) {
+ echo "skip - curl extension not available in this build";
+}
+if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
}
?>
--FILE--
diff --git a/ext/curl/tests/curl_writeheader_callback.phpt b/ext/curl/tests/curl_writeheader_callback.phpt
index ae0075c84..fa27363a4 100644
--- a/ext/curl/tests/curl_writeheader_callback.phpt
+++ b/ext/curl/tests/curl_writeheader_callback.phpt
@@ -6,7 +6,14 @@ Dutch UG, TestFest 2009, Utrecht
--DESCRIPTION--
Hit the host identified by PHP_CURL_HTTP_REMOTE_SERVER and determine that the headers are sent to the callback specified for CURLOPT_HEADERFUNCTION. Different test servers specified for PHP_CURL_HTTP_REMOTE_SERVER might return different sets of headers. Just test for HTTP/1.1 200 OK.
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php
+if (!extension_loaded("curl")) {
+ echo "skip - curl extension not available in this build";
+}
+if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
+}
+?>
--FILE--
<?php
diff --git a/ext/curl/tests/responder/get.php b/ext/curl/tests/responder/get.php
index e77faa57d..9e13d6a74 100644
--- a/ext/curl/tests/responder/get.php
+++ b/ext/curl/tests/responder/get.php
@@ -1,5 +1,6 @@
<?php
- switch($_GET['test']) {
+ $test = isset($_GET['test']) ? $_GET['test'] : null;
+ switch($test) {
case 'post':
var_dump($_POST);
break;
@@ -25,6 +26,11 @@
case 'contenttype':
header('Content-Type: text/plain;charset=utf-8');
break;
+ case 'file':
+ if (isset($_FILES['file'])) {
+ echo $_FILES['file']['name'] . '|' . $_FILES['file']['type'];
+ }
+ break;
default:
echo "Hello World!\n";
echo "Hello World!";
diff --git a/ext/date/lib/interval.c b/ext/date/lib/interval.c
index 6558d5a8c..edd8fd88c 100644
--- a/ext/date/lib/interval.c
+++ b/ext/date/lib/interval.c
@@ -16,9 +16,10 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interval.c 312235 2011-06-17 16:38:23Z derick $ */
+/* $Id: interval.c 320563 2011-12-07 08:39:43Z pajoye $ */
#include "timelib.h"
+#include <math.h>
timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
{
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index 0539fa80f..467279a3b 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Jun 5 15:26:42 2011 */
+/* Generated by re2c 0.13.5 on Mon Dec 5 22:02:41 2011 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_date.c 311831 2011-06-05 13:30:01Z bjori $ */
+/* $Id: parse_date.c 320481 2011-12-06 06:21:08Z derick $ */
#include "timelib.h"
@@ -120,8 +120,8 @@ typedef unsigned char uchar;
#define TIMELIB_DEINIT timelib_string_free(str)
#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
-#define TIMELIB_PROCESS_YEAR(x) { \
- if ((x) == TIMELIB_UNSET) { \
+#define TIMELIB_PROCESS_YEAR(x, l) { \
+ if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
/* (x) = 0; */ \
} else if ((x) < 100) { \
if ((x) < 70) { \
@@ -439,7 +439,7 @@ static char *timelib_string(Scanner *s)
return tmp;
}
-static timelib_sll timelib_get_nr(char **ptr, int max_length)
+static timelib_sll timelib_get_nr_ex(char **ptr, int max_length, int *scanned_length)
{
char *begin, *end, *str;
timelib_sll tmp_nr = TIMELIB_UNSET;
@@ -457,6 +457,9 @@ static timelib_sll timelib_get_nr(char **ptr, int max_length)
++len;
}
end = *ptr;
+ if (scanned_length) {
+ *scanned_length = end - begin;
+ }
str = calloc(1, end - begin + 1);
memcpy(str, begin, end - begin);
tmp_nr = strtoll(str, NULL, 10);
@@ -464,6 +467,11 @@ static timelib_sll timelib_get_nr(char **ptr, int max_length)
return tmp_nr;
}
+static timelib_sll timelib_get_nr(char **ptr, int max_length)
+{
+ return timelib_get_nr_ex(ptr, max_length, NULL);
+}
+
static void timelib_skip_day_suffix(char **ptr)
{
if (isspace(**ptr)) {
@@ -776,7 +784,7 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found
return value;
}
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb)
+static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
{
timelib_tzinfo *res;
long retval = 0;
@@ -825,7 +833,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
#endif
/* If we have a TimeZone identifier to start with, use it */
if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
- if ((res = timelib_parse_tzfile(tz_abbr, tzdb)) != NULL) {
+ if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
t->tz_info = res;
t->zone_type = TIMELIB_ZONETYPE_ID;
found++;
@@ -854,7 +862,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
} \
}
-static int scan(Scanner *s)
+static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
{
uchar *cursor = s->cur;
char *str, *ptr = NULL;
@@ -1026,7 +1034,7 @@ yy4:
DEBUG_OUTPUT("tzcorrection | tz");
TIMELIB_INIT;
TIMELIB_HAVE_TZ();
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -4173,13 +4181,14 @@ yy198:
yy199:
YYDEBUG(199, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("datetextual | datenoyear");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
@@ -4471,7 +4480,7 @@ yy223:
}
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -5376,13 +5385,14 @@ yy294:
yy295:
YYDEBUG(295, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("datenoday");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
@@ -6606,13 +6616,14 @@ yy362:
yy364:
YYDEBUG(364, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("pgtextshort");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
@@ -9783,7 +9794,7 @@ yy491:
}
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -10224,14 +10235,15 @@ yy534:
yy535:
YYDEBUG(535, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("datefull");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->d = timelib_get_nr((char **) &ptr, 2);
timelib_skip_day_suffix((char **) &ptr);
s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL;
}
@@ -11017,13 +11029,14 @@ yy611:
yy612:
YYDEBUG(612, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("pointed date YY");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->d = timelib_get_nr((char **) &ptr, 2);
s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
@@ -11668,13 +11681,14 @@ yy656:
yy657:
YYDEBUG(657, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("gnudateshort");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
@@ -11784,14 +11798,15 @@ yy666:
yy667:
YYDEBUG(667, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("americanshort | american");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
if (*ptr == '/') {
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
}
TIMELIB_DEINIT;
return TIMELIB_AMERICAN;
@@ -12040,7 +12055,7 @@ yy701:
s->time->h = timelib_get_nr((char **) &ptr, 2);
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = timelib_get_nr((char **) &ptr, 2);
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -12599,13 +12614,14 @@ yy763:
yy764:
YYDEBUG(764, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("iso8601date2");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
@@ -12648,13 +12664,14 @@ yy771:
++YYCURSOR;
YYDEBUG(772, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("pgtextreverse");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
@@ -12953,13 +12970,14 @@ yy793:
yy794:
YYDEBUG(794, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("datenodayrev");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
@@ -13284,13 +13302,14 @@ yy821:
yy822:
YYDEBUG(822, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("pgydotd");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->d = timelib_get_nr((char **) &ptr, 3);
s->time->m = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_YEARDAY;
}
@@ -13411,7 +13430,7 @@ yy843:
if (*ptr == '.') {
s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
if (*ptr) { /* timezone is optional */
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -14611,13 +14630,14 @@ yy973:
yy974:
YYDEBUG(974, *YYCURSOR);
{
+ int length = 0;
DEBUG_OUTPUT("gnudateshorter");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
@@ -15751,7 +15771,7 @@ yy1076:
s->time->s = timelib_get_nr((char **) &ptr, 2);
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -24652,7 +24672,7 @@ yy1537:
#define YYMAXFILL 31
-timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb)
+timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
{
Scanner in;
int t;
@@ -24707,7 +24727,7 @@ timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container
in.time->zone_type = 0;
do {
- t = scan(&in);
+ t = scan(&in, tz_get_wrapper);
#ifdef DEBUG_PARSER
printf("%d\n", t);
#endif
@@ -24762,7 +24782,7 @@ static void timelib_time_reset_unset_fields(timelib_time *time)
if (time->f == TIMELIB_UNSET ) time->f = 0.0;
}
-timelib_time *timelib_parse_from_format(char *format, char *string, int len, timelib_error_container **errors, const timelib_tzdb *tzdb)
+timelib_time *timelib_parse_from_format(char *format, char *string, int len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
{
char *fptr = format;
char *ptr = string;
@@ -24770,6 +24790,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
timelib_sll tmp;
Scanner in;
Scanner *s = &in;
+ int allow_extra = 0;
memset(&in, 0, sizeof(in));
in.errors = malloc(sizeof(struct timelib_error_container));
@@ -24798,8 +24819,19 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
switch (*fptr) {
case 'D': /* three letter day */
case 'l': /* full day */
- if (!timelib_lookup_relunit((char **) &ptr)) {
- add_pbf_error(s, "A textual day could not be found", string, begin);
+ {
+ const timelib_relunit* tmprel = 0;
+
+ tmprel = timelib_lookup_relunit((char **) &ptr);
+ if (!tmprel) {
+ add_pbf_error(s, "A textual day could not be found", string, begin);
+ break;
+ } else {
+ in.time->have_relative = 1;
+ in.time->relative.have_weekday_relative = 1;
+ in.time->relative.weekday = tmprel->multiplier;
+ in.time->relative.weekday_behavior = 1;
+ }
}
break;
case 'd': /* two digit day, with leading zero */
@@ -24812,13 +24844,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
case 'S': /* day suffix, ignored, nor checked */
timelib_skip_day_suffix((char **) &ptr);
break;
- case 'z': /* day of year - resets month (0 based) */
+ case 'z': /* day of year - resets month (0 based) - also initializes everything else to !TIMELIB_UNSET */
TIMELIB_CHECK_NUMBER;
if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
} else {
s->time->m = 1;
s->time->d = tmp + 1;
+ timelib_do_normalize(s->time);
}
break;
@@ -24839,11 +24872,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
}
break;
case 'y': /* two digit year */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->y = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit year could not be found", string, begin);
+ {
+ int length = 0;
+ TIMELIB_CHECK_NUMBER;
+ if ((s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length)) == TIMELIB_UNSET) {
+ add_pbf_error(s, "A two digit year could not be found", string, begin);
+ }
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
}
- TIMELIB_PROCESS_YEAR(s->time->y);
break;
case 'Y': /* four digit year */
TIMELIB_CHECK_NUMBER;
@@ -24879,15 +24915,31 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
}
break;
case 'i': /* two digit minute, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->i = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit minute could not be found", string, begin);
+ {
+ int length;
+ timelib_sll min;
+
+ TIMELIB_CHECK_NUMBER;
+ min = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ if (min == TIMELIB_UNSET || length != 2) {
+ add_pbf_error(s, "A two digit minute could not be found", string, begin);
+ } else {
+ s->time->i = min;
+ }
}
break;
case 's': /* two digit second, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->s = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit second could not be found", string, begin);
+ {
+ int length;
+ timelib_sll sec;
+
+ TIMELIB_CHECK_NUMBER;
+ sec = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ if (sec == TIMELIB_UNSET || length != 2) {
+ add_pbf_error(s, "A two second minute could not be found", string, begin);
+ } else {
+ s->time->s = sec;
+ }
}
break;
case 'u': /* up to six digit millisecond */
@@ -24928,7 +24980,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
case 'O': /* timezone */
{
int tz_not_found;
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_pbf_error(s, "The timezone could not be found in the database", string, begin);
}
@@ -24983,6 +25035,10 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
timelib_eat_until_separator((char **) &ptr);
break;
+ case '+': /* allow extra chars in the format */
+ allow_extra = 1;
+ break;
+
default:
if (*fptr != *ptr) {
add_pbf_error(s, "The format separator does not match", string, begin);
@@ -24992,11 +25048,20 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
fptr++;
}
if (*ptr) {
- add_pbf_error(s, "Trailing data", string, ptr);
+ if (allow_extra) {
+ add_pbf_warning(s, "Trailing data", string, ptr);
+ } else {
+ add_pbf_error(s, "Trailing data", string, ptr);
+ }
+ }
+ /* ignore trailing +'s */
+ while (*fptr == '+') {
+ fptr++;
}
if (*fptr) {
/* Trailing | and ! specifiers are valid. */
- while (*fptr) {
+ int done = 0;
+ while (*fptr && !done) {
switch (*fptr++) {
case '!': /* reset all fields to default */
timelib_time_reset_fields(s->time);
@@ -25008,6 +25073,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
default:
add_pbf_error(s, "Data missing", string, ptr);
+ done = 1;
}
}
}
diff --git a/ext/date/lib/parse_date.c.orig b/ext/date/lib/parse_date.c.orig
deleted file mode 100644
index 9d7cca772..000000000
--- a/ext/date/lib/parse_date.c.orig
+++ /dev/null
@@ -1,25222 +0,0 @@
-/* Generated by re2c 0.13.5 on Sun Jun 5 15:26:42 2011 */
-#line 1 "ext/date/lib/parse_date.re"
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2010 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: Derick Rethans <derick@derickrethans.nl> |
- +----------------------------------------------------------------------+
- */
-
-/* $Id: parse_date.c 311831 2011-06-05 13:30:01Z bjori $ */
-
-#include "timelib.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <math.h>
-#include <assert.h>
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#if defined(_MSC_VER)
-# define strtoll(s, f, b) _atoi64(s)
-#elif !defined(HAVE_STRTOLL)
-# if defined(HAVE_ATOLL)
-# define strtoll(s, f, b) atoll(s)
-# else
-# define strtoll(s, f, b) strtol(s, f, b)
-# endif
-#endif
-
-#define TIMELIB_UNSET -99999
-
-#define TIMELIB_SECOND 1
-#define TIMELIB_MINUTE 2
-#define TIMELIB_HOUR 3
-#define TIMELIB_DAY 4
-#define TIMELIB_MONTH 5
-#define TIMELIB_YEAR 6
-#define TIMELIB_WEEKDAY 7
-#define TIMELIB_SPECIAL 8
-
-#define EOI 257
-#define TIME 258
-#define DATE 259
-
-#define TIMELIB_XMLRPC_SOAP 260
-#define TIMELIB_TIME12 261
-#define TIMELIB_TIME24 262
-#define TIMELIB_GNU_NOCOLON 263
-#define TIMELIB_GNU_NOCOLON_TZ 264
-#define TIMELIB_ISO_NOCOLON 265
-
-#define TIMELIB_AMERICAN 266
-#define TIMELIB_ISO_DATE 267
-#define TIMELIB_DATE_FULL 268
-#define TIMELIB_DATE_TEXT 269
-#define TIMELIB_DATE_NOCOLON 270
-#define TIMELIB_PG_YEARDAY 271
-#define TIMELIB_PG_TEXT 272
-#define TIMELIB_PG_REVERSE 273
-#define TIMELIB_CLF 274
-#define TIMELIB_DATE_NO_DAY 275
-#define TIMELIB_SHORTDATE_WITH_TIME 276
-#define TIMELIB_DATE_FULL_POINTED 277
-#define TIMELIB_TIME24_WITH_ZONE 278
-#define TIMELIB_ISO_WEEK 279
-#define TIMELIB_LF_DAY_OF_MONTH 280
-#define TIMELIB_WEEK_DAY_OF_MONTH 281
-
-#define TIMELIB_TIMEZONE 300
-#define TIMELIB_AGO 301
-
-#define TIMELIB_RELATIVE 310
-
-#define TIMELIB_ERROR 999
-
-/* Some compilers like AIX, defines uchar in sys/types.h */
-#undef uchar
-typedef unsigned char uchar;
-
-#define BSIZE 8192
-
-#define YYCTYPE uchar
-#define YYCURSOR cursor
-#define YYLIMIT s->lim
-#define YYMARKER s->ptr
-#define YYFILL(n) return EOI;
-
-#define RET(i) {s->cur = cursor; return i;}
-
-#define timelib_string_free free
-
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
-#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
-#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
-#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
-#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
-#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
-
-#define TIMELIB_INIT s->cur = cursor; str = timelib_string(s); ptr = str
-#define TIMELIB_DEINIT timelib_string_free(str)
-#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
-
-#define TIMELIB_PROCESS_YEAR(x) { \
- if ((x) == TIMELIB_UNSET) { \
- /* (x) = 0; */ \
- } else if ((x) < 100) { \
- if ((x) < 70) { \
- (x) += 2000; \
- } else { \
- (x) += 1900; \
- } \
- } \
-}
-
-#ifdef DEBUG_PARSER
-#define DEBUG_OUTPUT(s) printf("%s\n", s);
-#define YYDEBUG(s,c) { if (s != -1) { printf("state: %d ", s); printf("[%c]\n", c); } }
-#else
-#define DEBUG_OUTPUT(s)
-#define YYDEBUG(s,c)
-#endif
-
-#include "timelib_structs.h"
-
-typedef struct timelib_elems {
- unsigned int c; /* Number of elements */
- char **v; /* Values */
-} timelib_elems;
-
-typedef struct Scanner {
- int fd;
- uchar *lim, *str, *ptr, *cur, *tok, *pos;
- unsigned int line, len;
- struct timelib_error_container *errors;
-
- struct timelib_time *time;
- const timelib_tzdb *tzdb;
-} Scanner;
-
-typedef struct _timelib_lookup_table {
- const char *name;
- int type;
- int value;
-} timelib_lookup_table;
-
-typedef struct _timelib_relunit {
- const char *name;
- int unit;
- int multiplier;
-} timelib_relunit;
-
-#define HOUR(a) (int)(a * 60)
-
-/* The timezone table. */
-const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
-#include "timezonemap.h"
- { NULL, 0, 0, NULL },
-};
-
-const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
-#include "fallbackmap.h"
- { NULL, 0, 0, NULL },
-};
-
-const static timelib_tz_lookup_table timelib_timezone_utc[] = {
- { "utc", 0, 0, "UTC" },
-};
-
-static timelib_relunit const timelib_relunit_lookup[] = {
- { "sec", TIMELIB_SECOND, 1 },
- { "secs", TIMELIB_SECOND, 1 },
- { "second", TIMELIB_SECOND, 1 },
- { "seconds", TIMELIB_SECOND, 1 },
- { "min", TIMELIB_MINUTE, 1 },
- { "mins", TIMELIB_MINUTE, 1 },
- { "minute", TIMELIB_MINUTE, 1 },
- { "minutes", TIMELIB_MINUTE, 1 },
- { "hour", TIMELIB_HOUR, 1 },
- { "hours", TIMELIB_HOUR, 1 },
- { "day", TIMELIB_DAY, 1 },
- { "days", TIMELIB_DAY, 1 },
- { "week", TIMELIB_DAY, 7 },
- { "weeks", TIMELIB_DAY, 7 },
- { "fortnight", TIMELIB_DAY, 14 },
- { "fortnights", TIMELIB_DAY, 14 },
- { "forthnight", TIMELIB_DAY, 14 },
- { "forthnights", TIMELIB_DAY, 14 },
- { "month", TIMELIB_MONTH, 1 },
- { "months", TIMELIB_MONTH, 1 },
- { "year", TIMELIB_YEAR, 1 },
- { "years", TIMELIB_YEAR, 1 },
-
- { "monday", TIMELIB_WEEKDAY, 1 },
- { "mon", TIMELIB_WEEKDAY, 1 },
- { "tuesday", TIMELIB_WEEKDAY, 2 },
- { "tue", TIMELIB_WEEKDAY, 2 },
- { "wednesday", TIMELIB_WEEKDAY, 3 },
- { "wed", TIMELIB_WEEKDAY, 3 },
- { "thursday", TIMELIB_WEEKDAY, 4 },
- { "thu", TIMELIB_WEEKDAY, 4 },
- { "friday", TIMELIB_WEEKDAY, 5 },
- { "fri", TIMELIB_WEEKDAY, 5 },
- { "saturday", TIMELIB_WEEKDAY, 6 },
- { "sat", TIMELIB_WEEKDAY, 6 },
- { "sunday", TIMELIB_WEEKDAY, 0 },
- { "sun", TIMELIB_WEEKDAY, 0 },
-
- { "weekday", TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
- { "weekdays", TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
- { NULL, 0, 0 }
-};
-
-/* The relative text table. */
-static timelib_lookup_table const timelib_reltext_lookup[] = {
- { "first", 0, 1 },
- { "next", 0, 1 },
- { "second", 0, 2 },
- { "third", 0, 3 },
- { "fourth", 0, 4 },
- { "fifth", 0, 5 },
- { "sixth", 0, 6 },
- { "seventh", 0, 7 },
- { "eight", 0, 8 },
- { "eighth", 0, 8 },
- { "ninth", 0, 9 },
- { "tenth", 0, 10 },
- { "eleventh", 0, 11 },
- { "twelfth", 0, 12 },
- { "last", 0, -1 },
- { "previous", 0, -1 },
- { "this", 1, 0 },
- { NULL, 1, 0 }
-};
-
-/* The month table. */
-static timelib_lookup_table const timelib_month_lookup[] = {
- { "jan", 0, 1 },
- { "feb", 0, 2 },
- { "mar", 0, 3 },
- { "apr", 0, 4 },
- { "may", 0, 5 },
- { "jun", 0, 6 },
- { "jul", 0, 7 },
- { "aug", 0, 8 },
- { "sep", 0, 9 },
- { "sept", 0, 9 },
- { "oct", 0, 10 },
- { "nov", 0, 11 },
- { "dec", 0, 12 },
- { "i", 0, 1 },
- { "ii", 0, 2 },
- { "iii", 0, 3 },
- { "iv", 0, 4 },
- { "v", 0, 5 },
- { "vi", 0, 6 },
- { "vii", 0, 7 },
- { "viii", 0, 8 },
- { "ix", 0, 9 },
- { "x", 0, 10 },
- { "xi", 0, 11 },
- { "xii", 0, 12 },
-
- { "january", 0, 1 },
- { "february", 0, 2 },
- { "march", 0, 3 },
- { "april", 0, 4 },
- { "may", 0, 5 },
- { "june", 0, 6 },
- { "july", 0, 7 },
- { "august", 0, 8 },
- { "september", 0, 9 },
- { "october", 0, 10 },
- { "november", 0, 11 },
- { "december", 0, 12 },
- { NULL, 0, 0 }
-};
-
-#if 0
-static char* timelib_ltrim(char *s)
-{
- char *ptr = s;
- while (ptr[0] == ' ' || ptr[0] == '\t') {
- ptr++;
- }
- return ptr;
-}
-#endif
-
-#if 0
-uchar *fill(Scanner *s, uchar *cursor){
- if(!s->eof){
- unsigned int cnt = s->tok - s->bot;
- if(cnt){
- memcpy(s->bot, s->tok, s->lim - s->tok);
- s->tok = s->bot;
- s->ptr -= cnt;
- cursor -= cnt;
- s->pos -= cnt;
- s->lim -= cnt;
- }
- if((s->top - s->lim) < BSIZE){
- uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
- memcpy(buf, s->tok, s->lim - s->tok);
- s->tok = buf;
- s->ptr = &buf[s->ptr - s->bot];
- cursor = &buf[cursor - s->bot];
- s->pos = &buf[s->pos - s->bot];
- s->lim = &buf[s->lim - s->bot];
- s->top = &s->lim[BSIZE];
- free(s->bot);
- s->bot = buf;
- }
- if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){
- s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
- }
- s->lim += cnt;
- }
- return cursor;
-}
-#endif
-
-static void add_warning(Scanner *s, char *error)
-{
- s->errors->warning_count++;
- s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
- s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
- s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
- s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
-}
-
-static void add_error(Scanner *s, char *error)
-{
- s->errors->error_count++;
- s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
- s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
- s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
- s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
-}
-
-static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
-{
- s->errors->warning_count++;
- s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
- s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
- s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
- s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
-}
-
-static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
-{
- s->errors->error_count++;
- s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
- s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
- s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
- s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
-}
-
-static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
-{
- timelib_sll retval = 0;
-
- while (!strchr("AaPp", **ptr)) {
- ++*ptr;
- }
- if (**ptr == 'a' || **ptr == 'A') {
- if (h == 12) {
- retval = -12;
- }
- } else if (h != 12) {
- retval = 12;
- }
- ++*ptr;
- if (**ptr == '.') {
- *ptr += 3;
- } else {
- ++*ptr;
- }
- return retval;
-}
-
-static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
-{
- timelib_sll retval = 0;
-
- while (!strchr("AaPp", **ptr)) {
- ++*ptr;
- }
- if (**ptr == 'a' || **ptr == 'A') {
- if (h == 12) {
- retval = -12;
- }
- } else if (h != 12) {
- retval = 12;
- }
- ++*ptr;
- if (**ptr == '.') {
- ++*ptr;
- if (**ptr != 'm' && **ptr != 'M') {
- return TIMELIB_UNSET;
- }
- ++*ptr;
- if (**ptr != '.' ) {
- return TIMELIB_UNSET;
- }
- ++*ptr;
- } else if (**ptr == 'm' || **ptr == 'M') {
- ++*ptr;
- } else {
- return TIMELIB_UNSET;
- }
- return retval;
-}
-
-static char *timelib_string(Scanner *s)
-{
- char *tmp = calloc(1, s->cur - s->tok + 1);
- memcpy(tmp, s->tok, s->cur - s->tok);
-
- return tmp;
-}
-
-static timelib_sll timelib_get_nr(char **ptr, int max_length)
-{
- char *begin, *end, *str;
- timelib_sll tmp_nr = TIMELIB_UNSET;
- int len = 0;
-
- while ((**ptr < '0') || (**ptr > '9')) {
- if (**ptr == '\0') {
- return TIMELIB_UNSET;
- }
- ++*ptr;
- }
- begin = *ptr;
- while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
- ++*ptr;
- ++len;
- }
- end = *ptr;
- str = calloc(1, end - begin + 1);
- memcpy(str, begin, end - begin);
- tmp_nr = strtoll(str, NULL, 10);
- free(str);
- return tmp_nr;
-}
-
-static void timelib_skip_day_suffix(char **ptr)
-{
- if (isspace(**ptr)) {
- return;
- }
- if (!strncasecmp(*ptr, "nd", 2) || !strncasecmp(*ptr, "rd", 2) ||!strncasecmp(*ptr, "st", 2) || !strncasecmp(*ptr, "th", 2)) {
- *ptr += 2;
- }
-}
-
-static double timelib_get_frac_nr(char **ptr, int max_length)
-{
- char *begin, *end, *str;
- double tmp_nr = TIMELIB_UNSET;
- int len = 0;
-
- while ((**ptr != '.') && (**ptr != ':') && ((**ptr < '0') || (**ptr > '9'))) {
- if (**ptr == '\0') {
- return TIMELIB_UNSET;
- }
- ++*ptr;
- }
- begin = *ptr;
- while (((**ptr == '.') || (**ptr == ':') || ((**ptr >= '0') && (**ptr <= '9'))) && len < max_length) {
- ++*ptr;
- ++len;
- }
- end = *ptr;
- str = calloc(1, end - begin + 1);
- memcpy(str, begin, end - begin);
- if (str[0] == ':') {
- str[0] = '.';
- }
- tmp_nr = strtod(str, NULL);
- free(str);
- return tmp_nr;
-}
-
-static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
-{
- timelib_ull dir = 1;
-
- while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) {
- if (**ptr == '\0') {
- return TIMELIB_UNSET;
- }
- ++*ptr;
- }
-
- while (**ptr == '+' || **ptr == '-')
- {
- if (**ptr == '-') {
- dir *= -1;
- }
- ++*ptr;
- }
- return dir * timelib_get_nr(ptr, max_length);
-}
-
-static long timelib_parse_tz_cor(char **ptr)
-{
- char *begin = *ptr, *end;
- long tmp;
-
- while (isdigit(**ptr) || **ptr == ':') {
- ++*ptr;
- }
- end = *ptr;
- switch (end - begin) {
- case 1:
- case 2:
- return HOUR(strtol(begin, NULL, 10));
- break;
- case 3:
- case 4:
- if (begin[1] == ':') {
- tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 2, NULL, 10);
- return tmp;
- } else if (begin[2] == ':') {
- tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
- return tmp;
- } else {
- tmp = strtol(begin, NULL, 10);
- return HOUR(tmp / 100) + tmp % 100;
- }
- case 5:
- tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
- return tmp;
- }
- return 0;
-}
-
-static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
-{
- char *word;
- char *begin = *ptr, *end;
- timelib_sll value = 0;
- const timelib_lookup_table *tp;
-
- while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
- ++*ptr;
- }
- end = *ptr;
- word = calloc(1, end - begin + 1);
- memcpy(word, begin, end - begin);
-
- for (tp = timelib_reltext_lookup; tp->name; tp++) {
- if (strcasecmp(word, tp->name) == 0) {
- value = tp->value;
- *behavior = tp->type;
- }
- }
-
- free(word);
- return value;
-}
-
-static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
-{
- while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
- ++*ptr;
- }
- return timelib_lookup_relative_text(ptr, behavior);
-}
-
-static long timelib_lookup_month(char **ptr)
-{
- char *word;
- char *begin = *ptr, *end;
- long value = 0;
- const timelib_lookup_table *tp;
-
- while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
- ++*ptr;
- }
- end = *ptr;
- word = calloc(1, end - begin + 1);
- memcpy(word, begin, end - begin);
-
- for (tp = timelib_month_lookup; tp->name; tp++) {
- if (strcasecmp(word, tp->name) == 0) {
- value = tp->value;
- }
- }
-
- free(word);
- return value;
-}
-
-static long timelib_get_month(char **ptr)
-{
- while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
- ++*ptr;
- }
- return timelib_lookup_month(ptr);
-}
-
-static void timelib_eat_spaces(char **ptr)
-{
- while (**ptr == ' ' || **ptr == '\t') {
- ++*ptr;
- }
-}
-
-static void timelib_eat_until_separator(char **ptr)
-{
- ++*ptr;
- while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
- ++*ptr;
- }
-}
-
-static const timelib_relunit* timelib_lookup_relunit(char **ptr)
-{
- char *word;
- char *begin = *ptr, *end;
- const timelib_relunit *tp, *value = NULL;
-
- while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t') {
- ++*ptr;
- }
- end = *ptr;
- word = calloc(1, end - begin + 1);
- memcpy(word, begin, end - begin);
-
- for (tp = timelib_relunit_lookup; tp->name; tp++) {
- if (strcasecmp(word, tp->name) == 0) {
- value = tp;
- break;
- }
- }
-
- free(word);
- return value;
-}
-
-static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, Scanner *s)
-{
- const timelib_relunit* relunit;
-
- if (!(relunit = timelib_lookup_relunit(ptr))) {
- return;
- }
-
- switch (relunit->unit) {
- case TIMELIB_SECOND: s->time->relative.s += amount * relunit->multiplier; break;
- case TIMELIB_MINUTE: s->time->relative.i += amount * relunit->multiplier; break;
- case TIMELIB_HOUR: s->time->relative.h += amount * relunit->multiplier; break;
- case TIMELIB_DAY: s->time->relative.d += amount * relunit->multiplier; break;
- case TIMELIB_MONTH: s->time->relative.m += amount * relunit->multiplier; break;
- case TIMELIB_YEAR: s->time->relative.y += amount * relunit->multiplier; break;
-
- case TIMELIB_WEEKDAY:
- TIMELIB_HAVE_WEEKDAY_RELATIVE();
- TIMELIB_UNHAVE_TIME();
- s->time->relative.d += (amount > 0 ? amount - 1 : amount) * 7;
- s->time->relative.weekday = relunit->multiplier;
- s->time->relative.weekday_behavior = behavior;
- break;
-
- case TIMELIB_SPECIAL:
- TIMELIB_HAVE_SPECIAL_RELATIVE();
- TIMELIB_UNHAVE_TIME();
- s->time->relative.special.type = relunit->multiplier;
- s->time->relative.special.amount = amount;
- }
-}
-
-const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
-{
- int first_found = 0;
- const timelib_tz_lookup_table *tp, *first_found_elem = NULL;
- const timelib_tz_lookup_table *fmp;
-
- if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
- return timelib_timezone_utc;
- }
-
- for (tp = timelib_timezone_lookup; tp->name; tp++) {
- if (strcasecmp(word, tp->name) == 0) {
- if (!first_found) {
- first_found = 1;
- first_found_elem = tp;
- if (gmtoffset == -1) {
- return tp;
- }
- }
- if (tp->gmtoffset == gmtoffset) {
- return tp;
- }
- }
- }
- if (first_found) {
- return first_found_elem;
- }
-
- for (tp = timelib_timezone_lookup; tp->name; tp++) {
- if (tp->full_tz_name && strcasecmp(word, tp->full_tz_name) == 0) {
- if (!first_found) {
- first_found = 1;
- first_found_elem = tp;
- if (gmtoffset == -1) {
- return tp;
- }
- }
- if (tp->gmtoffset == gmtoffset) {
- return tp;
- }
- }
- }
- if (first_found) {
- return first_found_elem;
- }
-
-
- /* Still didn't find anything, let's find the zone solely based on
- * offset/isdst then */
- for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
- if ((fmp->gmtoffset * 3600) == gmtoffset && fmp->type == isdst) {
- return fmp;
- }
- }
- return NULL;
-}
-
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
-{
- char *word;
- char *begin = *ptr, *end;
- long value = 0;
- const timelib_tz_lookup_table *tp;
-
- while (**ptr != '\0' && **ptr != ')' && **ptr != ' ') {
- ++*ptr;
- }
- end = *ptr;
- word = calloc(1, end - begin + 1);
- memcpy(word, begin, end - begin);
-
- if ((tp = zone_search(word, -1, 0))) {
- value = -tp->gmtoffset / 60;
- *dst = tp->type;
- value += tp->type * 60;
- *found = 1;
- } else {
- *found = 0;
- }
-
- *tz_abbr = word;
- return value;
-}
-
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb)
-{
- timelib_tzinfo *res;
- long retval = 0;
-
- *tz_not_found = 0;
-
- while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
- ++*ptr;
- }
- if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
- *ptr += 3;
- }
- if (**ptr == '+') {
- ++*ptr;
- t->is_localtime = 1;
- t->zone_type = TIMELIB_ZONETYPE_OFFSET;
- *tz_not_found = 0;
- t->dst = 0;
-
- retval = -1 * timelib_parse_tz_cor(ptr);
- } else if (**ptr == '-') {
- ++*ptr;
- t->is_localtime = 1;
- t->zone_type = TIMELIB_ZONETYPE_OFFSET;
- *tz_not_found = 0;
- t->dst = 0;
-
- retval = timelib_parse_tz_cor(ptr);
- } else {
- int found = 0;
- long offset;
- char *tz_abbr;
-
- t->is_localtime = 1;
-
- offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
- if (found) {
- t->zone_type = TIMELIB_ZONETYPE_ABBR;
- }
-#if 0
- /* If we found a TimeZone identifier, use it */
- if (tz_name) {
- t->tz_info = timelib_parse_tzfile(tz_name);
- t->zone_type = TIMELIB_ZONETYPE_ID;
- }
-#endif
- /* If we have a TimeZone identifier to start with, use it */
- if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
- if ((res = timelib_parse_tzfile(tz_abbr, tzdb)) != NULL) {
- t->tz_info = res;
- t->zone_type = TIMELIB_ZONETYPE_ID;
- found++;
- }
- }
- if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
- timelib_time_tz_abbr_update(t, tz_abbr);
- }
- free(tz_abbr);
- *tz_not_found = (found == 0);
- retval = offset;
- }
- while (**ptr == ')') {
- ++*ptr;
- }
- return retval;
-}
-
-#define timelib_split_free(arg) { \
- int i; \
- for (i = 0; i < arg.c; i++) { \
- free(arg.v[i]); \
- } \
- if (arg.v) { \
- free(arg.v); \
- } \
-}
-
-static int scan(Scanner *s)
-{
- uchar *cursor = s->cur;
- char *str, *ptr = NULL;
-
-std:
- s->tok = cursor;
- s->len = 0;
-#line 989 "ext/date/lib/parse_date.re"
-
-
-
-#line 871 "ext/date/lib/parse_date.c"
-{
- YYCTYPE yych;
- unsigned int yyaccept = 0;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 100, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 128, 64, 160, 96, 0,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0, 0, 0, 0, 0, 0,
- 0, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 0, 0, 0, 0, 0,
- 0, 24, 24, 24, 88, 24, 24, 24,
- 88, 24, 24, 24, 24, 24, 88, 24,
- 24, 24, 88, 88, 88, 24, 24, 24,
- 24, 24, 24, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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);
- if ((YYLIMIT - YYCURSOR) < 31) YYFILL(31);
- yych = *YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case 0x00:
- case '\n': goto yy52;
- case '\t':
- case ' ': goto yy49;
- case '(': goto yy46;
- case '+':
- case '-': goto yy31;
- case ',':
- case '.': goto yy51;
- case '0': goto yy26;
- case '1': goto yy27;
- case '2': goto yy28;
- case '3': goto yy29;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy30;
- case '@': goto yy12;
- case 'A': goto yy37;
- case 'B': goto yy18;
- case 'C':
- case 'H':
- case 'K':
- case 'Q':
- case 'R':
- case 'U':
- case 'Z': goto yy47;
- case 'D': goto yy41;
- case 'E': goto yy22;
- case 'F': goto yy14;
- case 'G': goto yy45;
- case 'I': goto yy32;
- case 'J': goto yy35;
- case 'L': goto yy16;
- case 'M': goto yy8;
- case 'N': goto yy6;
- case 'O': goto yy39;
- case 'P': goto yy24;
- case 'S': goto yy20;
- case 'T': goto yy10;
- case 'V': goto yy33;
- case 'W': goto yy43;
- case 'X': goto yy34;
- case 'Y': goto yy3;
- case 'a': goto yy38;
- case 'b': goto yy19;
- case 'c':
- case 'g':
- case 'h':
- case 'i':
- case 'k':
- case 'q':
- case 'r':
- case 'u':
- case 'v':
- case 'x':
- case 'z': goto yy48;
- case 'd': goto yy42;
- case 'e': goto yy23;
- case 'f': goto yy15;
- case 'j': goto yy36;
- case 'l': goto yy17;
- case 'm': goto yy9;
- case 'n': goto yy7;
- case 'o': goto yy40;
- case 'p': goto yy25;
- case 's': goto yy21;
- case 't': goto yy11;
- case 'w': goto yy44;
- case 'y': goto yy5;
- default: goto yy54;
- }
-yy2:
- YYDEBUG(2, *YYCURSOR);
-#line 1074 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("firstdayof | lastdayof");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
-
- /* skip "last day of" or "first day of" */
- if (*ptr == 'l') {
- s->time->relative.first_last_day_of = 2;
- } else {
- s->time->relative.first_last_day_of = 1;
- }
-
- TIMELIB_DEINIT;
- return TIMELIB_LF_DAY_OF_MONTH;
- }
-#line 1007 "ext/date/lib/parse_date.c"
-yy3:
- YYDEBUG(3, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= 'E') {
- if (yych <= ')') {
- if (yych >= ')') goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy1523;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych >= 'a') goto yy146;
- } else {
- if (yych <= 'e') goto yy1532;
- if (yych <= 'z') goto yy146;
- }
- }
-yy4:
- YYDEBUG(4, *YYCURSOR);
-#line 1656 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("tzcorrection | tz");
- TIMELIB_INIT;
- TIMELIB_HAVE_TZ();
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- TIMELIB_DEINIT;
- return TIMELIB_TIMEZONE;
- }
-#line 1043 "ext/date/lib/parse_date.c"
-yy5:
- YYDEBUG(5, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy1523;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'e') goto yy1523;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy6:
- YYDEBUG(6, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'D') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'H') {
- if (yych <= 'E') goto yy1494;
- goto yy141;
- } else {
- if (yych <= 'I') goto yy1495;
- if (yych <= 'N') goto yy141;
- goto yy1493;
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych == 'e') goto yy1510;
- goto yy146;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'i') goto yy1511;
- goto yy146;
- } else {
- if (yych <= 'o') goto yy1509;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy7:
- YYDEBUG(7, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'D') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'H') {
- if (yych <= 'E') goto yy1494;
- goto yy141;
- } else {
- if (yych <= 'I') goto yy1495;
- if (yych <= 'N') goto yy141;
- goto yy1493;
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych == 'e') goto yy1494;
- goto yy141;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'i') goto yy1495;
- goto yy141;
- } else {
- if (yych <= 'o') goto yy1493;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
- }
-yy8:
- YYDEBUG(8, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1463;
- } else {
- if (yych == 'I') goto yy1464;
- if (yych <= 'N') goto yy141;
- goto yy1465;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1478;
- goto yy146;
- } else {
- if (yych <= 'n') {
- if (yych <= 'i') goto yy1479;
- goto yy146;
- } else {
- if (yych <= 'o') goto yy1480;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy9:
- YYDEBUG(9, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1463;
- } else {
- if (yych == 'I') goto yy1464;
- if (yych <= 'N') goto yy141;
- goto yy1465;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1463;
- goto yy141;
- } else {
- if (yych <= 'n') {
- if (yych <= 'i') goto yy1464;
- goto yy141;
- } else {
- if (yych <= 'o') goto yy1465;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
- }
-yy10:
- YYDEBUG(10, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case ')': goto yy140;
- case '0':
- case '1': goto yy1393;
- case '2': goto yy1394;
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy1395;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'F':
- case 'G':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'V':
- case 'X':
- case 'Y':
- case 'Z': goto yy141;
- case 'E': goto yy1388;
- case 'H': goto yy1389;
- case 'O': goto yy1390;
- case 'U': goto yy1391;
- case 'W': goto yy1392;
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'f':
- case 'g':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'v':
- case 'x':
- case 'y':
- case 'z': goto yy146;
- case 'e': goto yy1431;
- case 'h': goto yy1432;
- case 'o': goto yy1433;
- case 'u': goto yy1434;
- case 'w': goto yy1435;
- default: goto yy4;
- }
-yy11:
- YYDEBUG(11, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case ')': goto yy140;
- case '0':
- case '1': goto yy1393;
- case '2': goto yy1394;
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy1395;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'F':
- case 'G':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'V':
- case 'X':
- case 'Y':
- case 'Z':
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'f':
- case 'g':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'v':
- case 'x':
- case 'y':
- case 'z': goto yy141;
- case 'E':
- case 'e': goto yy1388;
- case 'H':
- case 'h': goto yy1389;
- case 'O':
- case 'o': goto yy1390;
- case 'U':
- case 'u': goto yy1391;
- case 'W':
- case 'w': goto yy1392;
- default: goto yy4;
- }
-yy12:
- YYDEBUG(12, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '-') goto yy1384;
- if (yych <= '/') goto yy13;
- if (yych <= '9') goto yy1385;
-yy13:
- YYDEBUG(13, *YYCURSOR);
-#line 1751 "ext/date/lib/parse_date.re"
- {
- add_error(s, "Unexpected character");
- goto std;
- }
-#line 1359 "ext/date/lib/parse_date.c"
-yy14:
- YYDEBUG(14, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy1320;
- }
- } else {
- if (yych <= 'N') {
- if (yych == 'I') goto yy1321;
- goto yy141;
- } else {
- if (yych <= 'O') goto yy1322;
- if (yych <= 'Q') goto yy141;
- goto yy1323;
- }
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy146;
- } else {
- if (yych <= 'e') goto yy1361;
- if (yych <= 'h') goto yy146;
- goto yy1362;
- }
- } else {
- if (yych <= 'q') {
- if (yych == 'o') goto yy1363;
- goto yy146;
- } else {
- if (yych <= 'r') goto yy1364;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy15:
- YYDEBUG(15, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy1320;
- }
- } else {
- if (yych <= 'N') {
- if (yych == 'I') goto yy1321;
- goto yy141;
- } else {
- if (yych <= 'O') goto yy1322;
- if (yych <= 'Q') goto yy141;
- goto yy1323;
- }
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'e') goto yy1320;
- if (yych <= 'h') goto yy141;
- goto yy1321;
- }
- } else {
- if (yych <= 'q') {
- if (yych == 'o') goto yy1322;
- goto yy141;
- } else {
- if (yych <= 'r') goto yy1323;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
- }
-yy16:
- YYDEBUG(16, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1307;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1317;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy17:
- YYDEBUG(17, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1307;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1307;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy18:
- YYDEBUG(18, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1287;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1304;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy19:
- YYDEBUG(19, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1287;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1287;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy20:
- YYDEBUG(20, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy1230;
- goto yy141;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= 'E') goto yy1229;
- goto yy141;
- } else {
- if (yych <= 'I') goto yy1231;
- if (yych <= 'T') goto yy141;
- goto yy1232;
- }
- }
- } else {
- if (yych <= 'e') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1259;
- if (yych <= 'd') goto yy146;
- goto yy1258;
- }
- } else {
- if (yych <= 't') {
- if (yych == 'i') goto yy1260;
- goto yy146;
- } else {
- if (yych <= 'u') goto yy1261;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy21:
- YYDEBUG(21, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy1230;
- goto yy141;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= 'E') goto yy1229;
- goto yy141;
- } else {
- if (yych <= 'I') goto yy1231;
- if (yych <= 'T') goto yy141;
- goto yy1232;
- }
- }
- } else {
- if (yych <= 'e') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1230;
- if (yych <= 'd') goto yy141;
- goto yy1229;
- }
- } else {
- if (yych <= 't') {
- if (yych == 'i') goto yy1231;
- goto yy141;
- } else {
- if (yych <= 'u') goto yy1232;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
- }
-yy22:
- YYDEBUG(22, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1199;
- if (yych <= 'K') goto yy141;
- goto yy1200;
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'h') goto yy146;
- goto yy1217;
- } else {
- if (yych == 'l') goto yy1218;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy23:
- YYDEBUG(23, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1199;
- if (yych <= 'K') goto yy141;
- goto yy1200;
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'h') goto yy141;
- goto yy1199;
- } else {
- if (yych == 'l') goto yy1200;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy24:
- YYDEBUG(24, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy141;
- goto yy1098;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy146;
- } else {
- if (yych <= 'r') goto yy1192;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy25:
- YYDEBUG(25, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy141;
- goto yy1098;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'r') goto yy1098;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy26:
- YYDEBUG(26, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy1052;
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'S':
- case 'T':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'o':
- case 'w':
- case 'y': goto yy1054;
- case '-': goto yy473;
- case '.': goto yy1064;
- case '/': goto yy472;
- case '0': goto yy1097;
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy1096;
- case ':': goto yy1065;
- case 'n': goto yy470;
- case 'r': goto yy471;
- case 's': goto yy464;
- case 't': goto yy468;
- default: goto yy13;
- }
-yy27:
- YYDEBUG(27, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy460;
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'S':
- case 'T':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'o':
- case 'p':
- case 'w':
- case 'y': goto yy462;
- case '-': goto yy473;
- case '.': goto yy474;
- case '/': goto yy472;
- case '0':
- case '1':
- case '2': goto yy1096;
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy1063;
- case ':': goto yy483;
- case 'n': goto yy470;
- case 'r': goto yy471;
- case 's': goto yy464;
- case 't': goto yy468;
- default: goto yy13;
- }
-yy28:
- YYDEBUG(28, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy460;
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'S':
- case 'T':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'o':
- case 'p':
- case 'w':
- case 'y': goto yy462;
- case '-': goto yy473;
- case '.': goto yy474;
- case '/': goto yy472;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4': goto yy1063;
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy1050;
- case ':': goto yy483;
- case 'n': goto yy470;
- case 'r': goto yy471;
- case 's': goto yy464;
- case 't': goto yy468;
- default: goto yy13;
- }
-yy29:
- YYDEBUG(29, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy460;
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'S':
- case 'T':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'o':
- case 'p':
- case 'w':
- case 'y': goto yy462;
- case '-': goto yy473;
- case '.': goto yy474;
- case '/': goto yy472;
- case '0':
- case '1': goto yy1050;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy469;
- case ':': goto yy483;
- case 'n': goto yy470;
- case 'r': goto yy471;
- case 's': goto yy464;
- case 't': goto yy468;
- default: goto yy13;
- }
-yy30:
- YYDEBUG(30, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t': goto yy460;
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'S':
- case 'T':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'o':
- case 'p':
- case 'w':
- case 'y': goto yy462;
- case '-': goto yy473;
- case '.': goto yy474;
- case '/': goto yy472;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy469;
- case ':': goto yy483;
- case 'n': goto yy470;
- case 'r': goto yy471;
- case 's': goto yy464;
- case 't': goto yy468;
- default: goto yy13;
- }
-yy31:
- YYDEBUG(31, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy58;
- }
- YYDEBUG(-1, yych);
- switch (yych) {
- case '+':
- case '-': goto yy440;
- case '0':
- case '1': goto yy437;
- case '2': goto yy438;
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy439;
- default: goto yy13;
- }
-yy32:
- YYDEBUG(32, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy4;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '/') goto yy4;
- goto yy196;
- }
- }
- } else {
- if (yych <= 'V') {
- if (yych <= 'H') {
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'I') goto yy436;
- if (yych <= 'U') goto yy141;
- goto yy435;
- }
- } else {
- if (yych <= 'Z') {
- if (yych == 'X') goto yy435;
- goto yy141;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy33:
- YYDEBUG(33, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'Z') {
- if (yych <= 'I') goto yy432;
- goto yy141;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy34:
- YYDEBUG(34, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'Z') {
- if (yych <= 'I') goto yy430;
- goto yy141;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy35:
- YYDEBUG(35, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'A') goto yy413;
- if (yych <= 'T') goto yy141;
- goto yy412;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy422;
- } else {
- if (yych == 'u') goto yy421;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy36:
- YYDEBUG(36, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'A') goto yy413;
- if (yych <= 'T') goto yy141;
- goto yy412;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy413;
- } else {
- if (yych == 'u') goto yy412;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy37:
- YYDEBUG(37, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'F') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'O') {
- if (yych <= 'G') goto yy391;
- goto yy141;
- } else {
- if (yych <= 'P') goto yy390;
- if (yych <= 'T') goto yy141;
- goto yy389;
- }
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych == 'g') goto yy403;
- goto yy146;
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'p') goto yy402;
- goto yy146;
- } else {
- if (yych <= 'u') goto yy401;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
- }
-yy38:
- YYDEBUG(38, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'F') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'O') {
- if (yych <= 'G') goto yy391;
- goto yy141;
- } else {
- if (yych <= 'P') goto yy390;
- if (yych <= 'T') goto yy141;
- goto yy389;
- }
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy141;
- goto yy4;
- } else {
- if (yych == 'g') goto yy391;
- goto yy141;
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'p') goto yy390;
- goto yy141;
- } else {
- if (yych <= 'u') goto yy389;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
- }
-yy39:
- YYDEBUG(39, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'C') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'B') goto yy141;
- goto yy379;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy146;
- } else {
- if (yych <= 'c') goto yy384;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy40:
- YYDEBUG(40, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'C') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'B') goto yy141;
- goto yy379;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'c') goto yy379;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy41:
- YYDEBUG(41, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy192;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy146;
- } else {
- if (yych <= 'e') goto yy370;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy42:
- YYDEBUG(42, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy192;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'e') goto yy192;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy43:
- YYDEBUG(43, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy165;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy146;
- } else {
- if (yych <= 'e') goto yy179;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy44:
- YYDEBUG(44, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy141;
- goto yy165;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'e') goto yy165;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
- }
-yy45:
- YYDEBUG(45, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy141;
- } else {
- if (yych <= 'Z') {
- if (yych <= 'M') goto yy157;
- goto yy141;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
- }
-yy46:
- YYDEBUG(46, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') goto yy13;
- if (yych <= 'Z') goto yy156;
- if (yych <= '`') goto yy13;
- if (yych <= 'z') goto yy156;
- goto yy13;
-yy47:
- YYDEBUG(47, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy146;
- goto yy4;
- }
-yy48:
- YYDEBUG(48, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
-yy49:
- YYDEBUG(49, *YYCURSOR);
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy58;
- }
- if (yych <= '/') goto yy50;
- if (yych <= '9') goto yy55;
-yy50:
- YYDEBUG(50, *YYCURSOR);
-#line 1740 "ext/date/lib/parse_date.re"
- {
- goto std;
- }
-#line 2420 "ext/date/lib/parse_date.c"
-yy51:
- YYDEBUG(51, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy50;
-yy52:
- YYDEBUG(52, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(53, *YYCURSOR);
-#line 1745 "ext/date/lib/parse_date.re"
- {
- s->pos = cursor; s->line++;
- goto std;
- }
-#line 2434 "ext/date/lib/parse_date.c"
-yy54:
- YYDEBUG(54, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy13;
-yy55:
- YYDEBUG(55, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
- yych = *YYCURSOR;
- YYDEBUG(56, *YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy60;
- if (yych >= ' ') goto yy60;
- } else {
- if (yych == 'D') goto yy65;
- if (yych >= 'F') goto yy66;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy64;
- if (yych >= 'M') goto yy63;
- } else {
- if (yych <= 'S') {
- if (yych >= 'S') goto yy62;
- } else {
- if (yych <= 'T') goto yy69;
- if (yych >= 'W') goto yy68;
- }
- }
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy67;
- if (yych >= 'd') goto yy65;
- } else {
- if (yych <= 'f') {
- if (yych >= 'f') goto yy66;
- } else {
- if (yych == 'h') goto yy64;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'm') goto yy63;
- if (yych <= 'r') goto yy57;
- if (yych <= 's') goto yy62;
- goto yy69;
- } else {
- if (yych <= 'w') {
- if (yych >= 'w') goto yy68;
- } else {
- if (yych == 'y') goto yy67;
- }
- }
- }
- }
-yy57:
- YYDEBUG(57, *YYCURSOR);
- YYCURSOR = YYMARKER;
- if (yyaccept <= 16) {
- if (yyaccept <= 8) {
- if (yyaccept <= 4) {
- if (yyaccept <= 2) {
- if (yyaccept <= 1) {
- if (yyaccept <= 0) {
- goto yy4;
- } else {
- goto yy13;
- }
- } else {
- goto yy50;
- }
- } else {
- if (yyaccept <= 3) {
- goto yy73;
- } else {
- goto yy167;
- }
- }
- } else {
- if (yyaccept <= 6) {
- if (yyaccept <= 5) {
- goto yy194;
- } else {
- goto yy199;
- }
- } else {
- if (yyaccept <= 7) {
- goto yy223;
- } else {
- goto yy295;
- }
- }
- }
- } else {
- if (yyaccept <= 12) {
- if (yyaccept <= 10) {
- if (yyaccept <= 9) {
- goto yy393;
- } else {
- goto yy476;
- }
- } else {
- if (yyaccept <= 11) {
- goto yy491;
- } else {
- goto yy612;
- }
- }
- } else {
- if (yyaccept <= 14) {
- if (yyaccept <= 13) {
- goto yy657;
- } else {
- goto yy667;
- }
- } else {
- if (yyaccept <= 15) {
- goto yy764;
- } else {
- goto yy784;
- }
- }
- }
- }
- } else {
- if (yyaccept <= 25) {
- if (yyaccept <= 21) {
- if (yyaccept <= 19) {
- if (yyaccept <= 18) {
- if (yyaccept <= 17) {
- goto yy815;
- } else {
- goto yy822;
- }
- } else {
- goto yy849;
- }
- } else {
- if (yyaccept <= 20) {
- goto yy794;
- } else {
- goto yy455;
- }
- }
- } else {
- if (yyaccept <= 23) {
- if (yyaccept <= 22) {
- goto yy974;
- } else {
- goto yy843;
- }
- } else {
- if (yyaccept <= 24) {
- goto yy1068;
- } else {
- goto yy1076;
- }
- }
- }
- } else {
- if (yyaccept <= 29) {
- if (yyaccept <= 27) {
- if (yyaccept <= 26) {
- goto yy1118;
- } else {
- goto yy1142;
- }
- } else {
- if (yyaccept <= 28) {
- goto yy1295;
- } else {
- goto yy1417;
- }
- }
- } else {
- if (yyaccept <= 31) {
- if (yyaccept <= 30) {
- goto yy1420;
- } else {
- goto yy1500;
- }
- } else {
- if (yyaccept <= 32) {
- goto yy1508;
- } else {
- goto yy1531;
- }
- }
- }
- }
- }
-yy58:
- YYDEBUG(58, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(59, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy58;
- }
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy55;
- goto yy57;
-yy60:
- YYDEBUG(60, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
- yych = *YYCURSOR;
-yy61:
- YYDEBUG(61, *YYCURSOR);
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy60;
- if (yych <= 0x1F) goto yy57;
- goto yy60;
- } else {
- if (yych == 'D') goto yy65;
- if (yych <= 'E') goto yy57;
- goto yy66;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy64;
- if (yych <= 'L') goto yy57;
- goto yy63;
- } else {
- if (yych <= 'S') {
- if (yych <= 'R') goto yy57;
- } else {
- if (yych <= 'T') goto yy69;
- if (yych <= 'V') goto yy57;
- goto yy68;
- }
- }
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy67;
- if (yych <= 'c') goto yy57;
- goto yy65;
- } else {
- if (yych <= 'f') {
- if (yych <= 'e') goto yy57;
- goto yy66;
- } else {
- if (yych == 'h') goto yy64;
- goto yy57;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'm') goto yy63;
- if (yych <= 'r') goto yy57;
- if (yych >= 't') goto yy69;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy57;
- goto yy68;
- } else {
- if (yych == 'y') goto yy67;
- goto yy57;
- }
- }
- }
- }
-yy62:
- YYDEBUG(62, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych == 'A') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'E') goto yy128;
- if (yych <= 'T') goto yy57;
- goto yy126;
- }
- } else {
- if (yych <= 'd') {
- if (yych == 'a') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'e') goto yy128;
- if (yych == 'u') goto yy126;
- goto yy57;
- }
- }
-yy63:
- YYDEBUG(63, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych == 'I') goto yy118;
- if (yych <= 'N') goto yy57;
- goto yy117;
- } else {
- if (yych <= 'i') {
- if (yych <= 'h') goto yy57;
- goto yy118;
- } else {
- if (yych == 'o') goto yy117;
- goto yy57;
- }
- }
-yy64:
- YYDEBUG(64, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy115;
- if (yych == 'o') goto yy115;
- goto yy57;
-yy65:
- YYDEBUG(65, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy114;
- if (yych == 'a') goto yy114;
- goto yy57;
-yy66:
- YYDEBUG(66, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych == 'O') goto yy99;
- if (yych <= 'Q') goto yy57;
- goto yy98;
- } else {
- if (yych <= 'o') {
- if (yych <= 'n') goto yy57;
- goto yy99;
- } else {
- if (yych == 'r') goto yy98;
- goto yy57;
- }
- }
-yy67:
- YYDEBUG(67, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy95;
- if (yych == 'e') goto yy95;
- goto yy57;
-yy68:
- YYDEBUG(68, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy83;
- if (yych == 'e') goto yy83;
- goto yy57;
-yy69:
- YYDEBUG(69, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'H') goto yy70;
- if (yych <= 'T') goto yy57;
- goto yy71;
- } else {
- if (yych <= 'h') {
- if (yych <= 'g') goto yy57;
- } else {
- if (yych == 'u') goto yy71;
- goto yy57;
- }
- }
-yy70:
- YYDEBUG(70, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy78;
- if (yych == 'u') goto yy78;
- goto yy57;
-yy71:
- YYDEBUG(71, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy72;
- if (yych != 'e') goto yy57;
-yy72:
- YYDEBUG(72, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'S') goto yy74;
- if (yych == 's') goto yy74;
-yy73:
- YYDEBUG(73, *YYCURSOR);
-#line 1724 "ext/date/lib/parse_date.re"
- {
- timelib_ull i;
- DEBUG_OUTPUT("relative");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
-
- while(*ptr) {
- i = timelib_get_unsigned_nr((char **) &ptr, 24);
- timelib_eat_spaces((char **) &ptr);
- timelib_set_relative((char **) &ptr, i, 1, s);
- }
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 2836 "ext/date/lib/parse_date.c"
-yy74:
- YYDEBUG(74, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy75;
- if (yych != 'd') goto yy57;
-yy75:
- YYDEBUG(75, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy76;
- if (yych != 'a') goto yy57;
-yy76:
- YYDEBUG(76, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych != 'y') goto yy57;
-yy77:
- YYDEBUG(77, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy73;
-yy78:
- YYDEBUG(78, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'R') goto yy79;
- if (yych != 'r') goto yy73;
-yy79:
- YYDEBUG(79, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy80;
- if (yych != 's') goto yy57;
-yy80:
- YYDEBUG(80, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy81;
- if (yych != 'd') goto yy57;
-yy81:
- YYDEBUG(81, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy82;
- if (yych != 'a') goto yy57;
-yy82:
- YYDEBUG(82, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy83:
- YYDEBUG(83, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= 'C') goto yy57;
- if (yych <= 'D') goto yy85;
- } else {
- if (yych <= 'c') goto yy57;
- if (yych <= 'd') goto yy85;
- if (yych >= 'f') goto yy57;
- }
- YYDEBUG(84, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'K') goto yy91;
- if (yych == 'k') goto yy91;
- goto yy57;
-yy85:
- YYDEBUG(85, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'N') goto yy86;
- if (yych != 'n') goto yy73;
-yy86:
- YYDEBUG(86, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy87;
- if (yych != 'e') goto yy57;
-yy87:
- YYDEBUG(87, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy88;
- if (yych != 's') goto yy57;
-yy88:
- YYDEBUG(88, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy89;
- if (yych != 'd') goto yy57;
-yy89:
- YYDEBUG(89, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy90;
- if (yych != 'a') goto yy57;
-yy90:
- YYDEBUG(90, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy91:
- YYDEBUG(91, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == 'D') goto yy92;
- if (yych <= 'R') goto yy73;
- goto yy77;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy73;
- } else {
- if (yych == 's') goto yy77;
- goto yy73;
- }
- }
-yy92:
- YYDEBUG(92, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy93;
- if (yych != 'a') goto yy57;
-yy93:
- YYDEBUG(93, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy94;
- if (yych != 'y') goto yy57;
-yy94:
- YYDEBUG(94, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy77;
- if (yych == 's') goto yy77;
- goto yy73;
-yy95:
- YYDEBUG(95, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy96;
- if (yych != 'a') goto yy57;
-yy96:
- YYDEBUG(96, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy97;
- if (yych != 'r') goto yy57;
-yy97:
- YYDEBUG(97, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy77;
- if (yych == 's') goto yy77;
- goto yy73;
-yy98:
- YYDEBUG(98, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy111;
- if (yych == 'i') goto yy111;
- goto yy57;
-yy99:
- YYDEBUG(99, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy100;
- if (yych != 'r') goto yy57;
-yy100:
- YYDEBUG(100, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy101;
- if (yych != 't') goto yy57;
-yy101:
- YYDEBUG(101, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'H') goto yy103;
- if (yych <= 'M') goto yy57;
- } else {
- if (yych <= 'h') {
- if (yych <= 'g') goto yy57;
- goto yy103;
- } else {
- if (yych != 'n') goto yy57;
- }
- }
- YYDEBUG(102, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy108;
- if (yych == 'i') goto yy108;
- goto yy57;
-yy103:
- YYDEBUG(103, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy104;
- if (yych != 'n') goto yy57;
-yy104:
- YYDEBUG(104, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy105;
- if (yych != 'i') goto yy57;
-yy105:
- YYDEBUG(105, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy106;
- if (yych != 'g') goto yy57;
-yy106:
- YYDEBUG(106, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy107;
- if (yych != 'h') goto yy57;
-yy107:
- YYDEBUG(107, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy97;
- if (yych == 't') goto yy97;
- goto yy57;
-yy108:
- YYDEBUG(108, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy109;
- if (yych != 'g') goto yy57;
-yy109:
- YYDEBUG(109, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy110;
- if (yych != 'h') goto yy57;
-yy110:
- YYDEBUG(110, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy97;
- if (yych == 't') goto yy97;
- goto yy57;
-yy111:
- YYDEBUG(111, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'D') goto yy112;
- if (yych != 'd') goto yy73;
-yy112:
- YYDEBUG(112, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy113;
- if (yych != 'a') goto yy57;
-yy113:
- YYDEBUG(113, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy114:
- YYDEBUG(114, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy97;
- if (yych == 'y') goto yy97;
- goto yy57;
-yy115:
- YYDEBUG(115, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy116;
- if (yych != 'u') goto yy57;
-yy116:
- YYDEBUG(116, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy97;
- if (yych == 'r') goto yy97;
- goto yy57;
-yy117:
- YYDEBUG(117, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy122;
- if (yych == 'n') goto yy122;
- goto yy57;
-yy118:
- YYDEBUG(118, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy119;
- if (yych != 'n') goto yy57;
-yy119:
- YYDEBUG(119, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'U') {
- if (yych == 'S') goto yy77;
- if (yych <= 'T') goto yy73;
- } else {
- if (yych <= 's') {
- if (yych <= 'r') goto yy73;
- goto yy77;
- } else {
- if (yych != 'u') goto yy73;
- }
- }
- YYDEBUG(120, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy121;
- if (yych != 't') goto yy57;
-yy121:
- YYDEBUG(121, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy97;
- if (yych == 'e') goto yy97;
- goto yy57;
-yy122:
- YYDEBUG(122, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych == 'D') goto yy123;
- if (yych <= 'S') goto yy73;
- goto yy124;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy73;
- } else {
- if (yych == 't') goto yy124;
- goto yy73;
- }
- }
-yy123:
- YYDEBUG(123, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy125;
- if (yych == 'a') goto yy125;
- goto yy57;
-yy124:
- YYDEBUG(124, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy97;
- if (yych == 'h') goto yy97;
- goto yy57;
-yy125:
- YYDEBUG(125, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy126:
- YYDEBUG(126, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy137;
- if (yych == 'n') goto yy137;
- goto yy57;
-yy127:
- YYDEBUG(127, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy132;
- if (yych == 't') goto yy132;
- goto yy57;
-yy128:
- YYDEBUG(128, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy129;
- if (yych != 'c') goto yy57;
-yy129:
- YYDEBUG(129, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == 'O') goto yy130;
- if (yych <= 'R') goto yy73;
- goto yy77;
- } else {
- if (yych <= 'o') {
- if (yych <= 'n') goto yy73;
- } else {
- if (yych == 's') goto yy77;
- goto yy73;
- }
- }
-yy130:
- YYDEBUG(130, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy131;
- if (yych != 'n') goto yy57;
-yy131:
- YYDEBUG(131, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy97;
- if (yych == 'd') goto yy97;
- goto yy57;
-yy132:
- YYDEBUG(132, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'U') goto yy133;
- if (yych != 'u') goto yy73;
-yy133:
- YYDEBUG(133, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy134;
- if (yych != 'r') goto yy57;
-yy134:
- YYDEBUG(134, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy135;
- if (yych != 'd') goto yy57;
-yy135:
- YYDEBUG(135, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy136;
- if (yych != 'a') goto yy57;
-yy136:
- YYDEBUG(136, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy137:
- YYDEBUG(137, *YYCURSOR);
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'D') goto yy138;
- if (yych != 'd') goto yy73;
-yy138:
- YYDEBUG(138, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy139;
- if (yych != 'a') goto yy57;
-yy139:
- YYDEBUG(139, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy77;
- if (yych == 'y') goto yy77;
- goto yy57;
-yy140:
- YYDEBUG(140, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy4;
-yy141:
- YYDEBUG(141, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
-yy142:
- YYDEBUG(142, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
-yy143:
- YYDEBUG(143, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
-yy144:
- YYDEBUG(144, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
-yy145:
- YYDEBUG(145, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == ')') goto yy140;
- goto yy4;
-yy146:
- YYDEBUG(146, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy142;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
- }
-yy147:
- YYDEBUG(147, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy143;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
-yy148:
- YYDEBUG(148, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy149;
- }
- goto yy57;
-yy149:
- YYDEBUG(149, *YYCURSOR);
- yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(150, *YYCURSOR);
- if (yybm[0+yych] & 8) {
- goto yy149;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy4;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy4;
- }
-yy151:
- YYDEBUG(151, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
- }
-yy152:
- YYDEBUG(152, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych >= '{') goto yy4;
- }
- }
-yy153:
- YYDEBUG(153, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych <= '/') {
- if (yych <= '.') goto yy4;
- goto yy148;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- }
-yy154:
- YYDEBUG(154, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy155:
- YYDEBUG(155, *YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy57;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy57;
- }
-yy156:
- YYDEBUG(156, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy141;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy141;
- goto yy4;
- }
-yy157:
- YYDEBUG(157, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'U') goto yy142;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- YYDEBUG(158, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych != '+') goto yy4;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '-') goto yy159;
- if (yych <= '@') goto yy4;
- goto yy143;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy159:
- YYDEBUG(159, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy160;
- if (yych <= '2') goto yy161;
- if (yych <= '9') goto yy162;
- goto yy57;
-yy160:
- YYDEBUG(160, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy162;
- if (yych <= ':') goto yy163;
- goto yy4;
-yy161:
- YYDEBUG(161, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy4;
- if (yych >= '5') goto yy164;
- } else {
- if (yych <= '9') goto yy140;
- if (yych <= ':') goto yy163;
- goto yy4;
- }
-yy162:
- YYDEBUG(162, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy4;
- if (yych <= '5') goto yy164;
- if (yych <= '9') goto yy140;
- if (yych >= ';') goto yy4;
-yy163:
- YYDEBUG(163, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy4;
- if (yych <= '5') goto yy164;
- if (yych <= '9') goto yy140;
- goto yy4;
-yy164:
- YYDEBUG(164, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy140;
- goto yy4;
-yy165:
- YYDEBUG(165, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'C') goto yy142;
- if (yych >= 'E') goto yy168;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'd') goto yy166;
- if (yych <= 'e') goto yy168;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy166:
- YYDEBUG(166, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= 'N') {
- if (yych <= ')') {
- if (yych >= ')') goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'M') goto yy143;
- goto yy174;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy143;
- if (yych >= 'a') goto yy143;
- } else {
- if (yych <= 'n') goto yy174;
- if (yych <= 'z') goto yy143;
- }
- }
-yy167:
- YYDEBUG(167, *YYCURSOR);
-#line 1587 "ext/date/lib/parse_date.re"
- {
- const timelib_relunit* relunit;
- DEBUG_OUTPUT("daytext");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
- TIMELIB_HAVE_WEEKDAY_RELATIVE();
- TIMELIB_UNHAVE_TIME();
- relunit = timelib_lookup_relunit((char**) &ptr);
- s->time->relative.weekday = relunit->multiplier;
- if (s->time->relative.weekday_behavior != 2) {
- s->time->relative.weekday_behavior = 1;
- }
-
- TIMELIB_DEINIT;
- return TIMELIB_WEEKDAY;
- }
-#line 3615 "ext/date/lib/parse_date.c"
-yy168:
- YYDEBUG(168, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'K') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'J') goto yy143;
- }
- } else {
- if (yych <= 'j') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'k') goto yy169;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy169:
- YYDEBUG(169, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy144;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'd') goto yy170;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy170:
- YYDEBUG(170, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy171;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy171:
- YYDEBUG(171, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'X') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Y') goto yy172;
- if (yych != 'y') goto yy4;
- }
-yy172:
- YYDEBUG(172, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy173;
- if (yych != 's') goto yy167;
-yy173:
- YYDEBUG(173, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy167;
-yy174:
- YYDEBUG(174, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy144;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'e') goto yy175;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy175:
- YYDEBUG(175, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy145;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 's') goto yy176;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy176:
- YYDEBUG(176, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'D') goto yy177;
- if (yych != 'd') goto yy4;
- }
-yy177:
- YYDEBUG(177, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy178;
- if (yych != 'a') goto yy57;
-yy178:
- YYDEBUG(178, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy173;
- goto yy57;
-yy179:
- YYDEBUG(179, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych <= '/') {
- if (yych <= '.') goto yy4;
- goto yy148;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy142;
- goto yy166;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'E') goto yy168;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy147;
- } else {
- if (yych <= 'e') goto yy181;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
- YYDEBUG(180, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy174;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'n') goto yy187;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy181:
- YYDEBUG(181, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'J') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'K') goto yy169;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'j') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'k') goto yy182;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy182:
- YYDEBUG(182, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy170;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'd') goto yy183;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy183:
- YYDEBUG(183, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy171;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy184;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
-yy184:
- YYDEBUG(184, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Y') goto yy172;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'y') goto yy185;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy185:
- YYDEBUG(185, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy167;
- } else {
- if (yych <= '/') goto yy148;
- if (yych <= 'R') goto yy167;
- goto yy173;
- }
- } else {
- if (yych <= '`') {
- if (yych == '_') goto yy148;
- goto yy167;
- } else {
- if (yych == 's') goto yy186;
- if (yych <= 'z') goto yy154;
- goto yy167;
- }
- }
-yy186:
- YYDEBUG(186, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy167;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy167;
- }
-yy187:
- YYDEBUG(187, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy175;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'e') goto yy188;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy188:
- YYDEBUG(188, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy176;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 's') goto yy189;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy189:
- YYDEBUG(189, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'D') goto yy177;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'd') goto yy190;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy190:
- YYDEBUG(190, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy178;
- if (yych != 'a') goto yy155;
- YYDEBUG(191, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy186;
- goto yy155;
-yy192:
- YYDEBUG(192, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'C') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'B') goto yy142;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'c') goto yy193;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy193:
- YYDEBUG(193, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych >= '\t') goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- } else {
- if (yych == 'E') goto yy202;
- goto yy143;
- }
- } else {
- if (yych <= 'd') {
- if (yych >= 'a') goto yy143;
- } else {
- if (yych <= 'e') goto yy202;
- if (yych <= 'z') goto yy143;
- }
- }
- }
-yy194:
- YYDEBUG(194, *YYCURSOR);
-#line 1646 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("monthtext");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_lookup_month((char **) &ptr);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_TEXT;
- }
-#line 4144 "ext/date/lib/parse_date.c"
-yy195:
- YYDEBUG(195, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
- yych = *YYCURSOR;
-yy196:
- YYDEBUG(196, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy195;
- }
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy198;
- if (yych <= '3') goto yy200;
- if (yych <= '9') goto yy201;
- goto yy57;
-yy197:
- YYDEBUG(197, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy196;
- if (yych <= '0') goto yy357;
- if (yych <= '2') goto yy358;
- if (yych <= '3') goto yy359;
- goto yy196;
-yy198:
- YYDEBUG(198, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy298;
- goto yy299;
- } else {
- if (yych <= '2') goto yy355;
- if (yych <= '9') goto yy356;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy199:
- YYDEBUG(199, *YYCURSOR);
-#line 1396 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datetextual | datenoyear");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_TEXT;
- }
-#line 4207 "ext/date/lib/parse_date.c"
-yy200:
- YYDEBUG(200, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy298;
- goto yy299;
- } else {
- if (yych <= '2') goto yy209;
- if (yych <= '9') goto yy210;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy201:
- YYDEBUG(201, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy207;
- goto yy208;
- } else {
- if (yych <= '2') goto yy209;
- if (yych <= '9') goto yy210;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy202:
- YYDEBUG(202, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'M') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'L') goto yy144;
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'm') goto yy203;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy203:
- YYDEBUG(203, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'B') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy145;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'b') goto yy204;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy204:
- YYDEBUG(204, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'E') goto yy205;
- if (yych != 'e') goto yy4;
- }
-yy205:
- YYDEBUG(205, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych != 'r') goto yy57;
-yy206:
- YYDEBUG(206, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy194;
- goto yy196;
- } else {
- if (yych <= '.') {
- if (yych <= ',') goto yy194;
- goto yy196;
- } else {
- if (yych <= '/') goto yy194;
- if (yych <= '9') goto yy196;
- goto yy194;
- }
- }
-yy207:
- YYDEBUG(207, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy57;
- } else {
- if (yych <= '0') goto yy296;
- if (yych <= '9') goto yy297;
- if (yych <= ':') goto yy221;
- goto yy57;
- }
-yy208:
- YYDEBUG(208, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '2') goto yy297;
- if (yych <= '9') goto yy296;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy209:
- YYDEBUG(209, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '4') goto yy296;
- if (yych <= '9') goto yy293;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy210:
- YYDEBUG(210, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '9') goto yy293;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy211:
- YYDEBUG(211, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy216;
-yy212:
- YYDEBUG(212, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy216;
-yy213:
- YYDEBUG(213, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy216;
-yy214:
- YYDEBUG(214, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy216;
-yy215:
- YYDEBUG(215, *YYCURSOR);
- yyaccept = 6;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
- yych = *YYCURSOR;
-yy216:
- YYDEBUG(216, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy215;
- }
- if (yych <= '2') {
- if (yych <= '/') goto yy199;
- if (yych <= '0') goto yy259;
- if (yych <= '1') goto yy260;
- goto yy261;
- } else {
- if (yych <= '9') goto yy262;
- if (yych != 'T') goto yy199;
- }
- YYDEBUG(217, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy218;
- if (yych <= '2') goto yy219;
- if (yych <= '9') goto yy220;
- goto yy57;
-yy218:
- YYDEBUG(218, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy57;
- } else {
- if (yych <= '9') goto yy220;
- if (yych <= ':') goto yy221;
- goto yy57;
- }
-yy219:
- YYDEBUG(219, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy57;
- } else {
- if (yych <= '4') goto yy220;
- if (yych == ':') goto yy221;
- goto yy57;
- }
-yy220:
- YYDEBUG(220, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '.') goto yy221;
- if (yych != ':') goto yy57;
-yy221:
- YYDEBUG(221, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy222;
- if (yych <= '9') goto yy224;
- goto yy57;
-yy222:
- YYDEBUG(222, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- } else {
- if (yych <= '9') goto yy224;
- if (yych <= ':') goto yy225;
- }
-yy223:
- YYDEBUG(223, *YYCURSOR);
-#line 1694 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
-
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':') {
- s->time->s = timelib_get_nr((char **) &ptr, 2);
-
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
- }
- }
-
- if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_SHORTDATE_WITH_TIME;
- }
-#line 4505 "ext/date/lib/parse_date.c"
-yy224:
- YYDEBUG(224, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy225;
- if (yych != ':') goto yy223;
-yy225:
- YYDEBUG(225, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy226;
- if (yych <= '6') goto yy227;
- if (yych <= '9') goto yy228;
- goto yy57;
-yy226:
- YYDEBUG(226, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '9') goto yy229;
- goto yy223;
-yy227:
- YYDEBUG(227, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '0') goto yy229;
- goto yy223;
-yy228:
- YYDEBUG(228, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy223;
-yy229:
- YYDEBUG(229, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '*') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy231;
- goto yy223;
- } else {
- if (yych <= ' ') goto yy231;
- if (yych == '(') goto yy231;
- goto yy223;
- }
- } else {
- if (yych <= '@') {
- if (yych == ',') goto yy223;
- if (yych <= '-') goto yy231;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy231;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy231;
- goto yy223;
- }
- }
-yy230:
- YYDEBUG(230, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
-yy231:
- YYDEBUG(231, *YYCURSOR);
- if (yych <= '+') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy230;
- if (yych <= 0x1F) goto yy57;
- goto yy230;
- } else {
- if (yych == '(') goto yy234;
- if (yych <= '*') goto yy57;
- goto yy233;
- }
- } else {
- if (yych <= 'F') {
- if (yych == '-') goto yy233;
- if (yych <= '@') goto yy57;
- goto yy235;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'H') goto yy235;
- } else {
- if (yych <= '`') goto yy57;
- if (yych <= 'z') goto yy236;
- goto yy57;
- }
- }
- }
-yy232:
- YYDEBUG(232, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych == ')') goto yy228;
- if (yych <= '@') goto yy223;
- goto yy237;
- } else {
- if (yych <= 'Z') {
- if (yych <= 'M') goto yy257;
- goto yy237;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy242;
- goto yy223;
- }
- }
-yy233:
- YYDEBUG(233, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy252;
- if (yych <= '2') goto yy253;
- if (yych <= '9') goto yy254;
- goto yy57;
-yy234:
- YYDEBUG(234, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') goto yy57;
- if (yych <= 'Z') goto yy236;
- if (yych <= '`') goto yy57;
- if (yych <= 'z') goto yy236;
- goto yy57;
-yy235:
- YYDEBUG(235, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy237;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy242;
- goto yy223;
- }
-yy236:
- YYDEBUG(236, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy237;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
-yy237:
- YYDEBUG(237, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy238;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
-yy238:
- YYDEBUG(238, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy239;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
-yy239:
- YYDEBUG(239, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy240;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
-yy240:
- YYDEBUG(240, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '@') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy241;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
-yy241:
- YYDEBUG(241, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == ')') goto yy228;
- goto yy223;
-yy242:
- YYDEBUG(242, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych == '.') goto yy223;
- goto yy244;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy223;
- if (yych <= 'Z') goto yy238;
- goto yy223;
- } else {
- if (yych <= '_') goto yy244;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
- }
-yy243:
- YYDEBUG(243, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych == '.') goto yy223;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy223;
- if (yych <= 'Z') goto yy239;
- goto yy223;
- } else {
- if (yych <= '_') goto yy244;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy247;
- goto yy223;
- }
- }
-yy244:
- YYDEBUG(244, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '@') goto yy57;
- if (yych <= 'Z') goto yy245;
- if (yych <= '`') goto yy57;
- if (yych >= '{') goto yy57;
-yy245:
- YYDEBUG(245, *YYCURSOR);
- yyaccept = 7;
- YYMARKER = ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(246, *YYCURSOR);
- if (yych <= '@') {
- if (yych <= '-') {
- if (yych <= ',') goto yy223;
- goto yy244;
- } else {
- if (yych == '/') goto yy244;
- goto yy223;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'Z') goto yy245;
- if (yych <= '^') goto yy223;
- goto yy244;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy245;
- goto yy223;
- }
- }
-yy247:
- YYDEBUG(247, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych == '.') goto yy223;
- goto yy244;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy223;
- if (yych <= 'Z') goto yy240;
- goto yy223;
- } else {
- if (yych <= '_') goto yy244;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
- }
- YYDEBUG(248, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych == '.') goto yy223;
- goto yy244;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy223;
- if (yych <= 'Z') goto yy241;
- goto yy223;
- } else {
- if (yych <= '_') goto yy244;
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
- }
- YYDEBUG(249, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy223;
- goto yy228;
- } else {
- if (yych == '-') goto yy244;
- goto yy223;
- }
- } else {
- if (yych <= '_') {
- if (yych <= '/') goto yy244;
- if (yych <= '^') goto yy223;
- goto yy244;
- } else {
- if (yych <= '`') goto yy223;
- if (yych >= '{') goto yy223;
- }
- }
-yy250:
- YYDEBUG(250, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(251, *YYCURSOR);
- if (yych <= '/') {
- if (yych == '-') goto yy244;
- if (yych <= '.') goto yy57;
- goto yy244;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy57;
- goto yy244;
- } else {
- if (yych <= '`') goto yy57;
- if (yych <= 'z') goto yy250;
- goto yy57;
- }
- }
-yy252:
- YYDEBUG(252, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '9') goto yy254;
- if (yych <= ':') goto yy255;
- goto yy223;
-yy253:
- YYDEBUG(253, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy223;
- if (yych >= '5') goto yy256;
- } else {
- if (yych <= '9') goto yy228;
- if (yych <= ':') goto yy255;
- goto yy223;
- }
-yy254:
- YYDEBUG(254, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '5') goto yy256;
- if (yych <= '9') goto yy228;
- if (yych >= ';') goto yy223;
-yy255:
- YYDEBUG(255, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '5') goto yy256;
- if (yych <= '9') goto yy228;
- goto yy223;
-yy256:
- YYDEBUG(256, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '9') goto yy228;
- goto yy223;
-yy257:
- YYDEBUG(257, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych == ')') goto yy228;
- if (yych <= '@') goto yy223;
- goto yy238;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'U') goto yy238;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy238;
- goto yy223;
- }
- }
- YYDEBUG(258, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ')') {
- if (yych <= '(') goto yy223;
- goto yy228;
- } else {
- if (yych == '+') goto yy233;
- goto yy223;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '-') goto yy233;
- if (yych <= '@') goto yy223;
- goto yy239;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy239;
- goto yy223;
- }
- }
-yy259:
- YYDEBUG(259, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy199;
- } else {
- if (yych <= '0') goto yy291;
- if (yych <= '9') goto yy292;
- if (yych <= ':') goto yy221;
- goto yy199;
- }
-yy260:
- YYDEBUG(260, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy199;
- } else {
- if (yych <= '2') goto yy292;
- if (yych <= '9') goto yy291;
- if (yych <= ':') goto yy264;
- goto yy199;
- }
-yy261:
- YYDEBUG(261, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy199;
- } else {
- if (yych <= '4') goto yy291;
- if (yych <= '9') goto yy263;
- if (yych <= ':') goto yy264;
- goto yy199;
- }
-yy262:
- YYDEBUG(262, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy199;
- } else {
- if (yych <= '9') goto yy263;
- if (yych <= ':') goto yy264;
- goto yy199;
- }
-yy263:
- YYDEBUG(263, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy199;
- if (yych <= '9') goto yy289;
- goto yy199;
-yy264:
- YYDEBUG(264, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy265;
- if (yych <= '9') goto yy266;
- goto yy57;
-yy265:
- YYDEBUG(265, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy267;
- goto yy223;
- } else {
- if (yych <= '9') goto yy282;
- if (yych <= ':') goto yy267;
- goto yy223;
- }
-yy266:
- YYDEBUG(266, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy267;
- if (yych != ':') goto yy223;
-yy267:
- YYDEBUG(267, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy268;
- if (yych <= '6') goto yy269;
- if (yych <= '9') goto yy228;
- goto yy57;
-yy268:
- YYDEBUG(268, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy223;
- if (yych <= '9') goto yy270;
- goto yy223;
-yy269:
- YYDEBUG(269, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '0') goto yy223;
-yy270:
- YYDEBUG(270, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '*') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy272;
- goto yy223;
- } else {
- if (yych <= ' ') goto yy272;
- if (yych == '(') goto yy272;
- goto yy223;
- }
- } else {
- if (yych <= '@') {
- if (yych == ',') goto yy223;
- if (yych <= '-') goto yy272;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy272;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy272;
- goto yy223;
- }
- }
-yy271:
- YYDEBUG(271, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
-yy272:
- YYDEBUG(272, *YYCURSOR);
- if (yych <= '@') {
- if (yych <= '\'') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy271;
- } else {
- if (yych == ' ') goto yy271;
- goto yy57;
- }
- } else {
- if (yych <= '+') {
- if (yych <= '(') goto yy234;
- if (yych <= '*') goto yy57;
- goto yy233;
- } else {
- if (yych == '-') goto yy233;
- goto yy57;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= 'G') {
- if (yych <= 'A') goto yy273;
- if (yych <= 'F') goto yy235;
- goto yy232;
- } else {
- if (yych != 'P') goto yy235;
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') goto yy57;
- if (yych <= 'a') goto yy274;
- goto yy236;
- } else {
- if (yych <= 'p') goto yy274;
- if (yych <= 'z') goto yy236;
- goto yy57;
- }
- }
- }
-yy273:
- YYDEBUG(273, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy275;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy276;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy281;
- if (yych <= 'z') goto yy242;
- goto yy223;
- }
- }
-yy274:
- YYDEBUG(274, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy275;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy276;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy276;
- if (yych <= 'z') goto yy237;
- goto yy223;
- }
- }
-yy275:
- YYDEBUG(275, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy280;
- if (yych == 'm') goto yy280;
- goto yy57;
-yy276:
- YYDEBUG(276, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ')') {
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy223;
- goto yy278;
- } else {
- if (yych == ' ') goto yy278;
- if (yych <= '(') goto yy223;
- goto yy228;
- }
- } else {
- if (yych <= '@') {
- if (yych != '.') goto yy223;
- } else {
- if (yych <= 'Z') goto yy238;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy238;
- goto yy223;
- }
- }
-yy277:
- YYDEBUG(277, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy57;
- } else {
- if (yych != ' ') goto yy57;
- }
-yy278:
- YYDEBUG(278, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(279, *YYCURSOR);
-#line 1670 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
-
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':' || *ptr == '.') {
- s->time->s = timelib_get_nr((char **) &ptr, 2);
-
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
- }
- }
-
- s->time->h += timelib_meridian((char **) &ptr, s->time->h);
- TIMELIB_DEINIT;
- return TIMELIB_SHORTDATE_WITH_TIME;
- }
-#line 5226 "ext/date/lib/parse_date.c"
-yy280:
- YYDEBUG(280, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy278;
- if (yych == '.') goto yy277;
- goto yy57;
- }
-yy281:
- YYDEBUG(281, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy223;
- } else {
- if (yych <= '(') {
- if (yych <= ' ') goto yy278;
- goto yy223;
- } else {
- if (yych <= ')') goto yy228;
- if (yych <= ',') goto yy223;
- goto yy244;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '.') goto yy277;
- if (yych <= '/') goto yy244;
- if (yych <= '@') goto yy223;
- goto yy238;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy223;
- goto yy244;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy243;
- goto yy223;
- }
- }
- }
-yy282:
- YYDEBUG(282, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy283;
- if (yych <= 0x1F) goto yy223;
- } else {
- if (yych == '.') goto yy267;
- if (yych <= '9') goto yy223;
- goto yy267;
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy285;
- if (yych <= 'O') goto yy223;
- goto yy285;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy223;
- goto yy285;
- } else {
- if (yych == 'p') goto yy285;
- goto yy223;
- }
- }
- }
-yy283:
- YYDEBUG(283, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(284, *YYCURSOR);
- if (yych <= 'A') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy283;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy283;
- if (yych <= '@') goto yy57;
- }
- } else {
- if (yych <= '`') {
- if (yych != 'P') goto yy57;
- } else {
- if (yych <= 'a') goto yy285;
- if (yych != 'p') goto yy57;
- }
- }
-yy285:
- YYDEBUG(285, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy287;
- if (yych == 'm') goto yy287;
- goto yy57;
- }
-yy286:
- YYDEBUG(286, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy287;
- if (yych != 'm') goto yy57;
-yy287:
- YYDEBUG(287, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy278;
- if (yych != '.') goto yy57;
- }
-yy288:
- YYDEBUG(288, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy57;
- goto yy278;
- } else {
- if (yych == ' ') goto yy278;
- goto yy57;
- }
-yy289:
- YYDEBUG(289, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy199;
- if (yych >= ':') goto yy199;
- YYDEBUG(290, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy199;
-yy291:
- YYDEBUG(291, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy199;
- } else {
- if (yych <= '9') goto yy289;
- if (yych <= ':') goto yy221;
- goto yy199;
- }
-yy292:
- YYDEBUG(292, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy199;
- } else {
- if (yych <= '9') goto yy289;
- if (yych <= ':') goto yy264;
- goto yy199;
- }
-yy293:
- YYDEBUG(293, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy294:
- YYDEBUG(294, *YYCURSOR);
- ++YYCURSOR;
-yy295:
- YYDEBUG(295, *YYCURSOR);
-#line 1370 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datenoday");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_NO_DAY;
- }
-#line 5416 "ext/date/lib/parse_date.c"
-yy296:
- YYDEBUG(296, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy57;
- } else {
- if (yych <= '9') goto yy294;
- if (yych <= ':') goto yy221;
- goto yy57;
- }
-yy297:
- YYDEBUG(297, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '9') goto yy294;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy298:
- YYDEBUG(298, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych == '.') goto yy331;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy221;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy299:
- YYDEBUG(299, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych != '.') goto yy216;
- } else {
- if (yych <= '0') goto yy301;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy300:
- YYDEBUG(300, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy306;
- goto yy307;
- } else {
- if (yych <= '2') goto yy308;
- if (yych <= '5') goto yy309;
- if (yych <= '9') goto yy310;
- goto yy216;
- }
-yy301:
- YYDEBUG(301, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '0') goto yy304;
- if (yych <= '9') goto yy305;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy302:
- YYDEBUG(302, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '2') goto yy305;
- if (yych <= '9') goto yy304;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy303:
- YYDEBUG(303, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy264;
- goto yy57;
- } else {
- if (yych <= '4') goto yy304;
- if (yych <= '9') goto yy294;
- if (yych <= ':') goto yy264;
- goto yy57;
- }
-yy304:
- YYDEBUG(304, *YYCURSOR);
- yyaccept = 8;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy221;
- if (yych == ':') goto yy221;
- goto yy295;
-yy305:
- YYDEBUG(305, *YYCURSOR);
- yyaccept = 8;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy264;
- if (yych == ':') goto yy264;
- goto yy295;
-yy306:
- YYDEBUG(306, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy326;
- goto yy199;
- } else {
- if (yych <= '0') goto yy325;
- if (yych <= '9') goto yy330;
- if (yych <= ':') goto yy326;
- goto yy199;
- }
-yy307:
- YYDEBUG(307, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy311;
- goto yy199;
- } else {
- if (yych <= '2') goto yy330;
- if (yych <= '9') goto yy325;
- if (yych <= ':') goto yy311;
- goto yy199;
- }
-yy308:
- YYDEBUG(308, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy311;
- goto yy199;
- } else {
- if (yych <= '4') goto yy325;
- if (yych <= '9') goto yy324;
- if (yych <= ':') goto yy311;
- goto yy199;
- }
-yy309:
- YYDEBUG(309, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy311;
- goto yy199;
- } else {
- if (yych <= '9') goto yy324;
- if (yych <= ':') goto yy311;
- goto yy199;
- }
-yy310:
- YYDEBUG(310, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych != '.') goto yy199;
- } else {
- if (yych <= '9') goto yy263;
- if (yych >= ';') goto yy199;
- }
-yy311:
- YYDEBUG(311, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy312;
- if (yych <= '6') goto yy313;
- if (yych <= '9') goto yy266;
- goto yy57;
-yy312:
- YYDEBUG(312, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy267;
- goto yy223;
- } else {
- if (yych <= '9') goto yy314;
- if (yych <= ':') goto yy267;
- goto yy223;
- }
-yy313:
- YYDEBUG(313, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy267;
- goto yy223;
- } else {
- if (yych <= '0') goto yy270;
- if (yych == ':') goto yy267;
- goto yy223;
- }
-yy314:
- YYDEBUG(314, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy316;
- if (yych <= 0x1F) goto yy223;
- goto yy316;
- } else {
- if (yych <= '(') {
- if (yych <= '\'') goto yy223;
- goto yy316;
- } else {
- if (yych == '+') goto yy316;
- goto yy223;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '-') goto yy316;
- if (yych <= '.') goto yy267;
- if (yych <= '9') goto yy223;
- goto yy267;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy223;
- goto yy316;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy316;
- goto yy223;
- }
- }
- }
-yy315:
- YYDEBUG(315, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
-yy316:
- YYDEBUG(316, *YYCURSOR);
- if (yych <= '@') {
- if (yych <= '\'') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy315;
- } else {
- if (yych == ' ') goto yy315;
- goto yy57;
- }
- } else {
- if (yych <= '+') {
- if (yych <= '(') goto yy234;
- if (yych <= '*') goto yy57;
- goto yy233;
- } else {
- if (yych == '-') goto yy233;
- goto yy57;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= 'G') {
- if (yych <= 'A') goto yy317;
- if (yych <= 'F') goto yy235;
- goto yy232;
- } else {
- if (yych != 'P') goto yy235;
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') goto yy57;
- if (yych <= 'a') goto yy318;
- goto yy236;
- } else {
- if (yych <= 'p') goto yy318;
- if (yych <= 'z') goto yy236;
- goto yy57;
- }
- }
- }
-yy317:
- YYDEBUG(317, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy320;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy319;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy323;
- if (yych <= 'z') goto yy242;
- goto yy223;
- }
- }
-yy318:
- YYDEBUG(318, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy320;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy319;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy319;
- if (yych <= 'z') goto yy237;
- goto yy223;
- }
- }
-yy319:
- YYDEBUG(319, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ')') {
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy223;
- goto yy278;
- } else {
- if (yych == ' ') goto yy278;
- if (yych <= '(') goto yy223;
- goto yy228;
- }
- } else {
- if (yych <= '@') {
- if (yych == '.') goto yy322;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy238;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy238;
- goto yy223;
- }
- }
-yy320:
- YYDEBUG(320, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy321;
- if (yych != 'm') goto yy57;
-yy321:
- YYDEBUG(321, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy278;
- if (yych != '.') goto yy57;
- }
-yy322:
- YYDEBUG(322, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy57;
- goto yy278;
- } else {
- if (yych == ' ') goto yy278;
- goto yy57;
- }
-yy323:
- YYDEBUG(323, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy223;
- } else {
- if (yych <= '(') {
- if (yych <= ' ') goto yy278;
- goto yy223;
- } else {
- if (yych <= ')') goto yy228;
- if (yych <= ',') goto yy223;
- goto yy244;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '.') goto yy322;
- if (yych <= '/') goto yy244;
- if (yych <= '@') goto yy223;
- goto yy238;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy223;
- goto yy244;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy243;
- goto yy223;
- }
- }
- }
-yy324:
- YYDEBUG(324, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy283;
- if (yych <= 0x1F) goto yy199;
- goto yy283;
- } else {
- if (yych <= '.') {
- if (yych <= '-') goto yy199;
- goto yy267;
- } else {
- if (yych <= '/') goto yy199;
- if (yych <= '9') goto yy289;
- goto yy267;
- }
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy285;
- if (yych <= 'O') goto yy199;
- goto yy285;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy199;
- goto yy285;
- } else {
- if (yych == 'p') goto yy285;
- goto yy199;
- }
- }
- }
-yy325:
- YYDEBUG(325, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy283;
- if (yych <= 0x1F) goto yy199;
- goto yy283;
- } else {
- if (yych <= '.') {
- if (yych <= '-') goto yy199;
- } else {
- if (yych <= '/') goto yy199;
- if (yych <= '9') goto yy289;
- }
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy285;
- if (yych <= 'O') goto yy199;
- goto yy285;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy199;
- goto yy285;
- } else {
- if (yych == 'p') goto yy285;
- goto yy199;
- }
- }
- }
-yy326:
- YYDEBUG(326, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy327;
- if (yych <= '6') goto yy328;
- if (yych <= '9') goto yy224;
- goto yy57;
-yy327:
- YYDEBUG(327, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- goto yy223;
- } else {
- if (yych <= '9') goto yy329;
- if (yych <= ':') goto yy225;
- goto yy223;
- }
-yy328:
- YYDEBUG(328, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- goto yy223;
- } else {
- if (yych <= '0') goto yy270;
- if (yych == ':') goto yy225;
- goto yy223;
- }
-yy329:
- YYDEBUG(329, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy272;
- if (yych <= 0x1F) goto yy223;
- goto yy272;
- } else {
- if (yych <= '(') {
- if (yych <= '\'') goto yy223;
- goto yy272;
- } else {
- if (yych == '+') goto yy272;
- goto yy223;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '-') goto yy272;
- if (yych <= '.') goto yy225;
- if (yych <= '9') goto yy223;
- goto yy225;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy223;
- goto yy272;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy272;
- goto yy223;
- }
- }
- }
-yy330:
- YYDEBUG(330, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy283;
- if (yych <= 0x1F) goto yy199;
- goto yy283;
- } else {
- if (yych <= '.') {
- if (yych <= '-') goto yy199;
- goto yy311;
- } else {
- if (yych <= '/') goto yy199;
- if (yych <= '9') goto yy289;
- goto yy311;
- }
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy285;
- if (yych <= 'O') goto yy199;
- goto yy285;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy199;
- goto yy285;
- } else {
- if (yych == 'p') goto yy285;
- goto yy199;
- }
- }
- }
-yy331:
- YYDEBUG(331, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy333;
- goto yy334;
- } else {
- if (yych <= '2') goto yy335;
- if (yych <= '5') goto yy336;
- if (yych <= '9') goto yy337;
- goto yy216;
- }
-yy332:
- YYDEBUG(332, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy221;
- goto yy57;
- } else {
- if (yych <= '0') goto yy304;
- if (yych <= '9') goto yy305;
- if (yych <= ':') goto yy221;
- goto yy57;
- }
-yy333:
- YYDEBUG(333, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy350;
- goto yy199;
- } else {
- if (yych <= '0') goto yy349;
- if (yych <= '9') goto yy354;
- if (yych <= ':') goto yy350;
- goto yy199;
- }
-yy334:
- YYDEBUG(334, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy338;
- goto yy199;
- } else {
- if (yych <= '2') goto yy354;
- if (yych <= '9') goto yy349;
- if (yych <= ':') goto yy338;
- goto yy199;
- }
-yy335:
- YYDEBUG(335, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy338;
- goto yy199;
- } else {
- if (yych <= '4') goto yy349;
- if (yych <= '9') goto yy348;
- if (yych <= ':') goto yy338;
- goto yy199;
- }
-yy336:
- YYDEBUG(336, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy338;
- goto yy199;
- } else {
- if (yych <= '9') goto yy348;
- if (yych <= ':') goto yy338;
- goto yy199;
- }
-yy337:
- YYDEBUG(337, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych != '.') goto yy199;
- } else {
- if (yych <= '9') goto yy263;
- if (yych >= ';') goto yy199;
- }
-yy338:
- YYDEBUG(338, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy339;
- if (yych <= '6') goto yy340;
- if (yych <= '9') goto yy266;
- goto yy57;
-yy339:
- YYDEBUG(339, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy267;
- goto yy223;
- } else {
- if (yych <= '9') goto yy341;
- if (yych <= ':') goto yy267;
- goto yy223;
- }
-yy340:
- YYDEBUG(340, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy267;
- goto yy223;
- } else {
- if (yych <= '0') goto yy229;
- if (yych == ':') goto yy267;
- goto yy223;
- }
-yy341:
- YYDEBUG(341, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy343;
- if (yych <= 0x1F) goto yy223;
- goto yy343;
- } else {
- if (yych <= '(') {
- if (yych <= '\'') goto yy223;
- goto yy343;
- } else {
- if (yych == '+') goto yy343;
- goto yy223;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '-') goto yy343;
- if (yych <= '.') goto yy267;
- if (yych <= '9') goto yy223;
- goto yy267;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy223;
- goto yy343;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy343;
- goto yy223;
- }
- }
- }
-yy342:
- YYDEBUG(342, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
-yy343:
- YYDEBUG(343, *YYCURSOR);
- if (yych <= '@') {
- if (yych <= '\'') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy342;
- } else {
- if (yych == ' ') goto yy342;
- goto yy57;
- }
- } else {
- if (yych <= '+') {
- if (yych <= '(') goto yy234;
- if (yych <= '*') goto yy57;
- goto yy233;
- } else {
- if (yych == '-') goto yy233;
- goto yy57;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= 'G') {
- if (yych <= 'A') goto yy344;
- if (yych <= 'F') goto yy235;
- goto yy232;
- } else {
- if (yych != 'P') goto yy235;
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') goto yy57;
- if (yych <= 'a') goto yy345;
- goto yy236;
- } else {
- if (yych <= 'p') goto yy345;
- if (yych <= 'z') goto yy236;
- goto yy57;
- }
- }
- }
-yy344:
- YYDEBUG(344, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy286;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy346;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy347;
- if (yych <= 'z') goto yy242;
- goto yy223;
- }
- }
-yy345:
- YYDEBUG(345, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy228;
- goto yy223;
- } else {
- if (yych <= '.') goto yy286;
- if (yych <= '@') goto yy223;
- goto yy237;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'M') goto yy346;
- if (yych <= 'Z') goto yy237;
- goto yy223;
- } else {
- if (yych == 'm') goto yy346;
- if (yych <= 'z') goto yy237;
- goto yy223;
- }
- }
-yy346:
- YYDEBUG(346, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ')') {
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy278;
- if (yych <= 0x08) goto yy223;
- goto yy278;
- } else {
- if (yych == ' ') goto yy278;
- if (yych <= '(') goto yy223;
- goto yy228;
- }
- } else {
- if (yych <= '@') {
- if (yych == '.') goto yy288;
- goto yy223;
- } else {
- if (yych <= 'Z') goto yy238;
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy238;
- goto yy223;
- }
- }
-yy347:
- YYDEBUG(347, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy278;
- if (yych == '\t') goto yy278;
- goto yy223;
- } else {
- if (yych <= '(') {
- if (yych <= ' ') goto yy278;
- goto yy223;
- } else {
- if (yych <= ')') goto yy228;
- if (yych <= ',') goto yy223;
- goto yy244;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '.') goto yy288;
- if (yych <= '/') goto yy244;
- if (yych <= '@') goto yy223;
- goto yy238;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy223;
- goto yy244;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy243;
- goto yy223;
- }
- }
- }
-yy348:
- YYDEBUG(348, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- goto yy199;
- } else {
- if (yych <= '9') goto yy289;
- if (yych <= ':') goto yy225;
- goto yy199;
- }
-yy349:
- YYDEBUG(349, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych != '.') goto yy199;
- } else {
- if (yych <= '9') goto yy289;
- if (yych >= ';') goto yy199;
- }
-yy350:
- YYDEBUG(350, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy351;
- if (yych <= '6') goto yy352;
- if (yych <= '9') goto yy224;
- goto yy57;
-yy351:
- YYDEBUG(351, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- goto yy223;
- } else {
- if (yych <= '9') goto yy353;
- if (yych <= ':') goto yy225;
- goto yy223;
- }
-yy352:
- YYDEBUG(352, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy225;
- goto yy223;
- } else {
- if (yych <= '0') goto yy229;
- if (yych == ':') goto yy225;
- goto yy223;
- }
-yy353:
- YYDEBUG(353, *YYCURSOR);
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy231;
- if (yych <= 0x1F) goto yy223;
- goto yy231;
- } else {
- if (yych <= '(') {
- if (yych <= '\'') goto yy223;
- goto yy231;
- } else {
- if (yych == '+') goto yy231;
- goto yy223;
- }
- }
- } else {
- if (yych <= ':') {
- if (yych <= '-') goto yy231;
- if (yych <= '.') goto yy225;
- if (yych <= '9') goto yy223;
- goto yy225;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy223;
- goto yy231;
- } else {
- if (yych <= '`') goto yy223;
- if (yych <= 'z') goto yy231;
- goto yy223;
- }
- }
- }
-yy354:
- YYDEBUG(354, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy338;
- goto yy199;
- } else {
- if (yych <= '9') goto yy289;
- if (yych <= ':') goto yy338;
- goto yy199;
- }
-yy355:
- YYDEBUG(355, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych == '.') goto yy300;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy356:
- YYDEBUG(356, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych == '.') goto yy300;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy357:
- YYDEBUG(357, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy360;
- goto yy361;
- } else {
- if (yych <= '2') goto yy368;
- if (yych <= '9') goto yy369;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy358:
- YYDEBUG(358, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych <= '0') goto yy360;
- goto yy361;
- } else {
- if (yych <= '2') goto yy368;
- if (yych <= '9') goto yy369;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy359:
- YYDEBUG(359, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy216;
- if (yych >= '1') goto yy361;
- } else {
- if (yych <= '2') goto yy209;
- if (yych <= '9') goto yy210;
- goto yy216;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy212;
- if (yych <= 'q') goto yy216;
- goto yy213;
- } else {
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy360:
- YYDEBUG(360, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych <= ',') goto yy216;
- if (yych <= '-') goto yy362;
- if (yych <= '.') goto yy331;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy221;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy361:
- YYDEBUG(361, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych <= ',') goto yy216;
- if (yych <= '-') goto yy362;
- if (yych <= '.') goto yy300;
- goto yy216;
- } else {
- if (yych <= '0') goto yy301;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy362:
- YYDEBUG(362, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(363, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '/') goto yy364;
- if (yych <= '9') goto yy365;
-yy364:
- YYDEBUG(364, *YYCURSOR);
-#line 1510 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("pgtextshort");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_PG_TEXT;
- }
-#line 6648 "ext/date/lib/parse_date.c"
-yy365:
- YYDEBUG(365, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy364;
- if (yych >= ':') goto yy364;
- YYDEBUG(366, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy364;
- if (yych >= ':') goto yy364;
- YYDEBUG(367, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy364;
-yy368:
- YYDEBUG(368, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych <= ',') goto yy216;
- if (yych <= '-') goto yy362;
- if (yych <= '.') goto yy300;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy369:
- YYDEBUG(369, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '/') {
- if (yych <= ',') goto yy216;
- if (yych <= '-') goto yy362;
- if (yych <= '.') goto yy300;
- goto yy216;
- } else {
- if (yych <= '0') goto yy332;
- if (yych <= '1') goto yy302;
- if (yych <= '2') goto yy303;
- goto yy297;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy264;
- if (yych == 'n') goto yy212;
- goto yy216;
- } else {
- if (yych <= 'r') goto yy213;
- if (yych <= 's') goto yy211;
- if (yych <= 't') goto yy214;
- goto yy216;
- }
- }
-yy370:
- YYDEBUG(370, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'B') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'C') goto yy193;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'b') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'c') goto yy371;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy371:
- YYDEBUG(371, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'D') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'E') goto yy202;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'e') goto yy373;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy372:
- YYDEBUG(372, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy149;
- }
- if (yych <= '/') goto yy196;
- if (yych <= '0') goto yy357;
- if (yych <= '2') goto yy358;
- if (yych <= '3') goto yy359;
- goto yy196;
-yy373:
- YYDEBUG(373, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'M') goto yy203;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'l') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'm') goto yy374;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy374:
- YYDEBUG(374, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'B') goto yy204;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'b') goto yy375;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy375:
- YYDEBUG(375, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'E') goto yy205;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'e') goto yy376;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy376:
- YYDEBUG(376, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych != 'r') goto yy155;
-yy377:
- YYDEBUG(377, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '-') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy194;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych <= ',') goto yy194;
- }
- } else {
- if (yych <= '9') {
- if (yych == '/') goto yy148;
- goto yy196;
- } else {
- if (yych == '_') goto yy148;
- goto yy194;
- }
- }
-yy378:
- YYDEBUG(378, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy149;
- }
- goto yy196;
-yy379:
- YYDEBUG(379, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy142;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 't') goto yy380;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy380:
- YYDEBUG(380, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'O') goto yy143;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'o') goto yy381;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy381:
- YYDEBUG(381, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'B') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy144;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'b') goto yy382;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy382:
- YYDEBUG(382, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy145;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'e') goto yy383;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy383:
- YYDEBUG(383, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Q') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'R') goto yy206;
- if (yych == 'r') goto yy206;
- goto yy4;
- }
-yy384:
- YYDEBUG(384, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy380;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 't') goto yy385;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy385:
- YYDEBUG(385, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'N') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'O') goto yy381;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'o') goto yy386;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy386:
- YYDEBUG(386, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'B') goto yy382;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'b') goto yy387;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy387:
- YYDEBUG(387, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy383;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'e') goto yy388;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy388:
- YYDEBUG(388, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'R') goto yy206;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'r') goto yy377;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy389:
- YYDEBUG(389, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'G') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'F') goto yy142;
- goto yy397;
- }
- } else {
- if (yych <= 'f') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'g') goto yy397;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy390:
- YYDEBUG(390, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy142;
- goto yy394;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'r') goto yy394;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy391:
- YYDEBUG(391, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'N') goto yy142;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'o') goto yy392;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy392:
- YYDEBUG(392, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '@') {
- if (yych == ')') goto yy140;
- } else {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy393;
- if (yych <= 'z') goto yy143;
- }
-yy393:
- YYDEBUG(393, *YYCURSOR);
-#line 1566 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("ago");
- TIMELIB_INIT;
- s->time->relative.y = 0 - s->time->relative.y;
- s->time->relative.m = 0 - s->time->relative.m;
- s->time->relative.d = 0 - s->time->relative.d;
- s->time->relative.h = 0 - s->time->relative.h;
- s->time->relative.i = 0 - s->time->relative.i;
- s->time->relative.s = 0 - s->time->relative.s;
- s->time->relative.weekday = 0 - s->time->relative.weekday;
- if (s->time->relative.weekday == 0) {
- s->time->relative.weekday = -7;
- }
- if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) {
- s->time->relative.special.amount = 0 - s->time->relative.special.amount;
- }
- TIMELIB_DEINIT;
- return TIMELIB_AGO;
- }
-#line 7306 "ext/date/lib/parse_date.c"
-yy394:
- YYDEBUG(394, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'I') goto yy143;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'i') goto yy395;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy395:
- YYDEBUG(395, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'K') goto yy144;
- }
- } else {
- if (yych <= 'k') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'l') goto yy396;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy396:
- YYDEBUG(396, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy194;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy194;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy194;
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy145;
- goto yy194;
- }
- }
-yy397:
- YYDEBUG(397, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'U') goto yy143;
- }
- } else {
- if (yych <= 't') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'u') goto yy398;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy398:
- YYDEBUG(398, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy144;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 's') goto yy399;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy399:
- YYDEBUG(399, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy145;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 't') goto yy400;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy400:
- YYDEBUG(400, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '.') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy196;
- } else {
- if (yych <= '/') goto yy194;
- if (yych <= '9') goto yy196;
- goto yy194;
- }
- }
-yy401:
- YYDEBUG(401, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'F') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'G') goto yy397;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'f') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'g') goto yy408;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy402:
- YYDEBUG(402, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy394;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'r') goto yy405;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy403:
- YYDEBUG(403, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'O') goto yy392;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'n') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'o') goto yy404;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy404:
- YYDEBUG(404, *YYCURSOR);
- yyaccept = 9;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy393;
- } else {
- if (yych == '.') goto yy393;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy393;
- if (yych <= 'Z') goto yy143;
- goto yy393;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy393;
- if (yych <= 'z') goto yy151;
- goto yy393;
- }
- }
-yy405:
- YYDEBUG(405, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'H') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'I') goto yy395;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'i') goto yy406;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy406:
- YYDEBUG(406, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'K') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'L') goto yy396;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'k') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'l') goto yy407;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy407:
- YYDEBUG(407, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy194;
- goto yy196;
- } else {
- if (yych <= ')') {
- if (yych <= '(') goto yy194;
- goto yy140;
- } else {
- if (yych <= ',') goto yy194;
- if (yych <= '-') goto yy378;
- goto yy196;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '/') goto yy148;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy194;
- goto yy145;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy194;
- goto yy148;
- } else {
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy153;
- goto yy194;
- }
- }
- }
-yy408:
- YYDEBUG(408, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'T') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'U') goto yy398;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 't') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'u') goto yy409;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy409:
- YYDEBUG(409, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy399;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 's') goto yy410;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy410:
- YYDEBUG(410, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy400;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 't') goto yy411;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy411:
- YYDEBUG(411, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy194;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy194;
- }
- } else {
- if (yych <= '/') {
- if (yych <= '-') goto yy378;
- if (yych <= '.') goto yy196;
- goto yy148;
- } else {
- if (yych <= '9') goto yy196;
- if (yych == '_') goto yy148;
- goto yy194;
- }
- }
-yy412:
- YYDEBUG(412, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'L') goto yy419;
- if (yych <= 'M') goto yy142;
- goto yy418;
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'k') goto yy142;
- goto yy419;
- } else {
- if (yych == 'n') goto yy418;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy413:
- YYDEBUG(413, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy142;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'n') goto yy414;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy414:
- YYDEBUG(414, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'U') goto yy143;
- }
- } else {
- if (yych <= 't') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'u') goto yy415;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy415:
- YYDEBUG(415, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy416;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy416:
- YYDEBUG(416, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy145;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'r') goto yy417;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy417:
- YYDEBUG(417, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'X') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Y') goto yy206;
- if (yych == 'y') goto yy206;
- goto yy4;
- }
-yy418:
- YYDEBUG(418, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych == 'E') goto yy420;
- goto yy143;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'e') goto yy420;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy419:
- YYDEBUG(419, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'Y') goto yy143;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'y') goto yy420;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy420:
- YYDEBUG(420, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy194;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy194;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy194;
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy144;
- goto yy194;
- }
- }
-yy421:
- YYDEBUG(421, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'L') goto yy419;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'N') goto yy418;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'm') {
- if (yych == 'l') goto yy428;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy427;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy422:
- YYDEBUG(422, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy414;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy423;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy423:
- YYDEBUG(423, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'T') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'U') goto yy415;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 't') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'u') goto yy424;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy424:
- YYDEBUG(424, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy416;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy425;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
-yy425:
- YYDEBUG(425, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy417;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'r') goto yy426;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy426:
- YYDEBUG(426, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Y') goto yy206;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'y') goto yy377;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy427:
- YYDEBUG(427, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'D') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'E') goto yy420;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'e') goto yy429;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy428:
- YYDEBUG(428, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'X') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'Y') goto yy420;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'y') goto yy429;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy429:
- YYDEBUG(429, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy194;
- goto yy196;
- } else {
- if (yych <= ')') {
- if (yych <= '(') goto yy194;
- goto yy140;
- } else {
- if (yych <= ',') goto yy194;
- if (yych <= '-') goto yy378;
- goto yy196;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '/') goto yy148;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy194;
- goto yy144;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy194;
- goto yy148;
- } else {
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy152;
- goto yy194;
- }
- }
- }
-yy430:
- YYDEBUG(430, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'J') goto yy142;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- }
-yy431:
- YYDEBUG(431, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy4;
- if (yych <= '9') goto yy196;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy432:
- YYDEBUG(432, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'J') goto yy142;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- }
- YYDEBUG(433, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'Z') {
- if (yych >= 'J') goto yy143;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
- }
- YYDEBUG(434, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy4;
- if (yych <= '9') goto yy196;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy435:
- YYDEBUG(435, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy196;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy196;
- if (yych == ')') goto yy140;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy4;
- if (yych <= '9') goto yy196;
- goto yy4;
- } else {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy436:
- YYDEBUG(436, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy4;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy196;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'Z') {
- if (yych <= 'I') goto yy431;
- goto yy142;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- }
-yy437:
- YYDEBUG(437, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '9') {
- if (yych <= '/') goto yy4;
- goto yy457;
- } else {
- if (yych <= ':') goto yy163;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy438:
- YYDEBUG(438, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '4') {
- if (yych <= '/') goto yy4;
- goto yy457;
- } else {
- if (yych <= '5') goto yy442;
- if (yych <= '9') goto yy443;
- goto yy163;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy4;
- goto yy61;
- } else {
- if (yych == 'F') goto yy61;
- goto yy4;
- }
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy4;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy4;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy4;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy439:
- YYDEBUG(439, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= 'C') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '5') {
- if (yych <= '/') goto yy4;
- goto yy442;
- } else {
- if (yych <= '9') goto yy443;
- if (yych <= ':') goto yy163;
- goto yy4;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych == 'E') goto yy4;
- if (yych <= 'F') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy4;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy4;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy4;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy440:
- YYDEBUG(440, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(441, *YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy58;
- }
- if (yych <= ',') {
- if (yych == '+') goto yy440;
- goto yy57;
- } else {
- if (yych <= '-') goto yy440;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy55;
- goto yy57;
- }
-yy442:
- YYDEBUG(442, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy456;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy443:
- YYDEBUG(443, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy444;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy444:
- YYDEBUG(444, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych >= ':') goto yy61;
-yy445:
- YYDEBUG(445, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych != '-') goto yy61;
-yy446:
- YYDEBUG(446, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy447;
- if (yych <= '1') goto yy448;
- goto yy57;
-yy447:
- YYDEBUG(447, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy449;
- goto yy57;
-yy448:
- YYDEBUG(448, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
-yy449:
- YYDEBUG(449, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '-') goto yy57;
- YYDEBUG(450, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy451;
- if (yych <= '2') goto yy452;
- if (yych <= '3') goto yy453;
- goto yy57;
-yy451:
- YYDEBUG(451, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy454;
- goto yy57;
-yy452:
- YYDEBUG(452, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy454;
- goto yy57;
-yy453:
- YYDEBUG(453, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '2') goto yy57;
-yy454:
- YYDEBUG(454, *YYCURSOR);
- ++YYCURSOR;
-yy455:
- YYDEBUG(455, *YYCURSOR);
-#line 1280 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_unsigned_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_DEINIT;
- return TIMELIB_ISO_DATE;
- }
-#line 9067 "ext/date/lib/parse_date.c"
-yy456:
- YYDEBUG(456, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy445;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy457:
- YYDEBUG(457, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= 'C') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '5') {
- if (yych <= '/') goto yy4;
- } else {
- if (yych <= '9') goto yy456;
- if (yych <= ':') goto yy163;
- goto yy4;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych == 'E') goto yy4;
- if (yych <= 'F') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy4;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy4;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy4;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
- YYDEBUG(458, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych <= '/') goto yy4;
- if (yych <= '9') goto yy459;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy459:
- YYDEBUG(459, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy4;
- goto yy61;
- } else {
- if (yych == '-') goto yy446;
- if (yych <= 'C') goto yy4;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy4;
- if (yych <= 'T') goto yy61;
- goto yy4;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy4;
- if (yych <= 'Y') goto yy61;
- goto yy4;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy4;
- } else {
- if (yych == 'g') goto yy4;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy4;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy4;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy4;
- }
- }
- }
- }
-yy460:
- YYDEBUG(460, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy462;
- if (yych <= '0') goto yy736;
- if (yych <= '1') goto yy737;
- if (yych <= '9') goto yy738;
- goto yy462;
-yy461:
- YYDEBUG(461, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
- yych = *YYCURSOR;
-yy462:
- YYDEBUG(462, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ': goto yy461;
- case '-':
- case '.': goto yy577;
- case 'A':
- case 'a': goto yy480;
- case 'D':
- case 'd': goto yy466;
- case 'F':
- case 'f': goto yy467;
- case 'H':
- case 'h': goto yy64;
- case 'I': goto yy475;
- case 'J':
- case 'j': goto yy479;
- case 'M':
- case 'm': goto yy465;
- case 'N':
- case 'n': goto yy482;
- case 'O':
- case 'o': goto yy481;
- case 'P':
- case 'p': goto yy484;
- case 'S':
- case 's': goto yy463;
- case 'T':
- case 't': goto yy69;
- case 'V': goto yy477;
- case 'W':
- case 'w': goto yy68;
- case 'X': goto yy478;
- case 'Y':
- case 'y': goto yy67;
- default: goto yy57;
- }
-yy463:
- YYDEBUG(463, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych == 'A') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'E') goto yy1049;
- if (yych <= 'T') goto yy57;
- goto yy126;
- }
- } else {
- if (yych <= 'd') {
- if (yych == 'a') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'e') goto yy1049;
- if (yych == 'u') goto yy126;
- goto yy57;
- }
- }
-yy464:
- YYDEBUG(464, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '`') {
- if (yych <= 'D') {
- if (yych == 'A') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'E') goto yy1049;
- if (yych == 'U') goto yy126;
- goto yy57;
- }
- } else {
- if (yych <= 'e') {
- if (yych <= 'a') goto yy127;
- if (yych <= 'd') goto yy57;
- goto yy1049;
- } else {
- if (yych <= 's') goto yy57;
- if (yych <= 't') goto yy729;
- if (yych <= 'u') goto yy126;
- goto yy57;
- }
- }
-yy465:
- YYDEBUG(465, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'H') {
- if (yych == 'A') goto yy592;
- goto yy57;
- } else {
- if (yych <= 'I') goto yy118;
- if (yych <= 'N') goto yy57;
- goto yy117;
- }
- } else {
- if (yych <= 'h') {
- if (yych == 'a') goto yy592;
- goto yy57;
- } else {
- if (yych <= 'i') goto yy118;
- if (yych == 'o') goto yy117;
- goto yy57;
- }
- }
-yy466:
- YYDEBUG(466, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych == 'A') goto yy114;
- if (yych <= 'D') goto yy57;
- goto yy579;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy114;
- } else {
- if (yych == 'e') goto yy579;
- goto yy57;
- }
- }
-yy467:
- YYDEBUG(467, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= 'N') {
- if (yych == 'E') goto yy595;
- goto yy57;
- } else {
- if (yych <= 'O') goto yy99;
- if (yych <= 'Q') goto yy57;
- goto yy98;
- }
- } else {
- if (yych <= 'n') {
- if (yych == 'e') goto yy595;
- goto yy57;
- } else {
- if (yych <= 'o') goto yy99;
- if (yych == 'r') goto yy98;
- goto yy57;
- }
- }
-yy468:
- YYDEBUG(468, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'H') goto yy70;
- if (yych <= 'T') goto yy57;
- goto yy71;
- } else {
- if (yych <= 'h') {
- if (yych <= 'g') goto yy57;
- goto yy1048;
- } else {
- if (yych == 'u') goto yy71;
- goto yy57;
- }
- }
-yy469:
- YYDEBUG(469, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy742;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy741;
- goto yy61;
-yy470:
- YYDEBUG(470, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'c') {
- if (yych == 'O') goto yy530;
- goto yy57;
- } else {
- if (yych <= 'd') goto yy729;
- if (yych == 'o') goto yy530;
- goto yy57;
- }
-yy471:
- YYDEBUG(471, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy729;
- goto yy57;
-yy472:
- YYDEBUG(472, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0':
- case '1':
- case '2': goto yy666;
- case '3': goto yy668;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy669;
- case 'A':
- case 'a': goto yy673;
- case 'D':
- case 'd': goto yy677;
- case 'F':
- case 'f': goto yy671;
- case 'J':
- case 'j': goto yy670;
- case 'M':
- case 'm': goto yy672;
- case 'N':
- case 'n': goto yy676;
- case 'O':
- case 'o': goto yy675;
- case 'S':
- case 's': goto yy674;
- default: goto yy57;
- }
-yy473:
- YYDEBUG(473, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0': goto yy616;
- case '1': goto yy617;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy618;
- case 'A':
- case 'a': goto yy622;
- case 'D':
- case 'd': goto yy626;
- case 'F':
- case 'f': goto yy620;
- case 'J':
- case 'j': goto yy619;
- case 'M':
- case 'm': goto yy621;
- case 'N':
- case 'n': goto yy625;
- case 'O':
- case 'o': goto yy624;
- case 'S':
- case 's': goto yy623;
- default: goto yy578;
- }
-yy474:
- YYDEBUG(474, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '1') {
- if (yych <= '/') goto yy578;
- if (yych <= '0') goto yy568;
- goto yy569;
- } else {
- if (yych <= '5') goto yy570;
- if (yych <= '9') goto yy571;
- goto yy578;
- }
-yy475:
- YYDEBUG(475, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '.') goto yy532;
- }
- } else {
- if (yych <= 'U') {
- if (yych <= '9') goto yy534;
- if (yych == 'I') goto yy567;
- } else {
- if (yych == 'W') goto yy476;
- if (yych <= 'X') goto yy540;
- }
- }
-yy476:
- YYDEBUG(476, *YYCURSOR);
-#line 1409 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datenoyearrev");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- timelib_skip_day_suffix((char **) &ptr);
- s->time->m = timelib_get_month((char **) &ptr);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_TEXT;
- }
-#line 9638 "ext/date/lib/parse_date.c"
-yy477:
- YYDEBUG(477, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych == 'I') goto yy565;
- goto yy476;
- }
- }
-yy478:
- YYDEBUG(478, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych == 'I') goto yy564;
- goto yy476;
- }
- }
-yy479:
- YYDEBUG(479, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy557;
- if (yych <= 'T') goto yy57;
- goto yy556;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy557;
- } else {
- if (yych == 'u') goto yy556;
- goto yy57;
- }
- }
-yy480:
- YYDEBUG(480, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= 'L') {
- if (yych == '.') goto yy485;
- goto yy57;
- } else {
- if (yych <= 'M') goto yy486;
- if (yych == 'P') goto yy550;
- goto yy57;
- }
- } else {
- if (yych <= 'o') {
- if (yych <= 'U') goto yy549;
- if (yych == 'm') goto yy486;
- goto yy57;
- } else {
- if (yych <= 'p') goto yy550;
- if (yych == 'u') goto yy549;
- goto yy57;
- }
- }
-yy481:
- YYDEBUG(481, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy544;
- if (yych == 'c') goto yy544;
- goto yy57;
-yy482:
- YYDEBUG(482, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy530;
- if (yych == 'o') goto yy530;
- goto yy57;
-yy483:
- YYDEBUG(483, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy490;
- if (yych <= '9') goto yy492;
- goto yy57;
-yy484:
- YYDEBUG(484, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy486;
- if (yych == 'm') goto yy486;
- goto yy57;
- }
-yy485:
- YYDEBUG(485, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy486;
- if (yych != 'm') goto yy57;
-yy486:
- YYDEBUG(486, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy488;
- if (yych == '\t') goto yy488;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy488;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(487, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy488;
- if (yych <= 0x08) goto yy57;
- } else {
- if (yych != ' ') goto yy57;
- }
-yy488:
- YYDEBUG(488, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(489, *YYCURSOR);
-#line 1136 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':' || *ptr == '.') {
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':' || *ptr == '.') {
- s->time->s = timelib_get_nr((char **) &ptr, 2);
- }
- }
- s->time->h += timelib_meridian((char **) &ptr, s->time->h);
- TIMELIB_DEINIT;
- return TIMELIB_TIME12;
- }
-#line 9795 "ext/date/lib/parse_date.c"
-yy490:
- YYDEBUG(490, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy493;
- } else {
- if (yych <= '9') goto yy507;
- if (yych <= ':') goto yy493;
- }
-yy491:
- YYDEBUG(491, *YYCURSOR);
-#line 1173 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':' || *ptr == '.') {
- s->time->s = timelib_get_nr((char **) &ptr, 2);
-
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
- }
- }
-
- if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_TIME24_WITH_ZONE;
- }
-#line 9833 "ext/date/lib/parse_date.c"
-yy492:
- YYDEBUG(492, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy493;
- if (yych != ':') goto yy491;
-yy493:
- YYDEBUG(493, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy494;
- if (yych <= '6') goto yy495;
- if (yych <= '9') goto yy496;
- goto yy57;
-yy494:
- YYDEBUG(494, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy500;
- goto yy491;
-yy495:
- YYDEBUG(495, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych == '0') goto yy500;
- goto yy491;
-yy496:
- YYDEBUG(496, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != '.') goto yy491;
-yy497:
- YYDEBUG(497, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy498:
- YYDEBUG(498, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(499, *YYCURSOR);
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy498;
- goto yy491;
-yy500:
- YYDEBUG(500, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= 0x1F) {
- if (yych != '\t') goto yy491;
- } else {
- if (yych <= ' ') goto yy501;
- if (yych == '.') goto yy497;
- goto yy491;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'A') goto yy503;
- if (yych == 'P') goto yy503;
- goto yy491;
- } else {
- if (yych <= 'a') goto yy503;
- if (yych == 'p') goto yy503;
- goto yy491;
- }
- }
-yy501:
- YYDEBUG(501, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(502, *YYCURSOR);
- if (yych <= 'A') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy501;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy501;
- if (yych <= '@') goto yy57;
- }
- } else {
- if (yych <= '`') {
- if (yych != 'P') goto yy57;
- } else {
- if (yych <= 'a') goto yy503;
- if (yych != 'p') goto yy57;
- }
- }
-yy503:
- YYDEBUG(503, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy505;
- if (yych == 'm') goto yy505;
- goto yy57;
- }
- YYDEBUG(504, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy505;
- if (yych != 'm') goto yy57;
-yy505:
- YYDEBUG(505, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy488;
- if (yych == '\t') goto yy488;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy488;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(506, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy488;
- if (yych <= 0x08) goto yy57;
- goto yy488;
- } else {
- if (yych == ' ') goto yy488;
- goto yy57;
- }
-yy507:
- YYDEBUG(507, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy508;
- if (yych <= 0x1F) goto yy491;
- } else {
- if (yych == '.') goto yy493;
- if (yych <= '9') goto yy491;
- goto yy511;
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy510;
- if (yych <= 'O') goto yy491;
- goto yy510;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy491;
- goto yy510;
- } else {
- if (yych == 'p') goto yy510;
- goto yy491;
- }
- }
- }
-yy508:
- YYDEBUG(508, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(509, *YYCURSOR);
- if (yych <= 'A') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy508;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy508;
- if (yych <= '@') goto yy57;
- }
- } else {
- if (yych <= '`') {
- if (yych != 'P') goto yy57;
- } else {
- if (yych <= 'a') goto yy510;
- if (yych != 'p') goto yy57;
- }
- }
-yy510:
- YYDEBUG(510, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych == '.') goto yy527;
- goto yy57;
- } else {
- if (yych <= 'M') goto yy528;
- if (yych == 'm') goto yy528;
- goto yy57;
- }
-yy511:
- YYDEBUG(511, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy512;
- if (yych <= '6') goto yy513;
- if (yych <= '9') goto yy496;
- goto yy57;
-yy512:
- YYDEBUG(512, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy514;
- goto yy491;
-yy513:
- YYDEBUG(513, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych != '0') goto yy491;
-yy514:
- YYDEBUG(514, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy501;
- if (yych <= 0x1F) goto yy491;
- goto yy501;
- } else {
- if (yych == '.') goto yy515;
- if (yych <= '9') goto yy491;
- goto yy516;
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy503;
- if (yych <= 'O') goto yy491;
- goto yy503;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy491;
- goto yy503;
- } else {
- if (yych == 'p') goto yy503;
- goto yy491;
- }
- }
- }
-yy515:
- YYDEBUG(515, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy525;
- goto yy57;
-yy516:
- YYDEBUG(516, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy517:
- YYDEBUG(517, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(518, *YYCURSOR);
- if (yych <= 'O') {
- if (yych <= '9') {
- if (yych <= '/') goto yy57;
- goto yy517;
- } else {
- if (yych != 'A') goto yy57;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'P') goto yy519;
- if (yych <= '`') goto yy57;
- } else {
- if (yych != 'p') goto yy57;
- }
- }
-yy519:
- YYDEBUG(519, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy521;
- if (yych == 'm') goto yy521;
- goto yy57;
- }
- YYDEBUG(520, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy521;
- if (yych != 'm') goto yy57;
-yy521:
- YYDEBUG(521, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy523;
- if (yych == '\t') goto yy523;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy523;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(522, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy523;
- if (yych <= 0x08) goto yy57;
- } else {
- if (yych != ' ') goto yy57;
- }
-yy523:
- YYDEBUG(523, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(524, *YYCURSOR);
-#line 1153 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("mssqltime");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == ':' || *ptr == '.') {
- s->time->s = timelib_get_nr((char **) &ptr, 2);
-
- if (*ptr == ':' || *ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
- }
- }
- timelib_eat_spaces((char **) &ptr);
- s->time->h += timelib_meridian((char **) &ptr, s->time->h);
- TIMELIB_DEINIT;
- return TIMELIB_TIME24_WITH_ZONE;
- }
-#line 10162 "ext/date/lib/parse_date.c"
-yy525:
- YYDEBUG(525, *YYCURSOR);
- yyaccept = 11;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- YYDEBUG(526, *YYCURSOR);
- if (yych <= 'O') {
- if (yych <= '9') {
- if (yych <= '/') goto yy491;
- goto yy525;
- } else {
- if (yych == 'A') goto yy519;
- goto yy491;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'P') goto yy519;
- if (yych <= '`') goto yy491;
- goto yy519;
- } else {
- if (yych == 'p') goto yy519;
- goto yy491;
- }
- }
-yy527:
- YYDEBUG(527, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy528;
- if (yych != 'm') goto yy57;
-yy528:
- YYDEBUG(528, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy488;
- if (yych == '\t') goto yy488;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy488;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(529, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy488;
- if (yych <= 0x08) goto yy57;
- goto yy488;
- } else {
- if (yych == ' ') goto yy488;
- goto yy57;
- }
-yy530:
- YYDEBUG(530, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy531;
- if (yych != 'v') goto yy57;
-yy531:
- YYDEBUG(531, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych != '\t') goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy536;
- if (yych == 'e') goto yy536;
- goto yy476;
- }
- }
-yy532:
- YYDEBUG(532, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
-yy533:
- YYDEBUG(533, *YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy532;
- if (yych <= 0x1F) goto yy57;
- goto yy532;
- } else {
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- goto yy532;
- } else {
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- }
- }
-yy534:
- YYDEBUG(534, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '/') goto yy535;
- if (yych <= '9') goto yy541;
-yy535:
- YYDEBUG(535, *YYCURSOR);
-#line 1331 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datefull");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- timelib_skip_day_suffix((char **) &ptr);
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_FULL;
- }
-#line 10281 "ext/date/lib/parse_date.c"
-yy536:
- YYDEBUG(536, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy537;
- if (yych != 'm') goto yy57;
-yy537:
- YYDEBUG(537, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy538;
- if (yych != 'b') goto yy57;
-yy538:
- YYDEBUG(538, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy539;
- if (yych != 'e') goto yy57;
-yy539:
- YYDEBUG(539, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy540;
- if (yych != 'r') goto yy57;
-yy540:
- YYDEBUG(540, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy532;
- if (yych <= 0x1F) goto yy476;
- goto yy532;
- } else {
- if (yych <= '.') {
- if (yych <= ',') goto yy476;
- goto yy532;
- } else {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- }
- }
-yy541:
- YYDEBUG(541, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych >= ':') goto yy535;
-yy542:
- YYDEBUG(542, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych >= ':') goto yy535;
- YYDEBUG(543, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy535;
-yy544:
- YYDEBUG(544, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy545;
- if (yych != 't') goto yy57;
-yy545:
- YYDEBUG(545, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'N') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'O') goto yy546;
- if (yych != 'o') goto yy476;
- }
- }
-yy546:
- YYDEBUG(546, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy547;
- if (yych != 'b') goto yy57;
-yy547:
- YYDEBUG(547, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy548;
- if (yych != 'e') goto yy57;
-yy548:
- YYDEBUG(548, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy540;
- if (yych == 'r') goto yy540;
- goto yy57;
-yy549:
- YYDEBUG(549, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy553;
- if (yych == 'g') goto yy553;
- goto yy57;
-yy550:
- YYDEBUG(550, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy551;
- if (yych != 'r') goto yy57;
-yy551:
- YYDEBUG(551, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'I') goto yy552;
- if (yych != 'i') goto yy476;
- }
- }
-yy552:
- YYDEBUG(552, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy540;
- if (yych == 'l') goto yy540;
- goto yy57;
-yy553:
- YYDEBUG(553, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'T') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'U') goto yy554;
- if (yych != 'u') goto yy476;
- }
- }
-yy554:
- YYDEBUG(554, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy555;
- if (yych != 's') goto yy57;
-yy555:
- YYDEBUG(555, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy540;
- if (yych == 't') goto yy540;
- goto yy57;
-yy556:
- YYDEBUG(556, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy563;
- if (yych <= 'M') goto yy57;
- goto yy562;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy563;
- } else {
- if (yych == 'n') goto yy562;
- goto yy57;
- }
- }
-yy557:
- YYDEBUG(557, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy558;
- if (yych != 'n') goto yy57;
-yy558:
- YYDEBUG(558, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'T') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'U') goto yy559;
- if (yych != 'u') goto yy476;
- }
- }
-yy559:
- YYDEBUG(559, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy560;
- if (yych != 'a') goto yy57;
-yy560:
- YYDEBUG(560, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy561;
- if (yych != 'r') goto yy57;
-yy561:
- YYDEBUG(561, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy540;
- if (yych == 'y') goto yy540;
- goto yy57;
-yy562:
- YYDEBUG(562, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy540;
- if (yych == 'e') goto yy540;
- goto yy476;
- }
- }
-yy563:
- YYDEBUG(563, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'X') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'Y') goto yy540;
- if (yych == 'y') goto yy540;
- goto yy476;
- }
- }
-yy564:
- YYDEBUG(564, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych == 'I') goto yy540;
- goto yy476;
- }
- }
-yy565:
- YYDEBUG(565, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych != 'I') goto yy476;
- }
- }
- YYDEBUG(566, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych == 'I') goto yy540;
- goto yy476;
- }
- }
-yy567:
- YYDEBUG(567, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '9') {
- if (yych <= '.') goto yy532;
- if (yych <= '/') goto yy476;
- goto yy534;
- } else {
- if (yych == 'I') goto yy540;
- goto yy476;
- }
- }
-yy568:
- YYDEBUG(568, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- goto yy601;
- } else {
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy615;
- if (yych <= ':') goto yy493;
- goto yy491;
- }
-yy569:
- YYDEBUG(569, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- if (yych <= '.') goto yy601;
- goto yy491;
- } else {
- if (yych <= '2') goto yy615;
- if (yych <= '9') goto yy614;
- if (yych <= ':') goto yy493;
- goto yy491;
- }
-yy570:
- YYDEBUG(570, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- goto yy601;
- } else {
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy614;
- if (yych <= ':') goto yy493;
- goto yy491;
- }
-yy571:
- YYDEBUG(571, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- goto yy601;
- } else {
- if (yych == ':') goto yy493;
- goto yy491;
- }
-yy572:
- YYDEBUG(572, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy595;
- if (yych == 'e') goto yy595;
- goto yy57;
-yy573:
- YYDEBUG(573, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy592;
- if (yych == 'a') goto yy592;
- goto yy57;
-yy574:
- YYDEBUG(574, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy550;
- if (yych <= 'T') goto yy57;
- goto yy549;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy550;
- } else {
- if (yych == 'u') goto yy549;
- goto yy57;
- }
- }
-yy575:
- YYDEBUG(575, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy585;
- if (yych == 'e') goto yy585;
- goto yy57;
-yy576:
- YYDEBUG(576, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy579;
- if (yych == 'e') goto yy579;
- goto yy57;
-yy577:
- YYDEBUG(577, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
- yych = *YYCURSOR;
-yy578:
- YYDEBUG(578, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ':
- case '-':
- case '.': goto yy577;
- case 'A':
- case 'a': goto yy574;
- case 'D':
- case 'd': goto yy576;
- case 'F':
- case 'f': goto yy572;
- case 'I': goto yy475;
- case 'J':
- case 'j': goto yy479;
- case 'M':
- case 'm': goto yy573;
- case 'N':
- case 'n': goto yy482;
- case 'O':
- case 'o': goto yy481;
- case 'S':
- case 's': goto yy575;
- case 'V': goto yy477;
- case 'X': goto yy478;
- default: goto yy57;
- }
-yy579:
- YYDEBUG(579, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy580;
- if (yych != 'c') goto yy57;
-yy580:
- YYDEBUG(580, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy581;
- if (yych != 'e') goto yy476;
- }
- }
-yy581:
- YYDEBUG(581, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy582;
- if (yych != 'm') goto yy57;
-yy582:
- YYDEBUG(582, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy583;
- if (yych != 'b') goto yy57;
-yy583:
- YYDEBUG(583, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy584;
- if (yych != 'e') goto yy57;
-yy584:
- YYDEBUG(584, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy540;
- if (yych == 'r') goto yy540;
- goto yy57;
-yy585:
- YYDEBUG(585, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy586;
- if (yych != 'p') goto yy57;
-yy586:
- YYDEBUG(586, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'S') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'T') goto yy587;
- if (yych != 't') goto yy476;
- }
- }
-yy587:
- YYDEBUG(587, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy588;
- if (yych != 'e') goto yy476;
- }
- }
-yy588:
- YYDEBUG(588, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy589;
- if (yych != 'm') goto yy57;
-yy589:
- YYDEBUG(589, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy590;
- if (yych != 'b') goto yy57;
-yy590:
- YYDEBUG(590, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy591;
- if (yych != 'e') goto yy57;
-yy591:
- YYDEBUG(591, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy540;
- if (yych == 'r') goto yy540;
- goto yy57;
-yy592:
- YYDEBUG(592, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy593;
- if (yych <= 'X') goto yy57;
- goto yy540;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- } else {
- if (yych == 'y') goto yy540;
- goto yy57;
- }
- }
-yy593:
- YYDEBUG(593, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'B') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'C') goto yy594;
- if (yych != 'c') goto yy476;
- }
- }
-yy594:
- YYDEBUG(594, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy540;
- if (yych == 'h') goto yy540;
- goto yy57;
-yy595:
- YYDEBUG(595, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy596;
- if (yych != 'b') goto yy57;
-yy596:
- YYDEBUG(596, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- goto yy532;
- }
- } else {
- if (yych <= 'Q') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'R') goto yy597;
- if (yych != 'r') goto yy476;
- }
- }
-yy597:
- YYDEBUG(597, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy598;
- if (yych != 'u') goto yy57;
-yy598:
- YYDEBUG(598, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy599;
- if (yych != 'a') goto yy57;
-yy599:
- YYDEBUG(599, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy600;
- if (yych != 'r') goto yy57;
-yy600:
- YYDEBUG(600, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy540;
- if (yych == 'y') goto yy540;
- goto yy57;
-yy601:
- YYDEBUG(601, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy608;
- if (yych <= '6') goto yy609;
- if (yych <= '9') goto yy610;
- goto yy57;
-yy602:
- YYDEBUG(602, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(603, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy604:
- YYDEBUG(604, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy605:
- YYDEBUG(605, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(606, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(607, *YYCURSOR);
-#line 1345 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("pointed date YYYY");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_FULL_POINTED;
- }
-#line 11029 "ext/date/lib/parse_date.c"
-yy608:
- YYDEBUG(608, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy613;
- goto yy491;
-yy609:
- YYDEBUG(609, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy497;
- goto yy491;
- } else {
- if (yych <= '0') goto yy613;
- if (yych <= '9') goto yy611;
- goto yy491;
- }
-yy610:
- YYDEBUG(610, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych >= ':') goto yy491;
-yy611:
- YYDEBUG(611, *YYCURSOR);
- yyaccept = 12;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy612;
- if (yych <= '9') goto yy605;
-yy612:
- YYDEBUG(612, *YYCURSOR);
-#line 1357 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("pointed date YY");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_FULL_POINTED;
- }
-#line 11077 "ext/date/lib/parse_date.c"
-yy613:
- YYDEBUG(613, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy501;
- if (yych <= 0x1F) goto yy491;
- goto yy501;
- } else {
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- goto yy605;
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy503;
- if (yych <= 'O') goto yy491;
- goto yy503;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy491;
- goto yy503;
- } else {
- if (yych == 'p') goto yy503;
- goto yy491;
- }
- }
- }
-yy614:
- YYDEBUG(614, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy508;
- if (yych <= 0x1F) goto yy491;
- goto yy508;
- } else {
- if (yych == '.') goto yy493;
- if (yych <= '9') goto yy491;
- goto yy493;
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy510;
- if (yych <= 'O') goto yy491;
- goto yy510;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy491;
- goto yy510;
- } else {
- if (yych == 'p') goto yy510;
- goto yy491;
- }
- }
- }
-yy615:
- YYDEBUG(615, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy508;
- if (yych <= 0x1F) goto yy491;
- goto yy508;
- } else {
- if (yych <= '-') {
- if (yych <= ',') goto yy491;
- goto yy602;
- } else {
- if (yych <= '.') goto yy601;
- if (yych <= '9') goto yy491;
- goto yy493;
- }
- }
- } else {
- if (yych <= 'P') {
- if (yych == 'A') goto yy510;
- if (yych <= 'O') goto yy491;
- goto yy510;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy491;
- goto yy510;
- } else {
- if (yych == 'p') goto yy510;
- goto yy491;
- }
- }
- }
-yy616:
- YYDEBUG(616, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy655;
- goto yy602;
- } else {
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy618;
- goto yy57;
- }
-yy617:
- YYDEBUG(617, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy655;
- goto yy602;
- } else {
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
- }
-yy618:
- YYDEBUG(618, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy655;
- if (yych <= '.') goto yy602;
- goto yy57;
-yy619:
- YYDEBUG(619, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy651;
- if (yych <= 'T') goto yy57;
- goto yy650;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy651;
- } else {
- if (yych == 'u') goto yy650;
- goto yy57;
- }
- }
-yy620:
- YYDEBUG(620, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy648;
- if (yych == 'e') goto yy648;
- goto yy57;
-yy621:
- YYDEBUG(621, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy645;
- if (yych == 'a') goto yy645;
- goto yy57;
-yy622:
- YYDEBUG(622, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy642;
- if (yych <= 'T') goto yy57;
- goto yy641;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy642;
- } else {
- if (yych == 'u') goto yy641;
- goto yy57;
- }
- }
-yy623:
- YYDEBUG(623, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy638;
- if (yych == 'e') goto yy638;
- goto yy57;
-yy624:
- YYDEBUG(624, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy636;
- if (yych == 'c') goto yy636;
- goto yy57;
-yy625:
- YYDEBUG(625, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy634;
- if (yych == 'o') goto yy634;
- goto yy57;
-yy626:
- YYDEBUG(626, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy627;
- if (yych != 'e') goto yy57;
-yy627:
- YYDEBUG(627, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy628;
- if (yych != 'c') goto yy57;
-yy628:
- YYDEBUG(628, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych >= '.') goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy581;
- if (yych == 'e') goto yy581;
- goto yy476;
- }
- }
-yy629:
- YYDEBUG(629, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy533;
- if (yych <= '0') goto yy630;
- if (yych <= '2') goto yy631;
- if (yych <= '3') goto yy632;
- goto yy533;
-yy630:
- YYDEBUG(630, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych <= '9') goto yy633;
- goto yy535;
-yy631:
- YYDEBUG(631, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych <= '9') goto yy633;
- goto yy535;
-yy632:
- YYDEBUG(632, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych <= '1') goto yy633;
- if (yych <= '9') goto yy541;
- goto yy535;
-yy633:
- YYDEBUG(633, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy535;
- if (yych <= '9') goto yy542;
- goto yy535;
-yy634:
- YYDEBUG(634, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy635;
- if (yych != 'v') goto yy57;
-yy635:
- YYDEBUG(635, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy536;
- if (yych == 'e') goto yy536;
- goto yy476;
- }
- }
-yy636:
- YYDEBUG(636, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy637;
- if (yych != 't') goto yy57;
-yy637:
- YYDEBUG(637, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'N') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'O') goto yy546;
- if (yych == 'o') goto yy546;
- goto yy476;
- }
- }
-yy638:
- YYDEBUG(638, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy639;
- if (yych != 'p') goto yy57;
-yy639:
- YYDEBUG(639, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'S') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'T') goto yy640;
- if (yych != 't') goto yy476;
- }
- }
-yy640:
- YYDEBUG(640, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy588;
- if (yych == 'e') goto yy588;
- goto yy476;
- }
- }
-yy641:
- YYDEBUG(641, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy644;
- if (yych == 'g') goto yy644;
- goto yy57;
-yy642:
- YYDEBUG(642, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy643;
- if (yych != 'r') goto yy57;
-yy643:
- YYDEBUG(643, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'H') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'I') goto yy552;
- if (yych == 'i') goto yy552;
- goto yy476;
- }
- }
-yy644:
- YYDEBUG(644, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'T') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'U') goto yy554;
- if (yych == 'u') goto yy554;
- goto yy476;
- }
- }
-yy645:
- YYDEBUG(645, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy646;
- if (yych <= 'X') goto yy57;
- goto yy647;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- } else {
- if (yych == 'y') goto yy647;
- goto yy57;
- }
- }
-yy646:
- YYDEBUG(646, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'B') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'C') goto yy594;
- if (yych == 'c') goto yy594;
- goto yy476;
- }
- }
-yy647:
- YYDEBUG(647, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy476;
- goto yy532;
- } else {
- if (yych == ' ') goto yy532;
- goto yy476;
- }
- } else {
- if (yych <= '.') {
- if (yych <= '-') goto yy629;
- goto yy532;
- } else {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- }
- }
-yy648:
- YYDEBUG(648, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy649;
- if (yych != 'b') goto yy57;
-yy649:
- YYDEBUG(649, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'Q') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'R') goto yy597;
- if (yych == 'r') goto yy597;
- goto yy476;
- }
- }
-yy650:
- YYDEBUG(650, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy654;
- if (yych <= 'M') goto yy57;
- goto yy653;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy654;
- } else {
- if (yych == 'n') goto yy653;
- goto yy57;
- }
- }
-yy651:
- YYDEBUG(651, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy652;
- if (yych != 'n') goto yy57;
-yy652:
- YYDEBUG(652, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'T') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'U') goto yy559;
- if (yych == 'u') goto yy559;
- goto yy476;
- }
- }
-yy653:
- YYDEBUG(653, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'D') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'E') goto yy540;
- if (yych == 'e') goto yy540;
- goto yy476;
- }
- }
-yy654:
- YYDEBUG(654, *YYCURSOR);
- yyaccept = 10;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy532;
- goto yy476;
- } else {
- if (yych <= ' ') goto yy532;
- if (yych <= ',') goto yy476;
- if (yych <= '-') goto yy629;
- goto yy532;
- }
- } else {
- if (yych <= 'X') {
- if (yych <= '/') goto yy476;
- if (yych <= '9') goto yy534;
- goto yy476;
- } else {
- if (yych <= 'Y') goto yy540;
- if (yych == 'y') goto yy540;
- goto yy476;
- }
- }
-yy655:
- YYDEBUG(655, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy656;
- if (yych <= '3') goto yy658;
- if (yych <= '9') goto yy659;
- goto yy57;
-yy656:
- YYDEBUG(656, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy665;
- if (yych >= 'n') goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych >= 'r') goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- }
- }
-yy657:
- YYDEBUG(657, *YYCURSOR);
-#line 1318 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("gnudateshort");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_ISO_DATE;
- }
-#line 11730 "ext/date/lib/parse_date.c"
-yy658:
- YYDEBUG(658, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '1') {
- if (yych <= '/') goto yy657;
- goto yy665;
- } else {
- if (yych <= '9') goto yy604;
- if (yych <= 'm') goto yy657;
- goto yy661;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy659:
- YYDEBUG(659, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy604;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy660:
- YYDEBUG(660, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 't') goto yy664;
- goto yy57;
-yy661:
- YYDEBUG(661, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy664;
- goto yy57;
-yy662:
- YYDEBUG(662, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy664;
- goto yy57;
-yy663:
- YYDEBUG(663, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != 'h') goto yy57;
-yy664:
- YYDEBUG(664, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy657;
-yy665:
- YYDEBUG(665, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy605;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy666:
- YYDEBUG(666, *YYCURSOR);
- yyaccept = 14;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') {
- if (yych >= '/') goto yy723;
- } else {
- if (yych <= '9') goto yy669;
- if (yych >= 'n') goto yy720;
- }
- } else {
- if (yych <= 'r') {
- if (yych >= 'r') goto yy721;
- } else {
- if (yych <= 's') goto yy719;
- if (yych <= 't') goto yy722;
- }
- }
-yy667:
- YYDEBUG(667, *YYCURSOR);
-#line 1265 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("americanshort | american");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == '/') {
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
- }
- TIMELIB_DEINIT;
- return TIMELIB_AMERICAN;
- }
-#line 11850 "ext/date/lib/parse_date.c"
-yy668:
- YYDEBUG(668, *YYCURSOR);
- yyaccept = 14;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') {
- if (yych <= '.') goto yy667;
- goto yy723;
- } else {
- if (yych <= '1') goto yy669;
- if (yych <= 'm') goto yy667;
- goto yy720;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy667;
- goto yy721;
- } else {
- if (yych <= 's') goto yy719;
- if (yych <= 't') goto yy722;
- goto yy667;
- }
- }
-yy669:
- YYDEBUG(669, *YYCURSOR);
- yyaccept = 14;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych == '/') goto yy723;
- if (yych <= 'm') goto yy667;
- goto yy720;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy667;
- goto yy721;
- } else {
- if (yych <= 's') goto yy719;
- if (yych <= 't') goto yy722;
- goto yy667;
- }
- }
-yy670:
- YYDEBUG(670, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy718;
- if (yych <= 'T') goto yy57;
- goto yy717;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy718;
- } else {
- if (yych == 'u') goto yy717;
- goto yy57;
- }
- }
-yy671:
- YYDEBUG(671, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy716;
- if (yych == 'e') goto yy716;
- goto yy57;
-yy672:
- YYDEBUG(672, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy715;
- if (yych == 'a') goto yy715;
- goto yy57;
-yy673:
- YYDEBUG(673, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy714;
- if (yych <= 'T') goto yy57;
- goto yy713;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy714;
- } else {
- if (yych == 'u') goto yy713;
- goto yy57;
- }
- }
-yy674:
- YYDEBUG(674, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy711;
- if (yych == 'e') goto yy711;
- goto yy57;
-yy675:
- YYDEBUG(675, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy710;
- if (yych == 'c') goto yy710;
- goto yy57;
-yy676:
- YYDEBUG(676, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy709;
- if (yych == 'o') goto yy709;
- goto yy57;
-yy677:
- YYDEBUG(677, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy678;
- if (yych != 'e') goto yy57;
-yy678:
- YYDEBUG(678, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy679;
- if (yych != 'c') goto yy57;
-yy679:
- YYDEBUG(679, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '/') goto yy57;
-yy680:
- YYDEBUG(680, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(681, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(682, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(683, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(684, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(685, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy686;
- if (yych <= '2') goto yy687;
- goto yy57;
-yy686:
- YYDEBUG(686, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy688;
- goto yy57;
-yy687:
- YYDEBUG(687, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '5') goto yy57;
-yy688:
- YYDEBUG(688, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(689, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '6') goto yy57;
- YYDEBUG(690, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(691, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(692, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy693;
- if (yych <= '6') goto yy694;
- goto yy57;
-yy693:
- YYDEBUG(693, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy695;
- goto yy57;
-yy694:
- YYDEBUG(694, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '0') goto yy57;
-yy695:
- YYDEBUG(695, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\t') goto yy696;
- if (yych != ' ') goto yy57;
-yy696:
- YYDEBUG(696, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
- YYDEBUG(697, *YYCURSOR);
- if (yych <= '*') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy696;
- } else {
- if (yych == ' ') goto yy696;
- goto yy57;
- }
- } else {
- if (yych <= '-') {
- if (yych == ',') goto yy57;
- goto yy699;
- } else {
- if (yych != 'G') goto yy57;
- }
- }
- YYDEBUG(698, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy707;
- goto yy57;
-yy699:
- YYDEBUG(699, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy700;
- if (yych <= '2') goto yy702;
- if (yych <= '9') goto yy703;
- goto yy57;
-yy700:
- YYDEBUG(700, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '/') goto yy701;
- if (yych <= '9') goto yy703;
- if (yych <= ':') goto yy704;
-yy701:
- YYDEBUG(701, *YYCURSOR);
-#line 1536 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("clf");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- TIMELIB_HAVE_DATE();
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = timelib_get_nr((char **) &ptr, 2);
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- TIMELIB_DEINIT;
- return TIMELIB_CLF;
- }
-#line 12103 "ext/date/lib/parse_date.c"
-yy702:
- YYDEBUG(702, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy701;
- if (yych >= '5') goto yy705;
- } else {
- if (yych <= '9') goto yy706;
- if (yych <= ':') goto yy704;
- goto yy701;
- }
-yy703:
- YYDEBUG(703, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy701;
- if (yych <= '5') goto yy705;
- if (yych <= '9') goto yy706;
- if (yych >= ';') goto yy701;
-yy704:
- YYDEBUG(704, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy701;
- if (yych <= '5') goto yy705;
- if (yych <= '9') goto yy706;
- goto yy701;
-yy705:
- YYDEBUG(705, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy701;
- if (yych >= ':') goto yy701;
-yy706:
- YYDEBUG(706, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy701;
-yy707:
- YYDEBUG(707, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != 'T') goto yy57;
- YYDEBUG(708, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '+') goto yy699;
- if (yych == '-') goto yy699;
- goto yy57;
-yy709:
- YYDEBUG(709, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy679;
- if (yych == 'v') goto yy679;
- goto yy57;
-yy710:
- YYDEBUG(710, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy679;
- if (yych == 't') goto yy679;
- goto yy57;
-yy711:
- YYDEBUG(711, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy712;
- if (yych != 'p') goto yy57;
-yy712:
- YYDEBUG(712, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych == '/') goto yy680;
- goto yy57;
- } else {
- if (yych <= 'T') goto yy679;
- if (yych == 't') goto yy679;
- goto yy57;
- }
-yy713:
- YYDEBUG(713, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy679;
- if (yych == 'g') goto yy679;
- goto yy57;
-yy714:
- YYDEBUG(714, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy679;
- if (yych == 'r') goto yy679;
- goto yy57;
-yy715:
- YYDEBUG(715, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy679;
- if (yych <= 'X') goto yy57;
- goto yy679;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- goto yy679;
- } else {
- if (yych == 'y') goto yy679;
- goto yy57;
- }
- }
-yy716:
- YYDEBUG(716, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy679;
- if (yych == 'b') goto yy679;
- goto yy57;
-yy717:
- YYDEBUG(717, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy679;
- if (yych <= 'M') goto yy57;
- goto yy679;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy679;
- } else {
- if (yych == 'n') goto yy679;
- goto yy57;
- }
- }
-yy718:
- YYDEBUG(718, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy679;
- if (yych == 'n') goto yy679;
- goto yy57;
-yy719:
- YYDEBUG(719, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 't') goto yy728;
- goto yy57;
-yy720:
- YYDEBUG(720, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy728;
- goto yy57;
-yy721:
- YYDEBUG(721, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy728;
- goto yy57;
-yy722:
- YYDEBUG(722, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'h') goto yy728;
- goto yy57;
-yy723:
- YYDEBUG(723, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(724, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy667;
- if (yych >= ':') goto yy667;
- YYDEBUG(725, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy667;
- if (yych >= ':') goto yy667;
- YYDEBUG(726, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy667;
- if (yych >= ':') goto yy667;
- YYDEBUG(727, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy667;
-yy728:
- YYDEBUG(728, *YYCURSOR);
- yyaccept = 14;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '/') goto yy723;
- goto yy667;
-yy729:
- YYDEBUG(729, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych == '\t') goto yy731;
- goto yy578;
- } else {
- if (yych <= '-') goto yy732;
- if (yych <= '.') goto yy731;
- if (yych >= '0') goto yy578;
- }
-yy730:
- YYDEBUG(730, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case 'A':
- case 'a': goto yy673;
- case 'D':
- case 'd': goto yy677;
- case 'F':
- case 'f': goto yy671;
- case 'J':
- case 'j': goto yy670;
- case 'M':
- case 'm': goto yy672;
- case 'N':
- case 'n': goto yy676;
- case 'O':
- case 'o': goto yy675;
- case 'S':
- case 's': goto yy674;
- default: goto yy57;
- }
-yy731:
- YYDEBUG(731, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy578;
- if (yych <= '0') goto yy736;
- if (yych <= '1') goto yy737;
- if (yych <= '9') goto yy738;
- goto yy578;
-yy732:
- YYDEBUG(732, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy578;
- if (yych <= '0') goto yy733;
- if (yych <= '1') goto yy734;
- if (yych <= '9') goto yy735;
- goto yy578;
-yy733:
- YYDEBUG(733, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '.') goto yy602;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy735;
- goto yy57;
-yy734:
- YYDEBUG(734, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '.') goto yy602;
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
-yy735:
- YYDEBUG(735, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '.') goto yy602;
- goto yy57;
-yy736:
- YYDEBUG(736, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy602;
- goto yy739;
- } else {
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy738;
- goto yy57;
- }
-yy737:
- YYDEBUG(737, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy602;
- goto yy739;
- } else {
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
- }
-yy738:
- YYDEBUG(738, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy602;
- if (yych >= '/') goto yy57;
-yy739:
- YYDEBUG(739, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(740, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy611;
- goto yy57;
-yy741:
- YYDEBUG(741, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy785;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy783;
- goto yy61;
-yy742:
- YYDEBUG(742, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0': goto yy751;
- case '1': goto yy752;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy753;
- case 'A':
- case 'a': goto yy746;
- case 'D':
- case 'd': goto yy750;
- case 'F':
- case 'f': goto yy744;
- case 'J':
- case 'j': goto yy743;
- case 'M':
- case 'm': goto yy745;
- case 'N':
- case 'n': goto yy749;
- case 'O':
- case 'o': goto yy748;
- case 'S':
- case 's': goto yy747;
- default: goto yy57;
- }
-yy743:
- YYDEBUG(743, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy782;
- if (yych <= 'T') goto yy57;
- goto yy781;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy782;
- } else {
- if (yych == 'u') goto yy781;
- goto yy57;
- }
- }
-yy744:
- YYDEBUG(744, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy780;
- if (yych == 'e') goto yy780;
- goto yy57;
-yy745:
- YYDEBUG(745, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy779;
- if (yych == 'a') goto yy779;
- goto yy57;
-yy746:
- YYDEBUG(746, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy778;
- if (yych <= 'T') goto yy57;
- goto yy777;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy778;
- } else {
- if (yych == 'u') goto yy777;
- goto yy57;
- }
- }
-yy747:
- YYDEBUG(747, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy775;
- if (yych == 'e') goto yy775;
- goto yy57;
-yy748:
- YYDEBUG(748, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy774;
- if (yych == 'c') goto yy774;
- goto yy57;
-yy749:
- YYDEBUG(749, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy773;
- if (yych == 'o') goto yy773;
- goto yy57;
-yy750:
- YYDEBUG(750, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy765;
- if (yych == 'e') goto yy765;
- goto yy57;
-yy751:
- YYDEBUG(751, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy754;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy758;
- goto yy57;
-yy752:
- YYDEBUG(752, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy754;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy758;
- goto yy57;
-yy753:
- YYDEBUG(753, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '-') goto yy57;
-yy754:
- YYDEBUG(754, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy755;
- if (yych <= '3') goto yy756;
- if (yych <= '9') goto yy757;
- goto yy57;
-yy755:
- YYDEBUG(755, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy757;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy756:
- YYDEBUG(756, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '1') goto yy757;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy757:
- YYDEBUG(757, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'q') {
- if (yych == 'n') goto yy661;
- goto yy657;
- } else {
- if (yych <= 'r') goto yy662;
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
-yy758:
- YYDEBUG(758, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '-') goto yy57;
- YYDEBUG(759, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych >= '1') goto yy761;
- } else {
- if (yych <= '3') goto yy762;
- if (yych <= '9') goto yy757;
- goto yy57;
- }
- YYDEBUG(760, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy763;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy761:
- YYDEBUG(761, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy763;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy762:
- YYDEBUG(762, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '1') goto yy763;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy763:
- YYDEBUG(763, *YYCURSOR);
- yyaccept = 15;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'q') {
- if (yych == 'n') goto yy661;
- } else {
- if (yych <= 'r') goto yy662;
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- }
-yy764:
- YYDEBUG(764, *YYCURSOR);
-#line 1292 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("iso8601date2");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_ISO_DATE;
- }
-#line 12667 "ext/date/lib/parse_date.c"
-yy765:
- YYDEBUG(765, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy766;
- if (yych != 'c') goto yy57;
-yy766:
- YYDEBUG(766, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '-') goto yy57;
-yy767:
- YYDEBUG(767, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy768;
- if (yych <= '2') goto yy769;
- if (yych <= '3') goto yy770;
- goto yy57;
-yy768:
- YYDEBUG(768, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy771;
- goto yy57;
-yy769:
- YYDEBUG(769, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy771;
- goto yy57;
-yy770:
- YYDEBUG(770, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '2') goto yy57;
-yy771:
- YYDEBUG(771, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(772, *YYCURSOR);
-#line 1523 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("pgtextreverse");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_PG_TEXT;
- }
-#line 12718 "ext/date/lib/parse_date.c"
-yy773:
- YYDEBUG(773, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy766;
- if (yych == 'v') goto yy766;
- goto yy57;
-yy774:
- YYDEBUG(774, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy766;
- if (yych == 't') goto yy766;
- goto yy57;
-yy775:
- YYDEBUG(775, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy776;
- if (yych != 'p') goto yy57;
-yy776:
- YYDEBUG(776, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych == '-') goto yy767;
- goto yy57;
- } else {
- if (yych <= 'T') goto yy766;
- if (yych == 't') goto yy766;
- goto yy57;
- }
-yy777:
- YYDEBUG(777, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy766;
- if (yych == 'g') goto yy766;
- goto yy57;
-yy778:
- YYDEBUG(778, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy766;
- if (yych == 'r') goto yy766;
- goto yy57;
-yy779:
- YYDEBUG(779, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy766;
- if (yych <= 'X') goto yy57;
- goto yy766;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- goto yy766;
- } else {
- if (yych == 'y') goto yy766;
- goto yy57;
- }
- }
-yy780:
- YYDEBUG(780, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy766;
- if (yych == 'b') goto yy766;
- goto yy57;
-yy781:
- YYDEBUG(781, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy766;
- if (yych <= 'M') goto yy57;
- goto yy766;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy766;
- } else {
- if (yych == 'n') goto yy766;
- goto yy57;
- }
- }
-yy782:
- YYDEBUG(782, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy766;
- if (yych == 'n') goto yy766;
- goto yy57;
-yy783:
- YYDEBUG(783, *YYCURSOR);
- yyaccept = 16;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'S':
- case 'T':
- case 'V':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'n':
- case 'o':
- case 's':
- case 't':
- case 'w':
- case 'y': goto yy791;
- case '-': goto yy788;
- case '.': goto yy792;
- case '/': goto yy789;
- case '0': goto yy805;
- case '1': goto yy806;
- case '2': goto yy808;
- case '3': goto yy809;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy55;
- case ':': goto yy807;
- case 'W': goto yy810;
- default: goto yy784;
- }
-yy784:
- YYDEBUG(784, *YYCURSOR);
-#line 1557 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("year4");
- TIMELIB_INIT;
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_DEINIT;
- return TIMELIB_CLF;
- }
-#line 12864 "ext/date/lib/parse_date.c"
-yy785:
- YYDEBUG(785, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0': goto yy786;
- case '1': goto yy787;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy753;
- case 'A':
- case 'a': goto yy746;
- case 'D':
- case 'd': goto yy750;
- case 'F':
- case 'f': goto yy744;
- case 'J':
- case 'j': goto yy743;
- case 'M':
- case 'm': goto yy745;
- case 'N':
- case 'n': goto yy749;
- case 'O':
- case 'o': goto yy748;
- case 'S':
- case 's': goto yy747;
- default: goto yy57;
- }
-yy786:
- YYDEBUG(786, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy754;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy753;
- goto yy57;
-yy787:
- YYDEBUG(787, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy754;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy753;
- goto yy57;
-yy788:
- YYDEBUG(788, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0': goto yy973;
- case '1': goto yy975;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy976;
- case 'A':
- case 'a': goto yy967;
- case 'D':
- case 'd': goto yy971;
- case 'F':
- case 'f': goto yy965;
- case 'J':
- case 'j': goto yy964;
- case 'M':
- case 'm': goto yy966;
- case 'N':
- case 'n': goto yy970;
- case 'O':
- case 'o': goto yy969;
- case 'S':
- case 's': goto yy968;
- case 'W': goto yy972;
- default: goto yy939;
- }
-yy789:
- YYDEBUG(789, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy947;
- if (yych <= '1') goto yy948;
- if (yych <= '9') goto yy949;
- goto yy57;
-yy790:
- YYDEBUG(790, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
- yych = *YYCURSOR;
-yy791:
- YYDEBUG(791, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ': goto yy790;
- case '-':
- case '.': goto yy938;
- case 'A':
- case 'a': goto yy800;
- case 'D':
- case 'd': goto yy804;
- case 'F':
- case 'f': goto yy798;
- case 'H':
- case 'h': goto yy64;
- case 'I': goto yy793;
- case 'J':
- case 'j': goto yy797;
- case 'M':
- case 'm': goto yy799;
- case 'N':
- case 'n': goto yy803;
- case 'O':
- case 'o': goto yy802;
- case 'S':
- case 's': goto yy801;
- case 'T':
- case 't': goto yy69;
- case 'V': goto yy795;
- case 'W':
- case 'w': goto yy68;
- case 'X': goto yy796;
- case 'Y':
- case 'y': goto yy67;
- default: goto yy57;
- }
-yy792:
- YYDEBUG(792, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy939;
- if (yych <= '0') goto yy931;
- if (yych <= '2') goto yy932;
- if (yych <= '3') goto yy933;
- goto yy939;
-yy793:
- YYDEBUG(793, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= 'U') {
- if (yych == 'I') goto yy930;
- } else {
- if (yych == 'W') goto yy794;
- if (yych <= 'X') goto yy884;
- }
-yy794:
- YYDEBUG(794, *YYCURSOR);
-#line 1383 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datenodayrev");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_month((char **) &ptr);
- s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_NO_DAY;
- }
-#line 13027 "ext/date/lib/parse_date.c"
-yy795:
- YYDEBUG(795, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy928;
- goto yy794;
-yy796:
- YYDEBUG(796, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy927;
- goto yy794;
-yy797:
- YYDEBUG(797, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy920;
- if (yych <= 'T') goto yy57;
- goto yy919;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy920;
- } else {
- if (yych == 'u') goto yy919;
- goto yy57;
- }
- }
-yy798:
- YYDEBUG(798, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= 'N') {
- if (yych == 'E') goto yy913;
- goto yy57;
- } else {
- if (yych <= 'O') goto yy99;
- if (yych <= 'Q') goto yy57;
- goto yy98;
- }
- } else {
- if (yych <= 'n') {
- if (yych == 'e') goto yy913;
- goto yy57;
- } else {
- if (yych <= 'o') goto yy99;
- if (yych == 'r') goto yy98;
- goto yy57;
- }
- }
-yy799:
- YYDEBUG(799, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= 'H') {
- if (yych == 'A') goto yy910;
- goto yy57;
- } else {
- if (yych <= 'I') goto yy118;
- if (yych <= 'N') goto yy57;
- goto yy117;
- }
- } else {
- if (yych <= 'h') {
- if (yych == 'a') goto yy910;
- goto yy57;
- } else {
- if (yych <= 'i') goto yy118;
- if (yych == 'o') goto yy117;
- goto yy57;
- }
- }
-yy800:
- YYDEBUG(800, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy904;
- if (yych <= 'T') goto yy57;
- goto yy903;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy904;
- } else {
- if (yych == 'u') goto yy903;
- goto yy57;
- }
- }
-yy801:
- YYDEBUG(801, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych == 'A') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'E') goto yy896;
- if (yych <= 'T') goto yy57;
- goto yy126;
- }
- } else {
- if (yych <= 'd') {
- if (yych == 'a') goto yy127;
- goto yy57;
- } else {
- if (yych <= 'e') goto yy896;
- if (yych == 'u') goto yy126;
- goto yy57;
- }
- }
-yy802:
- YYDEBUG(802, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy891;
- if (yych == 'c') goto yy891;
- goto yy57;
-yy803:
- YYDEBUG(803, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy885;
- if (yych == 'o') goto yy885;
- goto yy57;
-yy804:
- YYDEBUG(804, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych == 'A') goto yy114;
- if (yych <= 'D') goto yy57;
- goto yy878;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy114;
- } else {
- if (yych == 'e') goto yy878;
- goto yy57;
- }
- }
-yy805:
- YYDEBUG(805, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '0') goto yy875;
- if (yych <= '9') goto yy876;
- goto yy61;
-yy806:
- YYDEBUG(806, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '2') goto yy844;
- if (yych <= '9') goto yy823;
- goto yy61;
-yy807:
- YYDEBUG(807, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy824;
- if (yych <= '1') goto yy825;
- goto yy57;
-yy808:
- YYDEBUG(808, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy823;
- goto yy61;
-yy809:
- YYDEBUG(809, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '5') goto yy819;
- if (yych <= '6') goto yy820;
- if (yych <= '9') goto yy55;
- goto yy61;
-yy810:
- YYDEBUG(810, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy811;
- if (yych <= '4') goto yy812;
- goto yy813;
- } else {
- if (yych <= 'E') {
- if (yych <= 'D') goto yy57;
- goto yy83;
- } else {
- if (yych == 'e') goto yy83;
- goto yy57;
- }
- }
-yy811:
- YYDEBUG(811, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '0') goto yy57;
- if (yych <= '9') goto yy814;
- goto yy57;
-yy812:
- YYDEBUG(812, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy814;
- goto yy57;
-yy813:
- YYDEBUG(813, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '4') goto yy57;
-yy814:
- YYDEBUG(814, *YYCURSOR);
- yyaccept = 17;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '-') goto yy816;
- if (yych <= '/') goto yy815;
- if (yych <= '7') goto yy817;
-yy815:
- YYDEBUG(815, *YYCURSOR);
-#line 1491 "ext/date/lib/parse_date.re"
- {
- timelib_sll w, d;
- DEBUG_OUTPUT("isoweek");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- TIMELIB_HAVE_RELATIVE();
-
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- w = timelib_get_nr((char **) &ptr, 2);
- d = 1;
- s->time->m = 1;
- s->time->d = 1;
- s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
-
- TIMELIB_DEINIT;
- return TIMELIB_ISO_WEEK;
- }
-#line 13260 "ext/date/lib/parse_date.c"
-yy816:
- YYDEBUG(816, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '8') goto yy57;
-yy817:
- YYDEBUG(817, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(818, *YYCURSOR);
-#line 1472 "ext/date/lib/parse_date.re"
- {
- timelib_sll w, d;
- DEBUG_OUTPUT("isoweekday");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- TIMELIB_HAVE_RELATIVE();
-
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- w = timelib_get_nr((char **) &ptr, 2);
- d = timelib_get_nr((char **) &ptr, 1);
- s->time->m = 1;
- s->time->d = 1;
- s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
-
- TIMELIB_DEINIT;
- return TIMELIB_ISO_WEEK;
- }
-#line 13288 "ext/date/lib/parse_date.c"
-yy819:
- YYDEBUG(819, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy821;
- goto yy61;
-yy820:
- YYDEBUG(820, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '6') goto yy821;
- if (yych <= '9') goto yy55;
- goto yy61;
-yy821:
- YYDEBUG(821, *YYCURSOR);
- yyaccept = 18;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych >= ' ') goto yy61;
- } else {
- if (yych == 'D') goto yy61;
- if (yych >= 'F') goto yy61;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy61;
- if (yych >= 'M') goto yy61;
- } else {
- if (yych <= 'R') goto yy822;
- if (yych <= 'T') goto yy61;
- if (yych >= 'W') goto yy61;
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy61;
- if (yych >= 'd') goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- if (yych >= 'h') goto yy61;
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych >= 's') goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych >= 'w') goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- }
- }
- }
- }
-yy822:
- YYDEBUG(822, *YYCURSOR);
-#line 1459 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("pgydotd");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->d = timelib_get_nr((char **) &ptr, 3);
- s->time->m = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_PG_YEARDAY;
- }
-#line 13364 "ext/date/lib/parse_date.c"
-yy823:
- YYDEBUG(823, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy821;
- goto yy61;
-yy824:
- YYDEBUG(824, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy826;
- goto yy57;
-yy825:
- YYDEBUG(825, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
-yy826:
- YYDEBUG(826, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(827, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy828;
- if (yych <= '2') goto yy829;
- if (yych <= '3') goto yy830;
- goto yy57;
-yy828:
- YYDEBUG(828, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy831;
- goto yy57;
-yy829:
- YYDEBUG(829, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy831;
- goto yy57;
-yy830:
- YYDEBUG(830, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '2') goto yy57;
-yy831:
- YYDEBUG(831, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ' ') goto yy57;
- YYDEBUG(832, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy833;
- if (yych <= '2') goto yy834;
- goto yy57;
-yy833:
- YYDEBUG(833, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy835;
- goto yy57;
-yy834:
- YYDEBUG(834, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '5') goto yy57;
-yy835:
- YYDEBUG(835, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(836, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '6') goto yy57;
- YYDEBUG(837, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(838, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(839, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy840;
- if (yych <= '6') goto yy841;
- goto yy57;
-yy840:
- YYDEBUG(840, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy841:
- YYDEBUG(841, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '0') goto yy57;
-yy842:
- YYDEBUG(842, *YYCURSOR);
- ++YYCURSOR;
-yy843:
- YYDEBUG(843, *YYCURSOR);
-#line 1433 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
- if (*ptr) { /* timezone is optional */
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_XMLRPC_SOAP;
- }
-#line 13492 "ext/date/lib/parse_date.c"
-yy844:
- YYDEBUG(844, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy61;
- if (yych >= '1') goto yy846;
- } else {
- if (yych <= '3') goto yy847;
- if (yych <= '9') goto yy821;
- goto yy61;
- }
-yy845:
- YYDEBUG(845, *YYCURSOR);
- yyaccept = 18;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy822;
- goto yy61;
- } else {
- if (yych <= '/') goto yy822;
- if (yych <= '9') goto yy848;
- if (yych <= 'C') goto yy822;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy822;
- if (yych <= 'T') goto yy61;
- goto yy822;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy822;
- if (yych <= 'Y') goto yy61;
- goto yy822;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy822;
- } else {
- if (yych == 'g') goto yy822;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy822;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy822;
- }
- }
- }
- }
-yy846:
- YYDEBUG(846, *YYCURSOR);
- yyaccept = 18;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy822;
- goto yy61;
- } else {
- if (yych <= '/') goto yy822;
- if (yych <= '9') goto yy848;
- if (yych <= 'C') goto yy822;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy822;
- if (yych <= 'T') goto yy61;
- goto yy822;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy822;
- if (yych <= 'Y') goto yy61;
- goto yy822;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy822;
- } else {
- if (yych == 'g') goto yy822;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy822;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy822;
- }
- }
- }
- }
-yy847:
- YYDEBUG(847, *YYCURSOR);
- yyaccept = 18;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy822;
- goto yy61;
- } else {
- if (yych <= '1') {
- if (yych <= '/') goto yy822;
- } else {
- if (yych <= '9') goto yy55;
- if (yych <= 'C') goto yy822;
- goto yy61;
- }
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy822;
- if (yych <= 'T') goto yy61;
- goto yy822;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy822;
- if (yych <= 'Y') goto yy61;
- goto yy822;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy822;
- } else {
- if (yych == 'g') goto yy822;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy822;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy822;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy822;
- }
- }
- }
- }
-yy848:
- YYDEBUG(848, *YYCURSOR);
- yyaccept = 19;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy60;
- if (yych >= ' ') goto yy60;
- } else {
- if (yych == 'D') goto yy65;
- if (yych >= 'F') goto yy66;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy64;
- if (yych >= 'M') goto yy63;
- } else {
- if (yych <= 'S') {
- if (yych >= 'S') goto yy62;
- } else {
- if (yych <= 'T') goto yy850;
- if (yych >= 'W') goto yy68;
- }
- }
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy67;
- if (yych >= 'd') goto yy65;
- } else {
- if (yych <= 'f') {
- if (yych >= 'f') goto yy66;
- } else {
- if (yych == 'h') goto yy64;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'm') goto yy63;
- if (yych <= 'r') goto yy849;
- if (yych <= 's') goto yy62;
- goto yy851;
- } else {
- if (yych <= 'w') {
- if (yych >= 'w') goto yy68;
- } else {
- if (yych == 'y') goto yy67;
- }
- }
- }
- }
-yy849:
- YYDEBUG(849, *YYCURSOR);
-#line 1421 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("datenocolon");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_DEINIT;
- return TIMELIB_DATE_NOCOLON;
- }
-#line 13765 "ext/date/lib/parse_date.c"
-yy850:
- YYDEBUG(850, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy865;
- goto yy866;
- } else {
- if (yych <= '9') goto yy867;
- if (yych <= 'G') goto yy57;
- goto yy70;
- }
- } else {
- if (yych <= 'g') {
- if (yych == 'U') goto yy71;
- goto yy57;
- } else {
- if (yych <= 'h') goto yy70;
- if (yych == 'u') goto yy71;
- goto yy57;
- }
- }
-yy851:
- YYDEBUG(851, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych >= '2') goto yy853;
- } else {
- if (yych <= '9') goto yy854;
- if (yych <= 'G') goto yy57;
- goto yy70;
- }
- } else {
- if (yych <= 'g') {
- if (yych == 'U') goto yy71;
- goto yy57;
- } else {
- if (yych <= 'h') goto yy70;
- if (yych == 'u') goto yy71;
- goto yy57;
- }
- }
- YYDEBUG(852, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy859;
- if (yych <= '9') goto yy854;
- goto yy57;
-yy853:
- YYDEBUG(853, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '4') goto yy859;
- if (yych <= '5') goto yy855;
- goto yy57;
-yy854:
- YYDEBUG(854, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '6') goto yy57;
-yy855:
- YYDEBUG(855, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy856:
- YYDEBUG(856, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy857;
- if (yych <= '6') goto yy858;
- goto yy57;
-yy857:
- YYDEBUG(857, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy858:
- YYDEBUG(858, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '0') goto yy842;
- goto yy57;
-yy859:
- YYDEBUG(859, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy860;
- if (yych <= '9') goto yy856;
- goto yy57;
-yy860:
- YYDEBUG(860, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy861;
- if (yych <= '6') goto yy862;
- if (yych <= '9') goto yy856;
- goto yy57;
-yy861:
- YYDEBUG(861, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy863;
- if (yych <= '6') goto yy864;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy862:
- YYDEBUG(862, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy863;
- if (yych <= '5') goto yy857;
- if (yych <= '6') goto yy858;
- goto yy57;
-yy863:
- YYDEBUG(863, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '9') goto yy842;
- goto yy843;
-yy864:
- YYDEBUG(864, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '0') goto yy842;
- goto yy843;
-yy865:
- YYDEBUG(865, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy874;
- if (yych <= '9') goto yy867;
- if (yych <= ':') goto yy868;
- goto yy57;
-yy866:
- YYDEBUG(866, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy57;
- if (yych <= '4') goto yy874;
- goto yy855;
- } else {
- if (yych == ':') goto yy868;
- goto yy57;
- }
-yy867:
- YYDEBUG(867, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy855;
- if (yych != ':') goto yy57;
-yy868:
- YYDEBUG(868, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= '6') goto yy57;
- YYDEBUG(869, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(870, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(871, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy872;
- if (yych <= '6') goto yy873;
- goto yy57;
-yy872:
- YYDEBUG(872, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy873:
- YYDEBUG(873, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '0') goto yy842;
- goto yy57;
-yy874:
- YYDEBUG(874, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy860;
- if (yych <= '9') goto yy856;
- if (yych <= ':') goto yy868;
- goto yy57;
-yy875:
- YYDEBUG(875, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy61;
- if (yych <= '0') goto yy877;
- goto yy846;
- } else {
- if (yych <= '3') goto yy847;
- if (yych <= '9') goto yy821;
- goto yy61;
- }
-yy876:
- YYDEBUG(876, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy61;
- if (yych <= '0') goto yy845;
- goto yy846;
- } else {
- if (yych <= '3') goto yy847;
- if (yych <= '9') goto yy821;
- goto yy61;
- }
-yy877:
- YYDEBUG(877, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy848;
- goto yy61;
-yy878:
- YYDEBUG(878, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy879;
- if (yych != 'c') goto yy57;
-yy879:
- YYDEBUG(879, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'E') goto yy880;
- if (yych != 'e') goto yy794;
-yy880:
- YYDEBUG(880, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy881;
- if (yych != 'm') goto yy57;
-yy881:
- YYDEBUG(881, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy882;
- if (yych != 'b') goto yy57;
-yy882:
- YYDEBUG(882, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy883;
- if (yych != 'e') goto yy57;
-yy883:
- YYDEBUG(883, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy884;
- if (yych != 'r') goto yy57;
-yy884:
- YYDEBUG(884, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy794;
-yy885:
- YYDEBUG(885, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy886;
- if (yych != 'v') goto yy57;
-yy886:
- YYDEBUG(886, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'E') goto yy887;
- if (yych != 'e') goto yy794;
-yy887:
- YYDEBUG(887, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy888;
- if (yych != 'm') goto yy57;
-yy888:
- YYDEBUG(888, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy889;
- if (yych != 'b') goto yy57;
-yy889:
- YYDEBUG(889, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy890;
- if (yych != 'e') goto yy57;
-yy890:
- YYDEBUG(890, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy884;
- if (yych == 'r') goto yy884;
- goto yy57;
-yy891:
- YYDEBUG(891, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy892;
- if (yych != 't') goto yy57;
-yy892:
- YYDEBUG(892, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'O') goto yy893;
- if (yych != 'o') goto yy794;
-yy893:
- YYDEBUG(893, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy894;
- if (yych != 'b') goto yy57;
-yy894:
- YYDEBUG(894, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy895;
- if (yych != 'e') goto yy57;
-yy895:
- YYDEBUG(895, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy884;
- if (yych == 'r') goto yy884;
- goto yy57;
-yy896:
- YYDEBUG(896, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'P') {
- if (yych == 'C') goto yy129;
- if (yych <= 'O') goto yy57;
- } else {
- if (yych <= 'c') {
- if (yych <= 'b') goto yy57;
- goto yy129;
- } else {
- if (yych != 'p') goto yy57;
- }
- }
-yy897:
- YYDEBUG(897, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy898;
- if (yych != 't') goto yy794;
-yy898:
- YYDEBUG(898, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'E') goto yy899;
- if (yych != 'e') goto yy794;
-yy899:
- YYDEBUG(899, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy900;
- if (yych != 'm') goto yy57;
-yy900:
- YYDEBUG(900, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy901;
- if (yych != 'b') goto yy57;
-yy901:
- YYDEBUG(901, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy902;
- if (yych != 'e') goto yy57;
-yy902:
- YYDEBUG(902, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy884;
- if (yych == 'r') goto yy884;
- goto yy57;
-yy903:
- YYDEBUG(903, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy907;
- if (yych == 'g') goto yy907;
- goto yy57;
-yy904:
- YYDEBUG(904, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy905;
- if (yych != 'r') goto yy57;
-yy905:
- YYDEBUG(905, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'I') goto yy906;
- if (yych != 'i') goto yy794;
-yy906:
- YYDEBUG(906, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy884;
- if (yych == 'l') goto yy884;
- goto yy57;
-yy907:
- YYDEBUG(907, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'U') goto yy908;
- if (yych != 'u') goto yy794;
-yy908:
- YYDEBUG(908, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy909;
- if (yych != 's') goto yy57;
-yy909:
- YYDEBUG(909, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy884;
- if (yych == 't') goto yy884;
- goto yy57;
-yy910:
- YYDEBUG(910, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy911;
- if (yych <= 'X') goto yy57;
- goto yy884;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- } else {
- if (yych == 'y') goto yy884;
- goto yy57;
- }
- }
-yy911:
- YYDEBUG(911, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'C') goto yy912;
- if (yych != 'c') goto yy794;
-yy912:
- YYDEBUG(912, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy884;
- if (yych == 'h') goto yy884;
- goto yy57;
-yy913:
- YYDEBUG(913, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy914;
- if (yych != 'b') goto yy57;
-yy914:
- YYDEBUG(914, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'R') goto yy915;
- if (yych != 'r') goto yy794;
-yy915:
- YYDEBUG(915, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy916;
- if (yych != 'u') goto yy57;
-yy916:
- YYDEBUG(916, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy917;
- if (yych != 'a') goto yy57;
-yy917:
- YYDEBUG(917, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy918;
- if (yych != 'r') goto yy57;
-yy918:
- YYDEBUG(918, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy884;
- if (yych == 'y') goto yy884;
- goto yy57;
-yy919:
- YYDEBUG(919, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy926;
- if (yych <= 'M') goto yy57;
- goto yy925;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy926;
- } else {
- if (yych == 'n') goto yy925;
- goto yy57;
- }
- }
-yy920:
- YYDEBUG(920, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy921;
- if (yych != 'n') goto yy57;
-yy921:
- YYDEBUG(921, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'U') goto yy922;
- if (yych != 'u') goto yy794;
-yy922:
- YYDEBUG(922, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy923;
- if (yych != 'a') goto yy57;
-yy923:
- YYDEBUG(923, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy924;
- if (yych != 'r') goto yy57;
-yy924:
- YYDEBUG(924, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy884;
- if (yych == 'y') goto yy884;
- goto yy57;
-yy925:
- YYDEBUG(925, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy884;
- if (yych == 'e') goto yy884;
- goto yy794;
-yy926:
- YYDEBUG(926, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy884;
- if (yych == 'y') goto yy884;
- goto yy794;
-yy927:
- YYDEBUG(927, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy884;
- goto yy794;
-yy928:
- YYDEBUG(928, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != 'I') goto yy794;
- YYDEBUG(929, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy884;
- goto yy794;
-yy930:
- YYDEBUG(930, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy884;
- goto yy794;
-yy931:
- YYDEBUG(931, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy946;
- if (yych <= '9') goto yy945;
- goto yy57;
-yy932:
- YYDEBUG(932, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy944;
- goto yy57;
-yy933:
- YYDEBUG(933, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy942;
- if (yych <= '6') goto yy941;
- goto yy57;
-yy934:
- YYDEBUG(934, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy913;
- if (yych == 'e') goto yy913;
- goto yy57;
-yy935:
- YYDEBUG(935, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy910;
- if (yych == 'a') goto yy910;
- goto yy57;
-yy936:
- YYDEBUG(936, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy940;
- if (yych == 'e') goto yy940;
- goto yy57;
-yy937:
- YYDEBUG(937, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy878;
- if (yych == 'e') goto yy878;
- goto yy57;
-yy938:
- YYDEBUG(938, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
-yy939:
- YYDEBUG(939, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ':
- case '-':
- case '.': goto yy938;
- case 'A':
- case 'a': goto yy800;
- case 'D':
- case 'd': goto yy937;
- case 'F':
- case 'f': goto yy934;
- case 'I': goto yy793;
- case 'J':
- case 'j': goto yy797;
- case 'M':
- case 'm': goto yy935;
- case 'N':
- case 'n': goto yy803;
- case 'O':
- case 'o': goto yy802;
- case 'S':
- case 's': goto yy936;
- case 'V': goto yy795;
- case 'X': goto yy796;
- default: goto yy57;
- }
-yy940:
- YYDEBUG(940, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy897;
- if (yych == 'p') goto yy897;
- goto yy57;
-yy941:
- YYDEBUG(941, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '6') goto yy943;
- goto yy57;
-yy942:
- YYDEBUG(942, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy943:
- YYDEBUG(943, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy822;
-yy944:
- YYDEBUG(944, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy943;
- goto yy57;
-yy945:
- YYDEBUG(945, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy943;
- goto yy57;
-yy946:
- YYDEBUG(946, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '0') goto yy57;
- if (yych <= '9') goto yy943;
- goto yy57;
-yy947:
- YYDEBUG(947, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') goto yy57;
- if (yych <= '/') goto yy950;
- if (yych <= '9') goto yy958;
- goto yy57;
-yy948:
- YYDEBUG(948, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') goto yy57;
- if (yych <= '/') goto yy950;
- if (yych <= '2') goto yy958;
- goto yy57;
-yy949:
- YYDEBUG(949, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '/') goto yy57;
-yy950:
- YYDEBUG(950, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy951;
- if (yych <= '3') goto yy952;
- if (yych <= '9') goto yy953;
- goto yy57;
-yy951:
- YYDEBUG(951, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy455;
- if (yych <= '9') goto yy953;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy952:
- YYDEBUG(952, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy455;
- if (yych <= '1') goto yy953;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy953:
- YYDEBUG(953, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'q') {
- if (yych == 'n') goto yy955;
- goto yy455;
- } else {
- if (yych <= 'r') goto yy956;
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
-yy954:
- YYDEBUG(954, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 't') goto yy454;
- goto yy57;
-yy955:
- YYDEBUG(955, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy454;
- goto yy57;
-yy956:
- YYDEBUG(956, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy454;
- goto yy57;
-yy957:
- YYDEBUG(957, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'h') goto yy454;
- goto yy57;
-yy958:
- YYDEBUG(958, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '/') goto yy57;
- YYDEBUG(959, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych >= '1') goto yy961;
- } else {
- if (yych <= '3') goto yy962;
- if (yych <= '9') goto yy953;
- goto yy57;
- }
- YYDEBUG(960, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy455;
- if (yych <= '9') goto yy963;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy961:
- YYDEBUG(961, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy455;
- if (yych <= '9') goto yy963;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy962:
- YYDEBUG(962, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy455;
- if (yych <= '1') goto yy963;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy963:
- YYDEBUG(963, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych == '/') goto yy454;
- if (yych <= 'm') goto yy455;
- goto yy955;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy956;
- } else {
- if (yych <= 's') goto yy954;
- if (yych <= 't') goto yy957;
- goto yy455;
- }
- }
-yy964:
- YYDEBUG(964, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'A') goto yy1044;
- if (yych <= 'T') goto yy57;
- goto yy1043;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy57;
- goto yy1044;
- } else {
- if (yych == 'u') goto yy1043;
- goto yy57;
- }
- }
-yy965:
- YYDEBUG(965, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1041;
- if (yych == 'e') goto yy1041;
- goto yy57;
-yy966:
- YYDEBUG(966, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1038;
- if (yych == 'a') goto yy1038;
- goto yy57;
-yy967:
- YYDEBUG(967, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'P') goto yy1035;
- if (yych <= 'T') goto yy57;
- goto yy1034;
- } else {
- if (yych <= 'p') {
- if (yych <= 'o') goto yy57;
- goto yy1035;
- } else {
- if (yych == 'u') goto yy1034;
- goto yy57;
- }
- }
-yy968:
- YYDEBUG(968, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1031;
- if (yych == 'e') goto yy1031;
- goto yy57;
-yy969:
- YYDEBUG(969, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy1029;
- if (yych == 'c') goto yy1029;
- goto yy57;
-yy970:
- YYDEBUG(970, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1027;
- if (yych == 'o') goto yy1027;
- goto yy57;
-yy971:
- YYDEBUG(971, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1025;
- if (yych == 'e') goto yy1025;
- goto yy57;
-yy972:
- YYDEBUG(972, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '0') goto yy811;
- if (yych <= '4') goto yy812;
- if (yych <= '5') goto yy813;
- goto yy57;
-yy973:
- YYDEBUG(973, *YYCURSOR);
- yyaccept = 22;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '-') goto yy977;
- if (yych <= '/') goto yy974;
- if (yych <= '9') goto yy996;
-yy974:
- YYDEBUG(974, *YYCURSOR);
-#line 1305 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("gnudateshorter");
- TIMELIB_INIT;
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
- TIMELIB_DEINIT;
- return TIMELIB_ISO_DATE;
- }
-#line 14697 "ext/date/lib/parse_date.c"
-yy975:
- YYDEBUG(975, *YYCURSOR);
- yyaccept = 22;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '-') goto yy977;
- if (yych <= '/') goto yy974;
- if (yych <= '2') goto yy996;
- goto yy974;
-yy976:
- YYDEBUG(976, *YYCURSOR);
- yyaccept = 22;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != '-') goto yy974;
-yy977:
- YYDEBUG(977, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '2') goto yy978;
- if (yych <= '3') goto yy979;
- if (yych <= '9') goto yy980;
- goto yy57;
-yy978:
- YYDEBUG(978, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '9') {
- if (yych <= '/') goto yy657;
- goto yy980;
- } else {
- if (yych == 'T') goto yy985;
- goto yy657;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy982;
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy979:
- YYDEBUG(979, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy657;
- } else {
- if (yych == 'T') goto yy985;
- goto yy657;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy982;
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy980:
- YYDEBUG(980, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych == 'T') goto yy985;
- if (yych <= 'm') goto yy657;
- goto yy982;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy981:
- YYDEBUG(981, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 't') goto yy995;
- goto yy57;
-yy982:
- YYDEBUG(982, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy995;
- goto yy57;
-yy983:
- YYDEBUG(983, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'd') goto yy995;
- goto yy57;
-yy984:
- YYDEBUG(984, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'h') goto yy995;
- goto yy57;
-yy985:
- YYDEBUG(985, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy986;
- if (yych <= '2') goto yy987;
- if (yych <= '9') goto yy988;
- goto yy57;
-yy986:
- YYDEBUG(986, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy988;
- if (yych <= ':') goto yy989;
- goto yy57;
-yy987:
- YYDEBUG(987, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '4') goto yy988;
- if (yych == ':') goto yy989;
- goto yy57;
-yy988:
- YYDEBUG(988, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
-yy989:
- YYDEBUG(989, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy990;
- if (yych <= '9') goto yy991;
- goto yy57;
-yy990:
- YYDEBUG(990, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy991;
- if (yych <= ':') goto yy992;
- goto yy57;
-yy991:
- YYDEBUG(991, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
-yy992:
- YYDEBUG(992, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy993;
- if (yych <= '6') goto yy994;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy993:
- YYDEBUG(993, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '9') goto yy842;
- goto yy843;
-yy994:
- YYDEBUG(994, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '0') goto yy842;
- goto yy843;
-yy995:
- YYDEBUG(995, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'T') goto yy985;
- goto yy657;
-yy996:
- YYDEBUG(996, *YYCURSOR);
- yyaccept = 22;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != '-') goto yy974;
- YYDEBUG(997, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych >= '1') goto yy999;
- } else {
- if (yych <= '3') goto yy1000;
- if (yych <= '9') goto yy980;
- goto yy57;
- }
- YYDEBUG(998, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '9') {
- if (yych <= '/') goto yy657;
- goto yy1001;
- } else {
- if (yych == 'T') goto yy985;
- goto yy657;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy982;
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy999:
- YYDEBUG(999, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '9') {
- if (yych <= '/') goto yy657;
- goto yy1001;
- } else {
- if (yych == 'T') goto yy985;
- goto yy657;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy982;
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy1000:
- YYDEBUG(1000, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'm') {
- if (yych <= '1') {
- if (yych <= '/') goto yy657;
- } else {
- if (yych == 'T') goto yy985;
- goto yy657;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'n') goto yy982;
- if (yych <= 'q') goto yy657;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy657;
- }
- }
-yy1001:
- YYDEBUG(1001, *YYCURSOR);
- yyaccept = 21;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych == 'T') goto yy1002;
- if (yych <= 'm') goto yy455;
- goto yy982;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy455;
- goto yy983;
- } else {
- if (yych <= 's') goto yy981;
- if (yych <= 't') goto yy984;
- goto yy455;
- }
- }
-yy1002:
- YYDEBUG(1002, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy1003;
- if (yych <= '2') goto yy1004;
- if (yych <= '9') goto yy988;
- goto yy57;
-yy1003:
- YYDEBUG(1003, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy1005;
- if (yych <= ':') goto yy989;
- goto yy57;
-yy1004:
- YYDEBUG(1004, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '4') goto yy1005;
- if (yych == ':') goto yy989;
- goto yy57;
-yy1005:
- YYDEBUG(1005, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(1006, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy1007;
- if (yych <= '9') goto yy991;
- goto yy57;
-yy1007:
- YYDEBUG(1007, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy1008;
- if (yych <= ':') goto yy992;
- goto yy57;
-yy1008:
- YYDEBUG(1008, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ':') goto yy57;
- YYDEBUG(1009, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy1010;
- if (yych <= '6') goto yy1011;
- if (yych <= '9') goto yy842;
- goto yy57;
-yy1010:
- YYDEBUG(1010, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '9') goto yy1012;
- goto yy843;
-yy1011:
- YYDEBUG(1011, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '0') goto yy843;
-yy1012:
- YYDEBUG(1012, *YYCURSOR);
- yyaccept = 23;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != '.') goto yy843;
- YYDEBUG(1013, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy1014:
- YYDEBUG(1014, *YYCURSOR);
- yyaccept = 23;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
- YYDEBUG(1015, *YYCURSOR);
- if (yych <= '-') {
- if (yych == '+') goto yy1017;
- if (yych <= ',') goto yy843;
- goto yy1017;
- } else {
- if (yych <= '9') {
- if (yych <= '/') goto yy843;
- goto yy1014;
- } else {
- if (yych != 'G') goto yy843;
- }
- }
- YYDEBUG(1016, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy1023;
- goto yy57;
-yy1017:
- YYDEBUG(1017, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy1018;
- if (yych <= '2') goto yy1019;
- if (yych <= '9') goto yy1020;
- goto yy57;
-yy1018:
- YYDEBUG(1018, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '9') goto yy1020;
- if (yych <= ':') goto yy1021;
- goto yy843;
-yy1019:
- YYDEBUG(1019, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '5') {
- if (yych <= '/') goto yy843;
- if (yych >= '5') goto yy1022;
- } else {
- if (yych <= '9') goto yy842;
- if (yych <= ':') goto yy1021;
- goto yy843;
- }
-yy1020:
- YYDEBUG(1020, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '5') goto yy1022;
- if (yych <= '9') goto yy842;
- if (yych >= ';') goto yy843;
-yy1021:
- YYDEBUG(1021, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '5') goto yy1022;
- if (yych <= '9') goto yy842;
- goto yy843;
-yy1022:
- YYDEBUG(1022, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy843;
- if (yych <= '9') goto yy842;
- goto yy843;
-yy1023:
- YYDEBUG(1023, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != 'T') goto yy57;
- YYDEBUG(1024, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '+') goto yy1017;
- if (yych == '-') goto yy1017;
- goto yy57;
-yy1025:
- YYDEBUG(1025, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy1026;
- if (yych != 'c') goto yy57;
-yy1026:
- YYDEBUG(1026, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'E') goto yy880;
- if (yych == 'e') goto yy880;
- goto yy794;
- }
-yy1027:
- YYDEBUG(1027, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'V') goto yy1028;
- if (yych != 'v') goto yy57;
-yy1028:
- YYDEBUG(1028, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'E') goto yy887;
- if (yych == 'e') goto yy887;
- goto yy794;
- }
-yy1029:
- YYDEBUG(1029, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1030;
- if (yych != 't') goto yy57;
-yy1030:
- YYDEBUG(1030, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'O') goto yy893;
- if (yych == 'o') goto yy893;
- goto yy794;
- }
-yy1031:
- YYDEBUG(1031, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'P') goto yy1032;
- if (yych != 'p') goto yy57;
-yy1032:
- YYDEBUG(1032, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'T') goto yy1033;
- if (yych != 't') goto yy794;
- }
-yy1033:
- YYDEBUG(1033, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'E') goto yy899;
- if (yych == 'e') goto yy899;
- goto yy794;
- }
-yy1034:
- YYDEBUG(1034, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy1037;
- if (yych == 'g') goto yy1037;
- goto yy57;
-yy1035:
- YYDEBUG(1035, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy1036;
- if (yych != 'r') goto yy57;
-yy1036:
- YYDEBUG(1036, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'H') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'I') goto yy906;
- if (yych == 'i') goto yy906;
- goto yy794;
- }
-yy1037:
- YYDEBUG(1037, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'U') goto yy908;
- if (yych == 'u') goto yy908;
- goto yy794;
- }
-yy1038:
- YYDEBUG(1038, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych == 'R') goto yy1039;
- if (yych <= 'X') goto yy57;
- goto yy1040;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy57;
- } else {
- if (yych == 'y') goto yy1040;
- goto yy57;
- }
- }
-yy1039:
- YYDEBUG(1039, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'B') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'C') goto yy912;
- if (yych == 'c') goto yy912;
- goto yy794;
- }
-yy1040:
- YYDEBUG(1040, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '-') goto yy767;
- goto yy794;
-yy1041:
- YYDEBUG(1041, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'B') goto yy1042;
- if (yych != 'b') goto yy57;
-yy1042:
- YYDEBUG(1042, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'R') goto yy915;
- if (yych == 'r') goto yy915;
- goto yy794;
- }
-yy1043:
- YYDEBUG(1043, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'L') goto yy1047;
- if (yych <= 'M') goto yy57;
- goto yy1046;
- } else {
- if (yych <= 'l') {
- if (yych <= 'k') goto yy57;
- goto yy1047;
- } else {
- if (yych == 'n') goto yy1046;
- goto yy57;
- }
- }
-yy1044:
- YYDEBUG(1044, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1045;
- if (yych != 'n') goto yy57;
-yy1045:
- YYDEBUG(1045, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'U') goto yy922;
- if (yych == 'u') goto yy922;
- goto yy794;
- }
-yy1046:
- YYDEBUG(1046, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'E') goto yy884;
- if (yych == 'e') goto yy884;
- goto yy794;
- }
-yy1047:
- YYDEBUG(1047, *YYCURSOR);
- yyaccept = 20;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych == '-') goto yy767;
- goto yy794;
- } else {
- if (yych <= 'Y') goto yy884;
- if (yych == 'y') goto yy884;
- goto yy794;
- }
-yy1048:
- YYDEBUG(1048, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy578;
- goto yy731;
- } else {
- if (yych <= ',') goto yy578;
- if (yych <= '-') goto yy732;
- goto yy731;
- }
- } else {
- if (yych <= 'U') {
- if (yych <= '/') goto yy730;
- if (yych <= 'T') goto yy578;
- goto yy78;
- } else {
- if (yych == 'u') goto yy78;
- goto yy578;
- }
- }
-yy1049:
- YYDEBUG(1049, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'P') {
- if (yych == 'C') goto yy129;
- if (yych <= 'O') goto yy57;
- goto yy586;
- } else {
- if (yych <= 'c') {
- if (yych <= 'b') goto yy57;
- goto yy129;
- } else {
- if (yych == 'p') goto yy586;
- goto yy57;
- }
- }
-yy1050:
- YYDEBUG(1050, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '9') {
- if (yych <= ',') {
- if (yych == '\t') goto yy1052;
- goto yy1054;
- } else {
- if (yych <= '-') goto yy1051;
- if (yych <= '.') goto yy731;
- if (yych <= '/') goto yy730;
- goto yy741;
- }
- } else {
- if (yych <= 'q') {
- if (yych == 'n') goto yy470;
- goto yy1054;
- } else {
- if (yych <= 'r') goto yy471;
- if (yych <= 's') goto yy464;
- if (yych <= 't') goto yy468;
- goto yy1054;
- }
- }
-yy1051:
- YYDEBUG(1051, *YYCURSOR);
- yych = *++YYCURSOR;
- YYDEBUG(-1, yych);
- switch (yych) {
- case '0': goto yy1055;
- case '1': goto yy1056;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy618;
- case 'A':
- case 'a': goto yy622;
- case 'D':
- case 'd': goto yy626;
- case 'F':
- case 'f': goto yy620;
- case 'J':
- case 'j': goto yy619;
- case 'M':
- case 'm': goto yy621;
- case 'N':
- case 'n': goto yy625;
- case 'O':
- case 'o': goto yy624;
- case 'S':
- case 's': goto yy623;
- default: goto yy578;
- }
-yy1052:
- YYDEBUG(1052, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy1054;
- if (yych <= '0') goto yy736;
- if (yych <= '1') goto yy737;
- if (yych <= '9') goto yy738;
- goto yy1054;
-yy1053:
- YYDEBUG(1053, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
- yych = *YYCURSOR;
-yy1054:
- YYDEBUG(1054, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ': goto yy1053;
- case '-':
- case '.': goto yy577;
- case 'A':
- case 'a': goto yy574;
- case 'D':
- case 'd': goto yy466;
- case 'F':
- case 'f': goto yy467;
- case 'H':
- case 'h': goto yy64;
- case 'I': goto yy475;
- case 'J':
- case 'j': goto yy479;
- case 'M':
- case 'm': goto yy465;
- case 'N':
- case 'n': goto yy482;
- case 'O':
- case 'o': goto yy481;
- case 'S':
- case 's': goto yy463;
- case 'T':
- case 't': goto yy69;
- case 'V': goto yy477;
- case 'W':
- case 'w': goto yy68;
- case 'X': goto yy478;
- case 'Y':
- case 'y': goto yy67;
- default: goto yy57;
- }
-yy1055:
- YYDEBUG(1055, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy655;
- goto yy602;
- } else {
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy1057;
- goto yy57;
- }
-yy1056:
- YYDEBUG(1056, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '.') {
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy655;
- goto yy602;
- } else {
- if (yych <= '/') goto yy57;
- if (yych >= '3') goto yy57;
- }
-yy1057:
- YYDEBUG(1057, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= ',') goto yy57;
- if (yych <= '-') goto yy1058;
- if (yych <= '.') goto yy602;
- goto yy57;
-yy1058:
- YYDEBUG(1058, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '2') {
- if (yych <= '/') goto yy57;
- if (yych >= '1') goto yy1060;
- } else {
- if (yych <= '3') goto yy1061;
- if (yych <= '9') goto yy659;
- goto yy57;
- }
- YYDEBUG(1059, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy1062;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy1060:
- YYDEBUG(1060, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy657;
- if (yych <= '9') goto yy1062;
- if (yych <= 'm') goto yy657;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy1061:
- YYDEBUG(1061, *YYCURSOR);
- yyaccept = 13;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '1') {
- if (yych <= '/') goto yy657;
- } else {
- if (yych <= '9') goto yy604;
- if (yych <= 'm') goto yy657;
- goto yy661;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy657;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy657;
- }
- }
-yy1062:
- YYDEBUG(1062, *YYCURSOR);
- yyaccept = 15;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'n') {
- if (yych <= '/') goto yy764;
- if (yych <= '9') goto yy605;
- if (yych <= 'm') goto yy764;
- goto yy661;
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy764;
- goto yy662;
- } else {
- if (yych <= 's') goto yy660;
- if (yych <= 't') goto yy663;
- goto yy764;
- }
- }
-yy1063:
- YYDEBUG(1063, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '9') {
- if (yych <= '-') {
- if (yych == '\t') goto yy1052;
- if (yych <= ',') goto yy1054;
- goto yy1051;
- } else {
- if (yych <= '.') goto yy1064;
- if (yych <= '/') goto yy730;
- if (yych <= '5') goto yy1066;
- goto yy741;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy1065;
- if (yych == 'n') goto yy470;
- goto yy1054;
- } else {
- if (yych <= 'r') goto yy471;
- if (yych <= 's') goto yy464;
- if (yych <= 't') goto yy468;
- goto yy1054;
- }
- }
-yy1064:
- YYDEBUG(1064, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '1') {
- if (yych <= '/') goto yy578;
- if (yych <= '0') goto yy1088;
- goto yy1089;
- } else {
- if (yych <= '5') goto yy1090;
- if (yych <= '9') goto yy1091;
- goto yy578;
- }
-yy1065:
- YYDEBUG(1065, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy1083;
- if (yych <= '9') goto yy1084;
- goto yy57;
-yy1066:
- YYDEBUG(1066, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '-') goto yy785;
- if (yych <= '/') goto yy61;
- if (yych >= ':') goto yy61;
- YYDEBUG(1067, *YYCURSOR);
- yyaccept = 24;
- yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch (yych) {
- case '\t':
- case ' ':
- case 'A':
- case 'D':
- case 'F':
- case 'H':
- case 'I':
- case 'J':
- case 'M':
- case 'N':
- case 'O':
- case 'S':
- case 'T':
- case 'V':
- case 'X':
- case 'Y':
- case 'a':
- case 'd':
- case 'f':
- case 'h':
- case 'j':
- case 'm':
- case 'n':
- case 'o':
- case 's':
- case 't':
- case 'w':
- case 'y': goto yy791;
- case '-': goto yy788;
- case '.': goto yy792;
- case '/': goto yy789;
- case '0': goto yy1069;
- case '1': goto yy1070;
- case '2': goto yy1071;
- case '3': goto yy1072;
- case '4':
- case '5': goto yy1073;
- case '6': goto yy1074;
- case '7':
- case '8':
- case '9': goto yy55;
- case ':': goto yy807;
- case 'W': goto yy810;
- default: goto yy1068;
- }
-yy1068:
- YYDEBUG(1068, *YYCURSOR);
-#line 1199 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("gnunocolon");
- TIMELIB_INIT;
- switch (s->time->have_time) {
- case 0:
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = 0;
- break;
- case 1:
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- break;
- default:
- TIMELIB_DEINIT;
- add_error(s, "Double time specification");
- return TIMELIB_ERROR;
- }
- s->time->have_time++;
- TIMELIB_DEINIT;
- return TIMELIB_GNU_NOCOLON;
- }
-#line 15728 "ext/date/lib/parse_date.c"
-yy1069:
- YYDEBUG(1069, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '0') goto yy1081;
- if (yych <= '9') goto yy1082;
- goto yy61;
-yy1070:
- YYDEBUG(1070, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '2') goto yy1080;
- if (yych <= '9') goto yy1079;
- goto yy61;
-yy1071:
- YYDEBUG(1071, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy1079;
- goto yy61;
-yy1072:
- YYDEBUG(1072, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '5') goto yy1077;
- if (yych <= '6') goto yy1078;
- if (yych <= '9') goto yy1075;
- goto yy61;
-yy1073:
- YYDEBUG(1073, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '9') goto yy1075;
- goto yy61;
-yy1074:
- YYDEBUG(1074, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy61;
- if (yych <= '0') goto yy1075;
- if (yych <= '9') goto yy55;
- goto yy61;
-yy1075:
- YYDEBUG(1075, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy55;
- }
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych >= ' ') goto yy61;
- } else {
- if (yych == 'D') goto yy61;
- if (yych >= 'F') goto yy61;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy61;
- if (yych >= 'M') goto yy61;
- } else {
- if (yych <= 'R') goto yy1076;
- if (yych <= 'T') goto yy61;
- if (yych >= 'W') goto yy61;
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy61;
- if (yych >= 'd') goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- if (yych >= 'h') goto yy61;
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych >= 's') goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych >= 'w') goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- }
- }
- }
- }
-yy1076:
- YYDEBUG(1076, *YYCURSOR);
-#line 1245 "ext/date/lib/parse_date.re"
- {
- int tz_not_found;
- DEBUG_OUTPUT("iso8601nocolon");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = timelib_get_nr((char **) &ptr, 2);
-
- if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_error(s, "The timezone could not be found in the database");
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_ISO_NOCOLON;
- }
-#line 15839 "ext/date/lib/parse_date.c"
-yy1077:
- YYDEBUG(1077, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '/') goto yy1076;
- if (yych <= '9') goto yy821;
- if (yych <= 'C') goto yy1076;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy1076;
- if (yych <= 'T') goto yy61;
- goto yy1076;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy1076;
- if (yych <= 'Y') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy1076;
- } else {
- if (yych == 'g') goto yy1076;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1078:
- YYDEBUG(1078, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '6') {
- if (yych <= '/') goto yy1076;
- goto yy821;
- } else {
- if (yych <= '9') goto yy55;
- if (yych <= 'C') goto yy1076;
- goto yy61;
- }
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy1076;
- if (yych <= 'T') goto yy61;
- goto yy1076;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy1076;
- if (yych <= 'Y') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy1076;
- } else {
- if (yych == 'g') goto yy1076;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1079:
- YYDEBUG(1079, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= 'D') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '/') goto yy1076;
- if (yych <= '9') goto yy821;
- if (yych <= 'C') goto yy1076;
- goto yy61;
- }
- } else {
- if (yych <= 'H') {
- if (yych == 'F') goto yy61;
- if (yych <= 'G') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'M') {
- if (yych <= 'L') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'R') goto yy1076;
- if (yych <= 'T') goto yy61;
- goto yy1076;
- }
- }
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'c') {
- if (yych == 'X') goto yy1076;
- if (yych <= 'Y') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'e') {
- if (yych <= 'd') goto yy61;
- goto yy1076;
- } else {
- if (yych == 'g') goto yy1076;
- goto yy61;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych == 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1080:
- YYDEBUG(1080, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '9') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '0') {
- if (yych <= '/') goto yy1076;
- goto yy845;
- } else {
- if (yych <= '2') goto yy846;
- if (yych <= '3') goto yy847;
- goto yy821;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'F') goto yy61;
- goto yy1076;
- }
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy1076;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy1076;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1081:
- YYDEBUG(1081, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '9') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '0') {
- if (yych <= '/') goto yy1076;
- goto yy877;
- } else {
- if (yych <= '2') goto yy846;
- if (yych <= '3') goto yy847;
- goto yy821;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'F') goto yy61;
- goto yy1076;
- }
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy1076;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy1076;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1082:
- YYDEBUG(1082, *YYCURSOR);
- yyaccept = 25;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '9') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy61;
- if (yych <= 0x1F) goto yy1076;
- goto yy61;
- } else {
- if (yych <= '0') {
- if (yych <= '/') goto yy1076;
- goto yy845;
- } else {
- if (yych <= '2') goto yy846;
- if (yych <= '3') goto yy847;
- goto yy821;
- }
- }
- } else {
- if (yych <= 'G') {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'F') goto yy61;
- goto yy1076;
- }
- } else {
- if (yych <= 'L') {
- if (yych <= 'H') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'M') goto yy61;
- if (yych <= 'R') goto yy1076;
- goto yy61;
- }
- }
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Y') {
- if (yych == 'W') goto yy61;
- if (yych <= 'X') goto yy1076;
- goto yy61;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'f') goto yy61;
- goto yy1076;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'l') {
- if (yych <= 'h') goto yy61;
- goto yy1076;
- } else {
- if (yych <= 'm') goto yy61;
- if (yych <= 'r') goto yy1076;
- goto yy61;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy1076;
- goto yy61;
- } else {
- if (yych == 'y') goto yy61;
- goto yy1076;
- }
- }
- }
- }
-yy1083:
- YYDEBUG(1083, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy1085;
- goto yy491;
- } else {
- if (yych <= '9') goto yy1084;
- if (yych <= ':') goto yy1085;
- goto yy491;
- }
-yy1084:
- YYDEBUG(1084, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy1085;
- if (yych != ':') goto yy491;
-yy1085:
- YYDEBUG(1085, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy1086;
- if (yych <= '6') goto yy1087;
- if (yych <= '9') goto yy496;
- goto yy57;
-yy1086:
- YYDEBUG(1086, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy496;
- goto yy491;
-yy1087:
- YYDEBUG(1087, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych == '0') goto yy496;
- goto yy491;
-yy1088:
- YYDEBUG(1088, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- goto yy1092;
- } else {
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy1091;
- if (yych <= ':') goto yy1085;
- goto yy491;
- }
-yy1089:
- YYDEBUG(1089, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- if (yych <= '.') goto yy1092;
- goto yy491;
- } else {
- if (yych <= '2') goto yy1091;
- if (yych <= '9') goto yy1084;
- if (yych <= ':') goto yy1085;
- goto yy491;
- }
-yy1090:
- YYDEBUG(1090, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- goto yy1092;
- } else {
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy1084;
- if (yych <= ':') goto yy1085;
- goto yy491;
- }
-yy1091:
- YYDEBUG(1091, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ',') goto yy491;
- if (yych <= '-') goto yy602;
- } else {
- if (yych == ':') goto yy1085;
- goto yy491;
- }
-yy1092:
- YYDEBUG(1092, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '5') goto yy1093;
- if (yych <= '6') goto yy1094;
- if (yych <= '9') goto yy610;
- goto yy57;
-yy1093:
- YYDEBUG(1093, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy1095;
- goto yy491;
-yy1094:
- YYDEBUG(1094, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych == '.') goto yy497;
- goto yy491;
- } else {
- if (yych <= '0') goto yy1095;
- if (yych <= '9') goto yy611;
- goto yy491;
- }
-yy1095:
- YYDEBUG(1095, *YYCURSOR);
- yyaccept = 11;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '.') goto yy497;
- if (yych <= '/') goto yy491;
- if (yych <= '9') goto yy605;
- goto yy491;
-yy1096:
- YYDEBUG(1096, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '9') {
- if (yych <= '-') {
- if (yych == '\t') goto yy460;
- if (yych <= ',') goto yy462;
- goto yy1051;
- } else {
- if (yych <= '.') goto yy474;
- if (yych <= '/') goto yy472;
- if (yych <= '5') goto yy1066;
- goto yy741;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy483;
- if (yych == 'n') goto yy470;
- goto yy462;
- } else {
- if (yych <= 'r') goto yy471;
- if (yych <= 's') goto yy464;
- if (yych <= 't') goto yy468;
- goto yy462;
- }
- }
-yy1097:
- YYDEBUG(1097, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '9') {
- if (yych <= '-') {
- if (yych == '\t') goto yy1052;
- if (yych <= ',') goto yy1054;
- goto yy1051;
- } else {
- if (yych <= '.') goto yy1064;
- if (yych <= '/') goto yy472;
- if (yych <= '5') goto yy1066;
- goto yy741;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= ':') goto yy1065;
- if (yych == 'n') goto yy470;
- goto yy1054;
- } else {
- if (yych <= 'r') goto yy471;
- if (yych <= 's') goto yy464;
- if (yych <= 't') goto yy468;
- goto yy1054;
- }
- }
-yy1098:
- YYDEBUG(1098, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy142;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'e') goto yy1099;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1099:
- YYDEBUG(1099, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'V') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'U') goto yy143;
- }
- } else {
- if (yych <= 'u') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'v') goto yy1100;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1100:
- YYDEBUG(1100, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'I') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'H') goto yy144;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'i') goto yy1101;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1101:
- YYDEBUG(1101, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'N') goto yy145;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'o') goto yy1102;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1102:
- YYDEBUG(1102, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'U') goto yy1103;
- if (yych != 'u') goto yy4;
- }
-yy1103:
- YYDEBUG(1103, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1104;
- if (yych != 's') goto yy57;
-yy1104:
- YYDEBUG(1104, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\t') goto yy1105;
- if (yych != ' ') goto yy57;
-yy1105:
- YYDEBUG(1105, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
- yych = *YYCURSOR;
-yy1106:
- YYDEBUG(1106, *YYCURSOR);
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1105;
- if (yych <= 0x1F) goto yy57;
- goto yy1105;
- } else {
- if (yych == 'D') goto yy1110;
- if (yych <= 'E') goto yy57;
- goto yy1111;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy1109;
- if (yych <= 'L') goto yy57;
- goto yy1108;
- } else {
- if (yych <= 'S') {
- if (yych <= 'R') goto yy57;
- } else {
- if (yych <= 'T') goto yy1114;
- if (yych <= 'V') goto yy57;
- goto yy1113;
- }
- }
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy1112;
- if (yych <= 'c') goto yy57;
- goto yy1110;
- } else {
- if (yych <= 'f') {
- if (yych <= 'e') goto yy57;
- goto yy1111;
- } else {
- if (yych == 'h') goto yy1109;
- goto yy57;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'm') goto yy1108;
- if (yych <= 'r') goto yy57;
- if (yych >= 't') goto yy1114;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy57;
- goto yy1113;
- } else {
- if (yych == 'y') goto yy1112;
- goto yy57;
- }
- }
- }
- }
-yy1107:
- YYDEBUG(1107, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= 'D') {
- if (yych == 'A') goto yy1179;
- goto yy57;
- } else {
- if (yych <= 'E') goto yy1180;
- if (yych <= 'T') goto yy57;
- goto yy1178;
- }
- } else {
- if (yych <= 'd') {
- if (yych == 'a') goto yy1179;
- goto yy57;
- } else {
- if (yych <= 'e') goto yy1180;
- if (yych == 'u') goto yy1178;
- goto yy57;
- }
- }
-yy1108:
- YYDEBUG(1108, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych == 'I') goto yy1170;
- if (yych <= 'N') goto yy57;
- goto yy1169;
- } else {
- if (yych <= 'i') {
- if (yych <= 'h') goto yy57;
- goto yy1170;
- } else {
- if (yych == 'o') goto yy1169;
- goto yy57;
- }
- }
-yy1109:
- YYDEBUG(1109, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1167;
- if (yych == 'o') goto yy1167;
- goto yy57;
-yy1110:
- YYDEBUG(1110, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1166;
- if (yych == 'a') goto yy1166;
- goto yy57;
-yy1111:
- YYDEBUG(1111, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych == 'O') goto yy1151;
- if (yych <= 'Q') goto yy57;
- goto yy1150;
- } else {
- if (yych <= 'o') {
- if (yych <= 'n') goto yy57;
- goto yy1151;
- } else {
- if (yych == 'r') goto yy1150;
- goto yy57;
- }
- }
-yy1112:
- YYDEBUG(1112, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1147;
- if (yych == 'e') goto yy1147;
- goto yy57;
-yy1113:
- YYDEBUG(1113, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1133;
- if (yych == 'e') goto yy1133;
- goto yy57;
-yy1114:
- YYDEBUG(1114, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych == 'H') goto yy1115;
- if (yych <= 'T') goto yy57;
- goto yy1116;
- } else {
- if (yych <= 'h') {
- if (yych <= 'g') goto yy57;
- } else {
- if (yych == 'u') goto yy1116;
- goto yy57;
- }
- }
-yy1115:
- YYDEBUG(1115, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy1128;
- if (yych == 'u') goto yy1128;
- goto yy57;
-yy1116:
- YYDEBUG(1116, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1117;
- if (yych != 'e') goto yy57;
-yy1117:
- YYDEBUG(1117, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych >= ' ') goto yy1119;
- } else {
- if (yych <= 'S') {
- if (yych >= 'S') goto yy1121;
- } else {
- if (yych == 's') goto yy1121;
- }
- }
-yy1118:
- YYDEBUG(1118, *YYCURSOR);
-#line 1629 "ext/date/lib/parse_date.re"
- {
- timelib_sll i;
- int behavior = 0;
- DEBUG_OUTPUT("relativetext");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
-
- while(*ptr) {
- i = timelib_get_relative_text((char **) &ptr, &behavior);
- timelib_eat_spaces((char **) &ptr);
- timelib_set_relative((char **) &ptr, i, behavior, s);
- }
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 16753 "ext/date/lib/parse_date.c"
-yy1119:
- YYDEBUG(1119, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- YYDEBUG(1120, *YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy57;
- goto yy1119;
- } else {
- if (yych <= 'O') {
- if (yych <= 'N') goto yy57;
- goto yy1125;
- } else {
- if (yych == 'o') goto yy1125;
- goto yy57;
- }
- }
-yy1121:
- YYDEBUG(1121, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1122;
- if (yych != 'd') goto yy57;
-yy1122:
- YYDEBUG(1122, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1123;
- if (yych != 'a') goto yy57;
-yy1123:
- YYDEBUG(1123, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych != 'y') goto yy57;
-yy1124:
- YYDEBUG(1124, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '\t') goto yy1119;
- if (yych == ' ') goto yy1119;
- goto yy1118;
-yy1125:
- YYDEBUG(1125, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy1126;
- if (yych != 'f') goto yy57;
-yy1126:
- YYDEBUG(1126, *YYCURSOR);
- ++YYCURSOR;
- YYDEBUG(1127, *YYCURSOR);
-#line 1114 "ext/date/lib/parse_date.re"
- {
- timelib_sll i;
- int behavior = 0;
- DEBUG_OUTPUT("weekdayof");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
- TIMELIB_HAVE_SPECIAL_RELATIVE();
-
- i = timelib_get_relative_text((char **) &ptr, &behavior);
- timelib_eat_spaces((char **) &ptr);
- if (i > 0) { /* first, second... etc */
- s->time->relative.special.type = TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH;
- timelib_set_relative((char **) &ptr, i, 1, s);
- } else { /* last */
- s->time->relative.special.type = TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH;
- timelib_set_relative((char **) &ptr, i, behavior, s);
- }
- TIMELIB_DEINIT;
- return TIMELIB_WEEK_DAY_OF_MONTH;
- }
-#line 16825 "ext/date/lib/parse_date.c"
-yy1128:
- YYDEBUG(1128, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy1118;
- goto yy1119;
- } else {
- if (yych <= 'R') {
- if (yych <= 'Q') goto yy1118;
- } else {
- if (yych != 'r') goto yy1118;
- }
- }
- YYDEBUG(1129, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1130;
- if (yych != 's') goto yy57;
-yy1130:
- YYDEBUG(1130, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1131;
- if (yych != 'd') goto yy57;
-yy1131:
- YYDEBUG(1131, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1132;
- if (yych != 'a') goto yy57;
-yy1132:
- YYDEBUG(1132, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1133:
- YYDEBUG(1133, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= 'C') goto yy57;
- if (yych <= 'D') goto yy1135;
- } else {
- if (yych <= 'c') goto yy57;
- if (yych <= 'd') goto yy1135;
- if (yych >= 'f') goto yy57;
- }
- YYDEBUG(1134, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'K') goto yy1141;
- if (yych == 'k') goto yy1141;
- goto yy57;
-yy1135:
- YYDEBUG(1135, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy1118;
- goto yy1119;
- } else {
- if (yych <= 'N') {
- if (yych <= 'M') goto yy1118;
- } else {
- if (yych != 'n') goto yy1118;
- }
- }
- YYDEBUG(1136, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1137;
- if (yych != 'e') goto yy57;
-yy1137:
- YYDEBUG(1137, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1138;
- if (yych != 's') goto yy57;
-yy1138:
- YYDEBUG(1138, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1139;
- if (yych != 'd') goto yy57;
-yy1139:
- YYDEBUG(1139, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1140;
- if (yych != 'a') goto yy57;
-yy1140:
- YYDEBUG(1140, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1141:
- YYDEBUG(1141, *YYCURSOR);
- yyaccept = 27;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == 'D') goto yy1144;
- if (yych >= 'S') goto yy1143;
- } else {
- if (yych <= 'd') {
- if (yych >= 'd') goto yy1144;
- } else {
- if (yych == 's') goto yy1143;
- }
- }
-yy1142:
- YYDEBUG(1142, *YYCURSOR);
-#line 1605 "ext/date/lib/parse_date.re"
- {
- timelib_sll i;
- int behavior = 0;
- DEBUG_OUTPUT("relativetextweek");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
-
- while(*ptr) {
- i = timelib_get_relative_text((char **) &ptr, &behavior);
- timelib_eat_spaces((char **) &ptr);
- timelib_set_relative((char **) &ptr, i, behavior, s);
- s->time->relative.weekday_behavior = 2;
-
- /* to handle the format weekday + last/this/next week */
- if (s->time->relative.have_weekday_relative == 0) {
- TIMELIB_HAVE_WEEKDAY_RELATIVE();
- s->time->relative.weekday = 1;
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 16956 "ext/date/lib/parse_date.c"
-yy1143:
- YYDEBUG(1143, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy1118;
-yy1144:
- YYDEBUG(1144, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1145;
- if (yych != 'a') goto yy57;
-yy1145:
- YYDEBUG(1145, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1146;
- if (yych != 'y') goto yy57;
-yy1146:
- YYDEBUG(1146, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1143;
- if (yych == 's') goto yy1143;
- goto yy1118;
-yy1147:
- YYDEBUG(1147, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1148;
- if (yych != 'a') goto yy57;
-yy1148:
- YYDEBUG(1148, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy1149;
- if (yych != 'r') goto yy57;
-yy1149:
- YYDEBUG(1149, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1143;
- if (yych == 's') goto yy1143;
- goto yy1118;
-yy1150:
- YYDEBUG(1150, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy1163;
- if (yych == 'i') goto yy1163;
- goto yy57;
-yy1151:
- YYDEBUG(1151, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy1152;
- if (yych != 'r') goto yy57;
-yy1152:
- YYDEBUG(1152, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1153;
- if (yych != 't') goto yy57;
-yy1153:
- YYDEBUG(1153, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych == 'H') goto yy1155;
- if (yych <= 'M') goto yy57;
- } else {
- if (yych <= 'h') {
- if (yych <= 'g') goto yy57;
- goto yy1155;
- } else {
- if (yych != 'n') goto yy57;
- }
- }
- YYDEBUG(1154, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy1160;
- if (yych == 'i') goto yy1160;
- goto yy57;
-yy1155:
- YYDEBUG(1155, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1156;
- if (yych != 'n') goto yy57;
-yy1156:
- YYDEBUG(1156, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'I') goto yy1157;
- if (yych != 'i') goto yy57;
-yy1157:
- YYDEBUG(1157, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy1158;
- if (yych != 'g') goto yy57;
-yy1158:
- YYDEBUG(1158, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy1159;
- if (yych != 'h') goto yy57;
-yy1159:
- YYDEBUG(1159, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1149;
- if (yych == 't') goto yy1149;
- goto yy57;
-yy1160:
- YYDEBUG(1160, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'G') goto yy1161;
- if (yych != 'g') goto yy57;
-yy1161:
- YYDEBUG(1161, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy1162;
- if (yych != 'h') goto yy57;
-yy1162:
- YYDEBUG(1162, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1149;
- if (yych == 't') goto yy1149;
- goto yy57;
-yy1163:
- YYDEBUG(1163, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy1118;
- goto yy1119;
- } else {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy1118;
- } else {
- if (yych != 'd') goto yy1118;
- }
- }
- YYDEBUG(1164, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1165;
- if (yych != 'a') goto yy57;
-yy1165:
- YYDEBUG(1165, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1166:
- YYDEBUG(1166, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1149;
- if (yych == 'y') goto yy1149;
- goto yy57;
-yy1167:
- YYDEBUG(1167, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'U') goto yy1168;
- if (yych != 'u') goto yy57;
-yy1168:
- YYDEBUG(1168, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy1149;
- if (yych == 'r') goto yy1149;
- goto yy57;
-yy1169:
- YYDEBUG(1169, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1174;
- if (yych == 'n') goto yy1174;
- goto yy57;
-yy1170:
- YYDEBUG(1170, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1171;
- if (yych != 'n') goto yy57;
-yy1171:
- YYDEBUG(1171, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'U') {
- if (yych == 'S') goto yy1143;
- if (yych <= 'T') goto yy1118;
- } else {
- if (yych <= 's') {
- if (yych <= 'r') goto yy1118;
- goto yy1143;
- } else {
- if (yych != 'u') goto yy1118;
- }
- }
- YYDEBUG(1172, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1173;
- if (yych != 't') goto yy57;
-yy1173:
- YYDEBUG(1173, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1149;
- if (yych == 'e') goto yy1149;
- goto yy57;
-yy1174:
- YYDEBUG(1174, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1119;
- goto yy1118;
- } else {
- if (yych <= ' ') goto yy1119;
- if (yych <= 'C') goto yy1118;
- }
- } else {
- if (yych <= 'c') {
- if (yych == 'T') goto yy1176;
- goto yy1118;
- } else {
- if (yych <= 'd') goto yy1175;
- if (yych == 't') goto yy1176;
- goto yy1118;
- }
- }
-yy1175:
- YYDEBUG(1175, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1177;
- if (yych == 'a') goto yy1177;
- goto yy57;
-yy1176:
- YYDEBUG(1176, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy1149;
- if (yych == 'h') goto yy1149;
- goto yy57;
-yy1177:
- YYDEBUG(1177, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1178:
- YYDEBUG(1178, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1189;
- if (yych == 'n') goto yy1189;
- goto yy57;
-yy1179:
- YYDEBUG(1179, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1184;
- if (yych == 't') goto yy1184;
- goto yy57;
-yy1180:
- YYDEBUG(1180, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'C') goto yy1181;
- if (yych != 'c') goto yy57;
-yy1181:
- YYDEBUG(1181, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == 'O') goto yy1182;
- if (yych <= 'R') goto yy1118;
- goto yy1143;
- } else {
- if (yych <= 'o') {
- if (yych <= 'n') goto yy1118;
- } else {
- if (yych == 's') goto yy1143;
- goto yy1118;
- }
- }
-yy1182:
- YYDEBUG(1182, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy1183;
- if (yych != 'n') goto yy57;
-yy1183:
- YYDEBUG(1183, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1149;
- if (yych == 'd') goto yy1149;
- goto yy57;
-yy1184:
- YYDEBUG(1184, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy1118;
- goto yy1119;
- } else {
- if (yych <= 'U') {
- if (yych <= 'T') goto yy1118;
- } else {
- if (yych != 'u') goto yy1118;
- }
- }
- YYDEBUG(1185, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy1186;
- if (yych != 'r') goto yy57;
-yy1186:
- YYDEBUG(1186, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1187;
- if (yych != 'd') goto yy57;
-yy1187:
- YYDEBUG(1187, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1188;
- if (yych != 'a') goto yy57;
-yy1188:
- YYDEBUG(1188, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1189:
- YYDEBUG(1189, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ' ') {
- if (yych == '\t') goto yy1119;
- if (yych <= 0x1F) goto yy1118;
- goto yy1119;
- } else {
- if (yych <= 'D') {
- if (yych <= 'C') goto yy1118;
- } else {
- if (yych != 'd') goto yy1118;
- }
- }
- YYDEBUG(1190, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1191;
- if (yych != 'a') goto yy57;
-yy1191:
- YYDEBUG(1191, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1124;
- if (yych == 'y') goto yy1124;
- goto yy57;
-yy1192:
- YYDEBUG(1192, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1099;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'e') goto yy1193;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1193:
- YYDEBUG(1193, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'U') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'V') goto yy1100;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'u') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'v') goto yy1194;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1194:
- YYDEBUG(1194, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'H') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'I') goto yy1101;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'h') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'i') goto yy1195;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1195:
- YYDEBUG(1195, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'O') goto yy1102;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'n') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'o') goto yy1196;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1196:
- YYDEBUG(1196, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'U') goto yy1103;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'u') goto yy1197;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1197:
- YYDEBUG(1197, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy1104;
- if (yych != 's') goto yy155;
- YYDEBUG(1198, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy1105;
- } else {
- if (yych == ' ') goto yy1105;
- goto yy57;
- }
- } else {
- if (yych <= '/') {
- if (yych == '.') goto yy57;
- goto yy148;
- } else {
- if (yych == '_') goto yy148;
- goto yy57;
- }
- }
-yy1199:
- YYDEBUG(1199, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'G') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'F') goto yy142;
- goto yy1213;
- }
- } else {
- if (yych <= 'f') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'g') goto yy1213;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1200:
- YYDEBUG(1200, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy142;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'e') goto yy1201;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1201:
- YYDEBUG(1201, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'V') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'U') goto yy143;
- }
- } else {
- if (yych <= 'u') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'v') goto yy1202;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1202:
- YYDEBUG(1202, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy144;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'e') goto yy1203;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1203:
- YYDEBUG(1203, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy145;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'n') goto yy1204;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1204:
- YYDEBUG(1204, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'T') goto yy1205;
- if (yych != 't') goto yy4;
- }
-yy1205:
- YYDEBUG(1205, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy1206;
- if (yych != 'h') goto yy57;
-yy1206:
- YYDEBUG(1206, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\t') goto yy1207;
- if (yych != ' ') goto yy57;
-yy1207:
- YYDEBUG(1207, *YYCURSOR);
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
- yych = *YYCURSOR;
-yy1208:
- YYDEBUG(1208, *YYCURSOR);
- if (yych <= 'W') {
- if (yych <= 'F') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1207;
- if (yych <= 0x1F) goto yy57;
- goto yy1207;
- } else {
- if (yych == 'D') goto yy1110;
- if (yych <= 'E') goto yy57;
- goto yy1111;
- }
- } else {
- if (yych <= 'M') {
- if (yych == 'H') goto yy1109;
- if (yych <= 'L') goto yy57;
- goto yy1108;
- } else {
- if (yych <= 'S') {
- if (yych <= 'R') goto yy57;
- goto yy1107;
- } else {
- if (yych <= 'T') goto yy1114;
- if (yych <= 'V') goto yy57;
- }
- }
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'd') {
- if (yych == 'Y') goto yy1112;
- if (yych <= 'c') goto yy57;
- goto yy1110;
- } else {
- if (yych <= 'f') {
- if (yych <= 'e') goto yy57;
- goto yy1111;
- } else {
- if (yych == 'h') goto yy1109;
- goto yy57;
- }
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'm') goto yy1108;
- if (yych <= 'r') goto yy57;
- if (yych <= 's') goto yy1107;
- goto yy1114;
- } else {
- if (yych <= 'w') {
- if (yych <= 'v') goto yy57;
- } else {
- if (yych == 'y') goto yy1112;
- goto yy57;
- }
- }
- }
- }
- YYDEBUG(1209, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1210;
- if (yych != 'e') goto yy57;
-yy1210:
- YYDEBUG(1210, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= 'C') goto yy57;
- if (yych <= 'D') goto yy1135;
- } else {
- if (yych <= 'c') goto yy57;
- if (yych <= 'd') goto yy1135;
- if (yych >= 'f') goto yy57;
- }
- YYDEBUG(1211, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'K') goto yy1212;
- if (yych != 'k') goto yy57;
-yy1212:
- YYDEBUG(1212, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych == 'D') goto yy1144;
- if (yych <= 'R') goto yy57;
- goto yy1143;
- } else {
- if (yych <= 'd') {
- if (yych <= 'c') goto yy57;
- goto yy1144;
- } else {
- if (yych == 's') goto yy1143;
- goto yy57;
- }
- }
-yy1213:
- YYDEBUG(1213, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy143;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'h') goto yy1214;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1214:
- YYDEBUG(1214, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy144;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 't') goto yy1215;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1215:
- YYDEBUG(1215, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1207;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy1207;
- if (yych == ')') goto yy140;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych == 'H') goto yy1216;
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych == 'h') goto yy1216;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1216:
- YYDEBUG(1216, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1207;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy1207;
- if (yych == ')') goto yy140;
- goto yy4;
- }
-yy1217:
- YYDEBUG(1217, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'F') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'G') goto yy1213;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'f') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'g') goto yy1225;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1218:
- YYDEBUG(1218, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1201;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'e') goto yy1219;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1219:
- YYDEBUG(1219, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'U') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'V') goto yy1202;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'u') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'v') goto yy1220;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1220:
- YYDEBUG(1220, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1203;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'e') goto yy1221;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1221:
- YYDEBUG(1221, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1204;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'n') goto yy1222;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1222:
- YYDEBUG(1222, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'T') goto yy1205;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 't') goto yy1223;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1223:
- YYDEBUG(1223, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'H') goto yy1206;
- if (yych != 'h') goto yy155;
-yy1224:
- YYDEBUG(1224, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= ',') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy57;
- goto yy1207;
- } else {
- if (yych == ' ') goto yy1207;
- goto yy57;
- }
- } else {
- if (yych <= '/') {
- if (yych == '.') goto yy57;
- goto yy148;
- } else {
- if (yych == '_') goto yy148;
- goto yy57;
- }
- }
-yy1225:
- YYDEBUG(1225, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1214;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'h') goto yy1226;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1226:
- YYDEBUG(1226, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1215;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 't') goto yy1227;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1227:
- YYDEBUG(1227, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy1207;
- } else {
- if (yych == ' ') goto yy1207;
- goto yy4;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- goto yy148;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'G') {
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'H') goto yy1216;
- if (yych <= 'Z') goto yy145;
- goto yy4;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'h') goto yy1228;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1228:
- YYDEBUG(1228, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= ')') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1207;
- goto yy4;
- } else {
- if (yych <= ' ') goto yy1207;
- if (yych <= '(') goto yy4;
- goto yy140;
- }
- } else {
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy4;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy4;
- }
- }
-yy1229:
- YYDEBUG(1229, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'V') {
- if (yych <= 'B') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'O') {
- if (yych <= 'C') goto yy1245;
- goto yy142;
- } else {
- if (yych <= 'P') goto yy1247;
- if (yych <= 'U') goto yy142;
- goto yy1246;
- }
- }
- } else {
- if (yych <= 'o') {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy142;
- goto yy4;
- } else {
- if (yych == 'c') goto yy1245;
- goto yy142;
- }
- } else {
- if (yych <= 'u') {
- if (yych <= 'p') goto yy1247;
- goto yy142;
- } else {
- if (yych <= 'v') goto yy1246;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- }
-yy1230:
- YYDEBUG(1230, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy142;
- goto yy1240;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 't') goto yy1240;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1231:
- YYDEBUG(1231, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'X') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'W') goto yy142;
- goto yy1237;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'x') goto yy1237;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1232:
- YYDEBUG(1232, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy142;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'n') goto yy1233;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1233:
- YYDEBUG(1233, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'C') goto yy143;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 'd') goto yy1234;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1234:
- YYDEBUG(1234, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1235;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1235:
- YYDEBUG(1235, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'X') goto yy145;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'y') goto yy1236;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1236:
- YYDEBUG(1236, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == ')') goto yy140;
- goto yy167;
-yy1237:
- YYDEBUG(1237, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1238;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1238:
- YYDEBUG(1238, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy144;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'h') goto yy1239;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1239:
- YYDEBUG(1239, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy1207;
- } else {
- if (yych == ' ') goto yy1207;
- goto yy4;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1240:
- YYDEBUG(1240, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'T') goto yy143;
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 'u') goto yy1241;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1241:
- YYDEBUG(1241, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy144;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'r') goto yy1242;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1242:
- YYDEBUG(1242, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy145;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'd') goto yy1243;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1243:
- YYDEBUG(1243, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'A') goto yy1244;
- if (yych != 'a') goto yy4;
- }
-yy1244:
- YYDEBUG(1244, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy173;
- goto yy57;
-yy1245:
- YYDEBUG(1245, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'N') goto yy143;
- goto yy1256;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'o') goto yy1256;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1246:
- YYDEBUG(1246, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy143;
- goto yy1253;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'e') goto yy1253;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1247:
- YYDEBUG(1247, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'T') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1248;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy1248:
- YYDEBUG(1248, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'E') goto yy144;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy194;
- goto yy144;
- } else {
- if (yych <= 'e') goto yy1249;
- if (yych <= 'z') goto yy144;
- goto yy194;
- }
- }
- }
-yy1249:
- YYDEBUG(1249, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'M') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'L') goto yy145;
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'm') goto yy1250;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1250:
- YYDEBUG(1250, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'B') goto yy1251;
- if (yych != 'b') goto yy4;
- }
-yy1251:
- YYDEBUG(1251, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1252;
- if (yych != 'e') goto yy57;
-yy1252:
- YYDEBUG(1252, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych == 'r') goto yy206;
- goto yy57;
-yy1253:
- YYDEBUG(1253, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy144;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'n') goto yy1254;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1254:
- YYDEBUG(1254, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy145;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 't') goto yy1255;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1255:
- YYDEBUG(1255, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'H') goto yy1206;
- if (yych == 'h') goto yy1206;
- goto yy4;
- }
-yy1256:
- YYDEBUG(1256, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy144;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'n') goto yy1257;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1257:
- YYDEBUG(1257, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy145;
- goto yy1216;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'd') goto yy1216;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1258:
- YYDEBUG(1258, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'U') {
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= 'C') {
- if (yych <= '@') goto yy4;
- if (yych <= 'B') goto yy142;
- goto yy1245;
- } else {
- if (yych == 'P') goto yy1247;
- goto yy142;
- }
- }
- } else {
- if (yych <= 'b') {
- if (yych <= '^') {
- if (yych <= 'V') goto yy1246;
- if (yych <= 'Z') goto yy142;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- goto yy147;
- }
- } else {
- if (yych <= 'p') {
- if (yych <= 'c') goto yy1274;
- if (yych <= 'o') goto yy147;
- goto yy1276;
- } else {
- if (yych == 'v') goto yy1275;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1259:
- YYDEBUG(1259, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1240;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 't') goto yy1269;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1260:
- YYDEBUG(1260, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'W') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'X') goto yy1237;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'w') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'x') goto yy1266;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1261:
- YYDEBUG(1261, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1233;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy1262;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1262:
- YYDEBUG(1262, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1234;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'd') goto yy1263;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1263:
- YYDEBUG(1263, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1235;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1264;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
-yy1264:
- YYDEBUG(1264, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'Y') goto yy1236;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'x') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'y') goto yy1265;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1265:
- YYDEBUG(1265, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych <= '/') {
- if (yych <= '.') goto yy167;
- goto yy148;
- } else {
- if (yych == '_') goto yy148;
- goto yy167;
- }
- }
-yy1266:
- YYDEBUG(1266, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1238;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1267;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1267:
- YYDEBUG(1267, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1239;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'h') goto yy1268;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1268:
- YYDEBUG(1268, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1207;
- if (yych <= 0x1F) goto yy4;
- goto yy1207;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= 'Z') {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1269:
- YYDEBUG(1269, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'U') goto yy1241;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 't') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'u') goto yy1270;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1270:
- YYDEBUG(1270, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1242;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'r') goto yy1271;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1271:
- YYDEBUG(1271, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1243;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'd') goto yy1272;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1272:
- YYDEBUG(1272, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1244;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1273;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1273:
- YYDEBUG(1273, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy186;
- goto yy155;
-yy1274:
- YYDEBUG(1274, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'O') goto yy1256;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'n') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'o') goto yy1285;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1275:
- YYDEBUG(1275, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1253;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'e') goto yy1282;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1276:
- YYDEBUG(1276, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'S') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'T') goto yy1248;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 's') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1277;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy1277:
- YYDEBUG(1277, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'D') {
- if (yych <= '@') goto yy194;
- goto yy144;
- } else {
- if (yych <= 'E') goto yy1249;
- if (yych <= 'Z') goto yy144;
- goto yy194;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy152;
- } else {
- if (yych <= 'e') goto yy1278;
- if (yych <= 'z') goto yy152;
- goto yy194;
- }
- }
- }
-yy1278:
- YYDEBUG(1278, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'M') goto yy1250;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'l') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'm') goto yy1279;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1279:
- YYDEBUG(1279, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'B') goto yy1251;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'b') goto yy1280;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1280:
- YYDEBUG(1280, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy1252;
- if (yych != 'e') goto yy155;
- YYDEBUG(1281, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych == 'r') goto yy377;
- goto yy155;
-yy1282:
- YYDEBUG(1282, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1254;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'n') goto yy1283;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1283:
- YYDEBUG(1283, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1255;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 't') goto yy1284;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1284:
- YYDEBUG(1284, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'H') goto yy1206;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'h') goto yy1224;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1285:
- YYDEBUG(1285, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1257;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'n') goto yy1286;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1286:
- YYDEBUG(1286, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1216;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'd') goto yy1228;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1287:
- YYDEBUG(1287, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'C') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'B') goto yy142;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'c') goto yy1288;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1288:
- YYDEBUG(1288, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'K') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'J') goto yy143;
- }
- } else {
- if (yych <= 'j') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'k') goto yy1289;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1289:
- YYDEBUG(1289, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ')') {
- if (yych == ' ') goto yy1290;
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy4;
- goto yy144;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1290:
- YYDEBUG(1290, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1291;
- if (yych != 'o') goto yy57;
-yy1291:
- YYDEBUG(1291, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy1292;
- if (yych != 'f') goto yy57;
-yy1292:
- YYDEBUG(1292, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ' ') goto yy57;
- YYDEBUG(1293, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy1294;
- if (yych <= '2') goto yy1296;
- if (yych <= '9') goto yy1297;
- goto yy57;
-yy1294:
- YYDEBUG(1294, *YYCURSOR);
- yyaccept = 28;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy1298;
- if (yych <= '9') goto yy1297;
- goto yy1298;
-yy1295:
- YYDEBUG(1295, *YYCURSOR);
-#line 1091 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("backof | frontof");
- TIMELIB_INIT;
- TIMELIB_UNHAVE_TIME();
- TIMELIB_HAVE_TIME();
-
- if (*ptr == 'b') {
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = 15;
- } else {
- s->time->h = timelib_get_nr((char **) &ptr, 2) - 1;
- s->time->i = 45;
- }
- if (*ptr != '\0' ) {
- timelib_eat_spaces((char **) &ptr);
- s->time->h += timelib_meridian((char **) &ptr, s->time->h);
- }
-
- TIMELIB_DEINIT;
- return TIMELIB_LF_DAY_OF_MONTH;
- }
-#line 19655 "ext/date/lib/parse_date.c"
-yy1296:
- YYDEBUG(1296, *YYCURSOR);
- yyaccept = 28;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy1298;
- if (yych >= '5') goto yy1298;
-yy1297:
- YYDEBUG(1297, *YYCURSOR);
- yyaccept = 28;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
-yy1298:
- YYDEBUG(1298, *YYCURSOR);
- if (yych <= 'A') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1297;
- goto yy1295;
- } else {
- if (yych <= ' ') goto yy1297;
- if (yych <= '@') goto yy1295;
- }
- } else {
- if (yych <= '`') {
- if (yych != 'P') goto yy1295;
- } else {
- if (yych <= 'a') goto yy1299;
- if (yych != 'p') goto yy1295;
- }
- }
-yy1299:
- YYDEBUG(1299, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy1301;
- if (yych == 'm') goto yy1301;
- goto yy57;
- }
- YYDEBUG(1300, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy1301;
- if (yych != 'm') goto yy57;
-yy1301:
- YYDEBUG(1301, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy1303;
- if (yych == '\t') goto yy1303;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy1303;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(1302, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy1303;
- if (yych <= 0x08) goto yy57;
- } else {
- if (yych != ' ') goto yy57;
- }
-yy1303:
- YYDEBUG(1303, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy1295;
-yy1304:
- YYDEBUG(1304, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'B') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'C') goto yy1288;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'b') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'c') goto yy1305;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1305:
- YYDEBUG(1305, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'J') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'K') goto yy1289;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'j') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'k') goto yy1306;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1306:
- YYDEBUG(1306, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= '(') {
- if (yych == ' ') goto yy1290;
- goto yy4;
- } else {
- if (yych <= ')') goto yy140;
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '/') goto yy148;
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
-yy1307:
- YYDEBUG(1307, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy142;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 's') goto yy1308;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1308:
- YYDEBUG(1308, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1309;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1309:
- YYDEBUG(1309, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy1105;
- } else {
- if (yych != ' ') goto yy4;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy144;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1310:
- YYDEBUG(1310, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1311;
- if (yych != 'd') goto yy1106;
-yy1311:
- YYDEBUG(1311, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1312;
- if (yych != 'a') goto yy57;
-yy1312:
- YYDEBUG(1312, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1313;
- if (yych != 'y') goto yy57;
-yy1313:
- YYDEBUG(1313, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych != ' ') goto yy1118;
- } else {
- if (yych <= 'S') goto yy1143;
- if (yych == 's') goto yy1143;
- goto yy1118;
- }
- YYDEBUG(1314, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1315;
- if (yych != 'o') goto yy57;
-yy1315:
- YYDEBUG(1315, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy1316;
- if (yych != 'f') goto yy57;
-yy1316:
- YYDEBUG(1316, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy2;
-yy1317:
- YYDEBUG(1317, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy1308;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 's') goto yy1318;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1318:
- YYDEBUG(1318, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1309;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1319;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1319:
- YYDEBUG(1319, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1105;
- if (yych <= 0x1F) goto yy4;
- goto yy1310;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= 'Z') {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1320:
- YYDEBUG(1320, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'B') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy142;
- goto yy1356;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'b') goto yy1356;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1321:
- YYDEBUG(1321, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'F') goto yy1346;
- if (yych <= 'Q') goto yy142;
- goto yy1345;
- }
- } else {
- if (yych <= 'f') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'e') goto yy142;
- goto yy1346;
- } else {
- if (yych == 'r') goto yy1345;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1322:
- YYDEBUG(1322, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'T') goto yy142;
- goto yy1342;
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'u') goto yy1342;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1323:
- YYDEBUG(1323, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1325;
- if (yych <= 'N') goto yy142;
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'h') goto yy142;
- goto yy1325;
- } else {
- if (yych == 'o') goto yy1324;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1324:
- YYDEBUG(1324, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy143;
- goto yy1328;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'n') goto yy1328;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1325:
- YYDEBUG(1325, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'C') goto yy143;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 'd') goto yy1326;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1326:
- YYDEBUG(1326, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1327;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1327:
- YYDEBUG(1327, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'X') goto yy145;
- goto yy1236;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'y') goto yy1236;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1328:
- YYDEBUG(1328, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy144;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 't') goto yy1329;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1329:
- YYDEBUG(1329, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= ')') {
- if (yych == ' ') goto yy1330;
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1330:
- YYDEBUG(1330, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1331;
- if (yych != 'o') goto yy57;
-yy1331:
- YYDEBUG(1331, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy1332;
- if (yych != 'f') goto yy57;
-yy1332:
- YYDEBUG(1332, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != ' ') goto yy57;
- YYDEBUG(1333, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '1') goto yy1334;
- if (yych <= '2') goto yy1335;
- if (yych <= '9') goto yy1336;
- goto yy57;
-yy1334:
- YYDEBUG(1334, *YYCURSOR);
- yyaccept = 28;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy1337;
- if (yych <= '9') goto yy1336;
- goto yy1337;
-yy1335:
- YYDEBUG(1335, *YYCURSOR);
- yyaccept = 28;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy1337;
- if (yych >= '5') goto yy1337;
-yy1336:
- YYDEBUG(1336, *YYCURSOR);
- yyaccept = 28;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
-yy1337:
- YYDEBUG(1337, *YYCURSOR);
- if (yych <= 'A') {
- if (yych <= 0x1F) {
- if (yych == '\t') goto yy1336;
- goto yy1295;
- } else {
- if (yych <= ' ') goto yy1336;
- if (yych <= '@') goto yy1295;
- }
- } else {
- if (yych <= '`') {
- if (yych != 'P') goto yy1295;
- } else {
- if (yych <= 'a') goto yy1338;
- if (yych != 'p') goto yy1295;
- }
- }
-yy1338:
- YYDEBUG(1338, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych != '.') goto yy57;
- } else {
- if (yych <= 'M') goto yy1340;
- if (yych == 'm') goto yy1340;
- goto yy57;
- }
- YYDEBUG(1339, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'M') goto yy1340;
- if (yych != 'm') goto yy57;
-yy1340:
- YYDEBUG(1340, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= 0x00) goto yy1303;
- if (yych == '\t') goto yy1303;
- goto yy57;
- } else {
- if (yych <= ' ') goto yy1303;
- if (yych != '.') goto yy57;
- }
- YYDEBUG(1341, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '\t') {
- if (yych <= 0x00) goto yy1303;
- if (yych <= 0x08) goto yy57;
- goto yy1303;
- } else {
- if (yych == ' ') goto yy1303;
- goto yy57;
- }
-yy1342:
- YYDEBUG(1342, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy143;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'r') goto yy1343;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1343:
- YYDEBUG(1343, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy144;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 't') goto yy1344;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1344:
- YYDEBUG(1344, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy145;
- goto yy1216;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'h') goto yy1216;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1345:
- YYDEBUG(1345, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy143;
- goto yy1348;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 's') goto yy1348;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1346:
- YYDEBUG(1346, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1347;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1347:
- YYDEBUG(1347, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy144;
- goto yy1239;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'h') goto yy1239;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1348:
- YYDEBUG(1348, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy144;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 't') goto yy1349;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1349:
- YYDEBUG(1349, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy1207;
- } else {
- if (yych != ' ') goto yy4;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1350:
- YYDEBUG(1350, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'D') goto yy1351;
- if (yych != 'd') goto yy1208;
-yy1351:
- YYDEBUG(1351, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1352;
- if (yych != 'a') goto yy57;
-yy1352:
- YYDEBUG(1352, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1353;
- if (yych != 'y') goto yy57;
-yy1353:
- YYDEBUG(1353, *YYCURSOR);
- yyaccept = 26;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych != ' ') goto yy1118;
- } else {
- if (yych <= 'S') goto yy1143;
- if (yych == 's') goto yy1143;
- goto yy1118;
- }
- YYDEBUG(1354, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'O') goto yy1355;
- if (yych != 'o') goto yy57;
-yy1355:
- YYDEBUG(1355, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy1316;
- if (yych == 'f') goto yy1316;
- goto yy57;
-yy1356:
- YYDEBUG(1356, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'R') goto yy143;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'r') goto yy1357;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy1357:
- YYDEBUG(1357, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'T') goto yy144;
- }
- } else {
- if (yych <= 't') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'u') goto yy1358;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1358:
- YYDEBUG(1358, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1359;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1359:
- YYDEBUG(1359, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'R') goto yy1360;
- if (yych != 'r') goto yy4;
- }
-yy1360:
- YYDEBUG(1360, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy206;
- if (yych == 'y') goto yy206;
- goto yy57;
-yy1361:
- YYDEBUG(1361, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'B') goto yy1356;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'b') goto yy1379;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1362:
- YYDEBUG(1362, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'F') goto yy1346;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'R') goto yy1345;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'q') {
- if (yych == 'f') goto yy1375;
- goto yy147;
- } else {
- if (yych <= 'r') goto yy1374;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1363:
- YYDEBUG(1363, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'U') goto yy1342;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 't') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'u') goto yy1371;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1364:
- YYDEBUG(1364, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1325;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'O') goto yy1324;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'n') {
- if (yych == 'i') goto yy1366;
- goto yy147;
- } else {
- if (yych <= 'o') goto yy1365;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1365:
- YYDEBUG(1365, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1328;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'n') goto yy1369;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1366:
- YYDEBUG(1366, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1326;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'd') goto yy1367;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1367:
- YYDEBUG(1367, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1327;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1368;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
-yy1368:
- YYDEBUG(1368, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'Y') goto yy1236;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'x') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'y') goto yy1265;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1369:
- YYDEBUG(1369, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1329;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 't') goto yy1370;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1370:
- YYDEBUG(1370, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= '(') {
- if (yych == ' ') goto yy1330;
- goto yy4;
- } else {
- if (yych <= ')') goto yy140;
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '/') goto yy148;
- if (yych <= '@') goto yy4;
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
-yy1371:
- YYDEBUG(1371, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1343;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'r') goto yy1372;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1372:
- YYDEBUG(1372, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1344;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 't') goto yy1373;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1373:
- YYDEBUG(1373, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1216;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'h') goto yy1228;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1374:
- YYDEBUG(1374, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy1348;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 's') goto yy1377;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1375:
- YYDEBUG(1375, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1347;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1376;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1376:
- YYDEBUG(1376, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1239;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'h') goto yy1268;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1377:
- YYDEBUG(1377, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1349;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 't') goto yy1378;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1378:
- YYDEBUG(1378, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1207;
- if (yych <= 0x1F) goto yy4;
- goto yy1350;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= 'Z') {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1379:
- YYDEBUG(1379, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'Q') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'R') goto yy1357;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'r') goto yy1380;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy1380:
- YYDEBUG(1380, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'U') goto yy1358;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 't') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'u') goto yy1381;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1381:
- YYDEBUG(1381, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1359;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1382;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
-yy1382:
- YYDEBUG(1382, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'R') goto yy1360;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'r') goto yy1383;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1383:
- YYDEBUG(1383, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy206;
- if (yych == 'y') goto yy377;
- goto yy155;
-yy1384:
- YYDEBUG(1384, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
-yy1385:
- YYDEBUG(1385, *YYCURSOR);
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- YYDEBUG(1386, *YYCURSOR);
- if (yych <= '/') goto yy1387;
- if (yych <= '9') goto yy1385;
-yy1387:
- YYDEBUG(1387, *YYCURSOR);
-#line 1049 "ext/date/lib/parse_date.re"
- {
- timelib_ull i;
-
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
- TIMELIB_UNHAVE_DATE();
- TIMELIB_UNHAVE_TIME();
- TIMELIB_HAVE_TZ();
-
- i = timelib_get_unsigned_nr((char **) &ptr, 24);
- s->time->y = 1970;
- s->time->m = 1;
- s->time->d = 1;
- s->time->h = s->time->i = s->time->s = 0;
- s->time->f = 0.0;
- s->time->relative.s += i;
- s->time->is_localtime = 1;
- s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
- s->time->z = 0;
-
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 21370 "ext/date/lib/parse_date.c"
-yy1388:
- YYDEBUG(1388, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy142;
- goto yy1429;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'n') goto yy1429;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1389:
- YYDEBUG(1389, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'U') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1421;
- if (yych <= 'T') goto yy142;
- goto yy1422;
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'h') goto yy142;
- goto yy1421;
- } else {
- if (yych == 'u') goto yy1422;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1390:
- YYDEBUG(1390, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'M') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'D') goto yy1410;
- if (yych <= 'L') goto yy142;
- goto yy1411;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'c') goto yy142;
- goto yy1410;
- } else {
- if (yych == 'm') goto yy1411;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1391:
- YYDEBUG(1391, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy142;
- goto yy1406;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'e') goto yy1406;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1392:
- YYDEBUG(1392, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy142;
- goto yy1402;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'e') goto yy1402;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1393:
- YYDEBUG(1393, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy1065;
- goto yy57;
- } else {
- if (yych <= '9') goto yy1396;
- if (yych <= ':') goto yy1065;
- goto yy57;
- }
-yy1394:
- YYDEBUG(1394, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy1065;
- goto yy57;
- } else {
- if (yych <= '4') goto yy1396;
- if (yych == ':') goto yy1065;
- goto yy57;
- }
-yy1395:
- YYDEBUG(1395, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '.') goto yy1065;
- if (yych == ':') goto yy1065;
- goto yy57;
-yy1396:
- YYDEBUG(1396, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy1065;
- goto yy57;
- } else {
- if (yych <= '5') goto yy1397;
- if (yych == ':') goto yy1065;
- goto yy57;
- }
-yy1397:
- YYDEBUG(1397, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych >= ':') goto yy57;
- YYDEBUG(1398, *YYCURSOR);
- yyaccept = 24;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy1068;
- if (yych <= '5') goto yy1399;
- if (yych <= '6') goto yy1400;
- goto yy1068;
-yy1399:
- YYDEBUG(1399, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy57;
- if (yych <= '9') goto yy1401;
- goto yy57;
-yy1400:
- YYDEBUG(1400, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych != '0') goto yy57;
-yy1401:
- YYDEBUG(1401, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy1076;
-yy1402:
- YYDEBUG(1402, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'L') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'K') goto yy143;
- }
- } else {
- if (yych <= 'k') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'l') goto yy1403;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1403:
- YYDEBUG(1403, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'F') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'E') goto yy144;
- }
- } else {
- if (yych <= 'e') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'f') goto yy1404;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1404:
- YYDEBUG(1404, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy145;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 't') goto yy1405;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1405:
- YYDEBUG(1405, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'H') goto yy1206;
- if (yych == 'h') goto yy1206;
- goto yy4;
- }
-yy1406:
- YYDEBUG(1406, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'R') goto yy143;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 's') goto yy1407;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1407:
- YYDEBUG(1407, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy144;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'd') goto yy1408;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1408:
- YYDEBUG(1408, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy145;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1409;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1409:
- YYDEBUG(1409, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'X') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Y') goto yy173;
- if (yych == 'y') goto yy173;
- goto yy4;
- }
-yy1410:
- YYDEBUG(1410, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy1418;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy143;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1418;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1411:
- YYDEBUG(1411, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'O') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'N') goto yy143;
- }
- } else {
- if (yych <= 'n') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'o') goto yy1412;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1412:
- YYDEBUG(1412, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy144;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'r') goto yy1413;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1413:
- YYDEBUG(1413, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy145;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'r') goto yy1414;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1414:
- YYDEBUG(1414, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'O') goto yy1415;
- if (yych != 'o') goto yy4;
- }
-yy1415:
- YYDEBUG(1415, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'W') goto yy1416;
- if (yych != 'w') goto yy57;
-yy1416:
- YYDEBUG(1416, *YYCURSOR);
- ++YYCURSOR;
-yy1417:
- YYDEBUG(1417, *YYCURSOR);
-#line 1037 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("tomorrow");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
- TIMELIB_UNHAVE_TIME();
-
- s->time->relative.d = 1;
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 21817 "ext/date/lib/parse_date.c"
-yy1418:
- YYDEBUG(1418, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'X') goto yy144;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'y') goto yy1419;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1419:
- YYDEBUG(1419, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '@') {
- if (yych == ')') goto yy140;
- } else {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy1420;
- if (yych <= 'z') goto yy145;
- }
-yy1420:
- YYDEBUG(1420, *YYCURSOR);
-#line 1027 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("midnight | today");
- TIMELIB_INIT;
- TIMELIB_UNHAVE_TIME();
-
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 21861 "ext/date/lib/parse_date.c"
-yy1421:
- YYDEBUG(1421, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'Q') goto yy143;
- if (yych <= 'R') goto yy1427;
- goto yy1428;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'r') goto yy1427;
- if (yych <= 's') goto yy1428;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1422:
- YYDEBUG(1422, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'Q') goto yy143;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 'r') goto yy1423;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1423:
- YYDEBUG(1423, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy144;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 's') goto yy1424;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1424:
- YYDEBUG(1424, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy145;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'd') goto yy1425;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1425:
- YYDEBUG(1425, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'A') goto yy1426;
- if (yych != 'a') goto yy4;
- }
-yy1426:
- YYDEBUG(1426, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy173;
- goto yy57;
-yy1427:
- YYDEBUG(1427, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy144;
- goto yy1239;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'd') goto yy1239;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1428:
- YYDEBUG(1428, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy4;
- goto yy1105;
- } else {
- if (yych == ' ') goto yy1105;
- goto yy4;
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy144;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1429:
- YYDEBUG(1429, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1430;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1430:
- YYDEBUG(1430, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy144;
- goto yy1239;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'h') goto yy1239;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1431:
- YYDEBUG(1431, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1429;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy1461;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1432:
- YYDEBUG(1432, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'T') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'I') goto yy1421;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'U') goto yy1422;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 't') {
- if (yych == 'i') goto yy1453;
- goto yy147;
- } else {
- if (yych <= 'u') goto yy1454;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1433:
- YYDEBUG(1433, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'D') goto yy1410;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'M') goto yy1411;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'l') {
- if (yych == 'd') goto yy1444;
- goto yy147;
- } else {
- if (yych <= 'm') goto yy1445;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1434:
- YYDEBUG(1434, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1406;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'e') goto yy1440;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1435:
- YYDEBUG(1435, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1402;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'e') goto yy1436;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1436:
- YYDEBUG(1436, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'K') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'L') goto yy1403;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'k') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'l') goto yy1437;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1437:
- YYDEBUG(1437, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'E') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'F') goto yy1404;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'e') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'f') goto yy1438;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1438:
- YYDEBUG(1438, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1405;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 't') goto yy1439;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1439:
- YYDEBUG(1439, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'H') goto yy1206;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'h') goto yy1224;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1440:
- YYDEBUG(1440, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy1407;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 's') goto yy1441;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1441:
- YYDEBUG(1441, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1408;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'd') goto yy1442;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1442:
- YYDEBUG(1442, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1409;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1443;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
-yy1443:
- YYDEBUG(1443, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Y') goto yy173;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'y') goto yy186;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1444:
- YYDEBUG(1444, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1418;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1451;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
-yy1445:
- YYDEBUG(1445, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'O') goto yy1412;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'n') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'o') goto yy1446;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1446:
- YYDEBUG(1446, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1413;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'r') goto yy1447;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1447:
- YYDEBUG(1447, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1414;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'r') goto yy1448;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1448:
- YYDEBUG(1448, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'N') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'O') goto yy1415;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'o') goto yy1449;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1449:
- YYDEBUG(1449, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'W') goto yy1416;
- if (yych != 'w') goto yy155;
- YYDEBUG(1450, *YYCURSOR);
- yyaccept = 29;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy1417;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy1417;
- }
-yy1451:
- YYDEBUG(1451, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'Y') goto yy1419;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'x') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'y') goto yy1452;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1452:
- YYDEBUG(1452, *YYCURSOR);
- yyaccept = 30;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy1420;
- } else {
- if (yych == '.') goto yy1420;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy1420;
- if (yych <= 'Z') goto yy145;
- goto yy1420;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy1420;
- if (yych <= 'z') goto yy153;
- goto yy1420;
- }
- }
-yy1453:
- YYDEBUG(1453, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych <= '/') {
- if (yych <= '.') goto yy4;
- goto yy148;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy143;
- goto yy1427;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'S') goto yy1428;
- goto yy143;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'q') goto yy151;
- goto yy1459;
- } else {
- if (yych <= 's') goto yy1460;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1454:
- YYDEBUG(1454, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1423;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'r') goto yy1455;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1455:
- YYDEBUG(1455, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy1424;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 's') goto yy1456;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1456:
- YYDEBUG(1456, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1425;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'd') goto yy1457;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1457:
- YYDEBUG(1457, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1426;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1458;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1458:
- YYDEBUG(1458, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy173;
- if (yych == 'y') goto yy186;
- goto yy155;
-yy1459:
- YYDEBUG(1459, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1239;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'd') goto yy1268;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1460:
- YYDEBUG(1460, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy1105;
- if (yych <= 0x1F) goto yy4;
- goto yy1105;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- }
- } else {
- if (yych <= 'Z') {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1461:
- YYDEBUG(1461, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1430;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1462;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1462:
- YYDEBUG(1462, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1239;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'h') goto yy1268;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1463:
- YYDEBUG(1463, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych <= '@') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == 'R') goto yy1475;
- if (yych <= 'X') goto yy142;
- goto yy1476;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'q') goto yy142;
- goto yy1475;
- } else {
- if (yych == 'y') goto yy1476;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1464:
- YYDEBUG(1464, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'C') goto yy142;
- goto yy1469;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'd') goto yy1469;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1465:
- YYDEBUG(1465, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy142;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'n') goto yy1466;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1466:
- YYDEBUG(1466, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'D') {
- if (yych <= ')') {
- if (yych <= '(') goto yy167;
- goto yy140;
- } else {
- if (yych <= '@') goto yy167;
- if (yych <= 'C') goto yy143;
- }
- } else {
- if (yych <= 'c') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy167;
- goto yy143;
- } else {
- if (yych <= 'd') goto yy1467;
- if (yych <= 'z') goto yy143;
- goto yy167;
- }
- }
-yy1467:
- YYDEBUG(1467, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'A') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') goto yy144;
- goto yy4;
- } else {
- if (yych <= 'a') goto yy1468;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1468:
- YYDEBUG(1468, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'Y') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'X') goto yy145;
- goto yy1236;
- }
- } else {
- if (yych <= 'x') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'y') goto yy1236;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1469:
- YYDEBUG(1469, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy143;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'n') goto yy1470;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1470:
- YYDEBUG(1470, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'I') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'H') goto yy144;
- }
- } else {
- if (yych <= 'h') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'i') goto yy1471;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1471:
- YYDEBUG(1471, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'G') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'F') goto yy145;
- }
- } else {
- if (yych <= 'f') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'g') goto yy1472;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1472:
- YYDEBUG(1472, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'H') goto yy1473;
- if (yych != 'h') goto yy4;
- }
-yy1473:
- YYDEBUG(1473, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1474;
- if (yych != 't') goto yy57;
-yy1474:
- YYDEBUG(1474, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy1420;
-yy1475:
- YYDEBUG(1475, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych == 'C') goto yy1477;
- goto yy143;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'c') goto yy1477;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy1476:
- YYDEBUG(1476, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '-') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy194;
- goto yy196;
- } else {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy197;
- }
- } else {
- if (yych <= '@') {
- if (yych == '/') goto yy194;
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
-yy1477:
- YYDEBUG(1477, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy144;
- goto yy396;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'h') goto yy396;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1478:
- YYDEBUG(1478, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '@') {
- if (yych <= '/') goto yy148;
- goto yy4;
- } else {
- if (yych == 'R') goto yy1475;
- goto yy142;
- }
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'Z') {
- if (yych <= 'Y') goto yy1476;
- goto yy142;
- } else {
- if (yych == '_') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'x') {
- if (yych == 'r') goto yy1490;
- goto yy147;
- } else {
- if (yych <= 'y') goto yy1491;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1479:
- YYDEBUG(1479, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1469;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'd') goto yy1484;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1480:
- YYDEBUG(1480, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1466;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy1481;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1481:
- YYDEBUG(1481, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy167;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy167;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'D') goto yy1467;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy167;
- goto yy148;
- } else {
- if (yych <= 'c') {
- if (yych <= '`') goto yy167;
- goto yy151;
- } else {
- if (yych <= 'd') goto yy1482;
- if (yych <= 'z') goto yy151;
- goto yy167;
- }
- }
- }
-yy1482:
- YYDEBUG(1482, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'A') goto yy1468;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= '`') goto yy4;
- if (yych <= 'a') goto yy1483;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
-yy1483:
- YYDEBUG(1483, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'X') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'Y') goto yy1236;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'x') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'y') goto yy1265;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1484:
- YYDEBUG(1484, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1470;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'n') goto yy1485;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1485:
- YYDEBUG(1485, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'H') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'I') goto yy1471;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'h') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'i') goto yy1486;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1486:
- YYDEBUG(1486, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'F') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'G') goto yy1472;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'f') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'g') goto yy1487;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1487:
- YYDEBUG(1487, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'H') goto yy1473;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'h') goto yy1488;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1488:
- YYDEBUG(1488, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'T') goto yy1474;
- if (yych != 't') goto yy155;
- YYDEBUG(1489, *YYCURSOR);
- yyaccept = 30;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy1420;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy1420;
- }
-yy1490:
- YYDEBUG(1490, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'B') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'C') goto yy1477;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'b') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'c') goto yy1492;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy1491:
- YYDEBUG(1491, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '.') {
- if (yych <= ' ') {
- if (yych == '\t') goto yy196;
- if (yych <= 0x1F) goto yy194;
- goto yy196;
- } else {
- if (yych <= ')') {
- if (yych <= '(') goto yy194;
- goto yy140;
- } else {
- if (yych <= ',') goto yy194;
- if (yych <= '-') goto yy372;
- goto yy196;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '/') goto yy148;
- if (yych <= '9') goto yy196;
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= '_') {
- if (yych <= '^') goto yy194;
- goto yy148;
- } else {
- if (yych <= '`') goto yy194;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy1492:
- YYDEBUG(1492, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy396;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'h') goto yy407;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1493:
- YYDEBUG(1493, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'W') {
- if (yych <= 'N') {
- if (yych == ')') goto yy140;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'O') goto yy1501;
- if (yych <= 'U') goto yy142;
- if (yych <= 'V') goto yy1502;
- goto yy1499;
- }
- } else {
- if (yych <= 'o') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- if (yych <= 'n') goto yy142;
- goto yy1501;
- } else {
- if (yych <= 'v') {
- if (yych <= 'u') goto yy142;
- goto yy1502;
- } else {
- if (yych <= 'w') goto yy1499;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
- }
-yy1494:
- YYDEBUG(1494, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'X') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'W') goto yy142;
- goto yy1498;
- }
- } else {
- if (yych <= 'w') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'x') goto yy1498;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1495:
- YYDEBUG(1495, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy142;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'n') goto yy1496;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1496:
- YYDEBUG(1496, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1497;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1497:
- YYDEBUG(1497, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'H') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'G') goto yy144;
- goto yy1239;
- }
- } else {
- if (yych <= 'g') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'h') goto yy1239;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1498:
- YYDEBUG(1498, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- goto yy1428;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1428;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1499:
- YYDEBUG(1499, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '@') {
- if (yych == ')') goto yy140;
- } else {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy1500;
- if (yych <= 'z') goto yy143;
- }
-yy1500:
- YYDEBUG(1500, *YYCURSOR);
-#line 1006 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("now");
- TIMELIB_INIT;
-
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 23881 "ext/date/lib/parse_date.c"
-yy1501:
- YYDEBUG(1501, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'N') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'M') goto yy143;
- goto yy1507;
- }
- } else {
- if (yych <= 'm') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 'n') goto yy1507;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1502:
- YYDEBUG(1502, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= ',') {
- if (yych <= ')') goto yy140;
- goto yy194;
- } else {
- if (yych <= '-') goto yy197;
- if (yych <= '.') goto yy196;
- goto yy194;
- }
- }
- } else {
- if (yych <= 'Z') {
- if (yych <= '@') {
- if (yych <= '9') goto yy196;
- goto yy194;
- } else {
- if (yych != 'E') goto yy143;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'e') goto yy1503;
- if (yych <= 'z') goto yy143;
- goto yy194;
- }
- }
- }
-yy1503:
- YYDEBUG(1503, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'M') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'L') goto yy144;
- }
- } else {
- if (yych <= 'l') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'm') goto yy1504;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1504:
- YYDEBUG(1504, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'B') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'A') goto yy145;
- }
- } else {
- if (yych <= 'a') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'b') goto yy1505;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1505:
- YYDEBUG(1505, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'E') goto yy1506;
- if (yych != 'e') goto yy4;
- }
-yy1506:
- YYDEBUG(1506, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych == 'r') goto yy206;
- goto yy57;
-yy1507:
- YYDEBUG(1507, *YYCURSOR);
- ++YYCURSOR;
- if ((yych = *YYCURSOR) <= '@') {
- if (yych == ')') goto yy140;
- } else {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy1508;
- if (yych <= 'z') goto yy144;
- }
-yy1508:
- YYDEBUG(1508, *YYCURSOR);
-#line 1015 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("noon");
- TIMELIB_INIT;
- TIMELIB_UNHAVE_TIME();
- TIMELIB_HAVE_TIME();
- s->time->h = 12;
-
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 24031 "ext/date/lib/parse_date.c"
-yy1509:
- YYDEBUG(1509, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'V') {
- if (yych <= '.') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych == '-') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= 'N') {
- if (yych <= '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- } else {
- if (yych <= 'O') goto yy1501;
- if (yych <= 'U') goto yy142;
- goto yy1502;
- }
- }
- } else {
- if (yych <= 'n') {
- if (yych <= '^') {
- if (yych <= 'W') goto yy1499;
- if (yych <= 'Z') goto yy142;
- goto yy4;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy4;
- goto yy147;
- }
- } else {
- if (yych <= 'v') {
- if (yych <= 'o') goto yy1516;
- if (yych <= 'u') goto yy147;
- goto yy1517;
- } else {
- if (yych <= 'w') goto yy1515;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1510:
- YYDEBUG(1510, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'W') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'X') goto yy1498;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'w') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'x') goto yy1514;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1511:
- YYDEBUG(1511, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1496;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 'n') goto yy1512;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1512:
- YYDEBUG(1512, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1497;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1513;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1513:
- YYDEBUG(1513, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'G') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'H') goto yy1239;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'g') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'h') goto yy1268;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1514:
- YYDEBUG(1514, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1428;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1460;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1515:
- YYDEBUG(1515, *YYCURSOR);
- yyaccept = 31;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy1500;
- } else {
- if (yych == '.') goto yy1500;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy1500;
- if (yych <= 'Z') goto yy143;
- goto yy1500;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy1500;
- if (yych <= 'z') goto yy151;
- goto yy1500;
- }
- }
-yy1516:
- YYDEBUG(1516, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'M') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'N') goto yy1507;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'm') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 'n') goto yy1522;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1517:
- YYDEBUG(1517, *YYCURSOR);
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '9') {
- if (yych <= '(') {
- if (yych <= '\t') {
- if (yych <= 0x08) goto yy194;
- goto yy196;
- } else {
- if (yych == ' ') goto yy196;
- goto yy194;
- }
- } else {
- if (yych <= '-') {
- if (yych <= ')') goto yy140;
- if (yych <= ',') goto yy194;
- goto yy372;
- } else {
- if (yych == '/') goto yy148;
- goto yy196;
- }
- }
- } else {
- if (yych <= '^') {
- if (yych <= 'D') {
- if (yych <= '@') goto yy194;
- goto yy143;
- } else {
- if (yych <= 'E') goto yy1503;
- if (yych <= 'Z') goto yy143;
- goto yy194;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy194;
- goto yy151;
- } else {
- if (yych <= 'e') goto yy1518;
- if (yych <= 'z') goto yy151;
- goto yy194;
- }
- }
- }
-yy1518:
- YYDEBUG(1518, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'L') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'M') goto yy1504;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'l') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'm') goto yy1519;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1519:
- YYDEBUG(1519, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'A') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'B') goto yy1505;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'a') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'b') goto yy1520;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1520:
- YYDEBUG(1520, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'E') goto yy1506;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'e') goto yy1521;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1521:
- YYDEBUG(1521, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'R') goto yy206;
- if (yych == 'r') goto yy377;
- goto yy155;
-yy1522:
- YYDEBUG(1522, *YYCURSOR);
- yyaccept = 32;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy1508;
- } else {
- if (yych == '.') goto yy1508;
- goto yy148;
- }
- } else {
- if (yych <= '^') {
- if (yych <= '@') goto yy1508;
- if (yych <= 'Z') goto yy144;
- goto yy1508;
- } else {
- if (yych <= '_') goto yy148;
- if (yych <= '`') goto yy1508;
- if (yych <= 'z') goto yy152;
- goto yy1508;
- }
- }
-yy1523:
- YYDEBUG(1523, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'S') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'R') goto yy142;
- }
- } else {
- if (yych <= 'r') {
- if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy4;
- goto yy142;
- } else {
- if (yych <= 's') goto yy1524;
- if (yych <= 'z') goto yy142;
- goto yy4;
- }
- }
-yy1524:
- YYDEBUG(1524, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'T') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'S') goto yy143;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy4;
- goto yy143;
- } else {
- if (yych <= 't') goto yy1525;
- if (yych <= 'z') goto yy143;
- goto yy4;
- }
- }
-yy1525:
- YYDEBUG(1525, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'E') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'D') goto yy144;
- }
- } else {
- if (yych <= 'd') {
- if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy4;
- goto yy144;
- } else {
- if (yych <= 'e') goto yy1526;
- if (yych <= 'z') goto yy144;
- goto yy4;
- }
- }
-yy1526:
- YYDEBUG(1526, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych <= 'R') {
- if (yych <= ')') {
- if (yych <= '(') goto yy4;
- goto yy140;
- } else {
- if (yych <= '@') goto yy4;
- if (yych <= 'Q') goto yy145;
- }
- } else {
- if (yych <= 'q') {
- if (yych <= 'Z') goto yy145;
- if (yych <= '`') goto yy4;
- goto yy145;
- } else {
- if (yych <= 'r') goto yy1527;
- if (yych <= 'z') goto yy145;
- goto yy4;
- }
- }
-yy1527:
- YYDEBUG(1527, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych <= 'D') goto yy1528;
- if (yych != 'd') goto yy4;
- }
-yy1528:
- YYDEBUG(1528, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1529;
- if (yych != 'a') goto yy57;
-yy1529:
- YYDEBUG(1529, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1530;
- if (yych != 'y') goto yy57;
-yy1530:
- YYDEBUG(1530, *YYCURSOR);
- ++YYCURSOR;
-yy1531:
- YYDEBUG(1531, *YYCURSOR);
-#line 994 "ext/date/lib/parse_date.re"
- {
- DEBUG_OUTPUT("yesterday");
- TIMELIB_INIT;
- TIMELIB_HAVE_RELATIVE();
- TIMELIB_UNHAVE_TIME();
-
- s->time->relative.d = -1;
- TIMELIB_DEINIT;
- return TIMELIB_RELATIVE;
- }
-#line 24575 "ext/date/lib/parse_date.c"
-yy1532:
- YYDEBUG(1532, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'R') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy142;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'S') goto yy1524;
- if (yych <= 'Z') goto yy142;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'r') {
- if (yych <= '`') goto yy4;
- goto yy147;
- } else {
- if (yych <= 's') goto yy1533;
- if (yych <= 'z') goto yy147;
- goto yy4;
- }
- }
- }
-yy1533:
- YYDEBUG(1533, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'S') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy143;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'T') goto yy1525;
- if (yych <= 'Z') goto yy143;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 's') {
- if (yych <= '`') goto yy4;
- goto yy151;
- } else {
- if (yych <= 't') goto yy1534;
- if (yych <= 'z') goto yy151;
- goto yy4;
- }
- }
- }
-yy1534:
- YYDEBUG(1534, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'D') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy144;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'E') goto yy1526;
- if (yych <= 'Z') goto yy144;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'd') {
- if (yych <= '`') goto yy4;
- goto yy152;
- } else {
- if (yych <= 'e') goto yy1535;
- if (yych <= 'z') goto yy152;
- goto yy4;
- }
- }
- }
-yy1535:
- YYDEBUG(1535, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Q') {
- if (yych <= '-') {
- if (yych == ')') goto yy140;
- if (yych <= ',') goto yy4;
- goto yy148;
- } else {
- if (yych == '/') goto yy148;
- if (yych <= '@') goto yy4;
- goto yy145;
- }
- } else {
- if (yych <= '_') {
- if (yych <= 'R') goto yy1527;
- if (yych <= 'Z') goto yy145;
- if (yych <= '^') goto yy4;
- goto yy148;
- } else {
- if (yych <= 'q') {
- if (yych <= '`') goto yy4;
- goto yy153;
- } else {
- if (yych <= 'r') goto yy1536;
- if (yych <= 'z') goto yy153;
- goto yy4;
- }
- }
- }
-yy1536:
- YYDEBUG(1536, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'C') {
- if (yych <= ',') {
- if (yych == ')') goto yy140;
- goto yy4;
- } else {
- if (yych == '.') goto yy4;
- if (yych <= '/') goto yy148;
- goto yy4;
- }
- } else {
- if (yych <= '`') {
- if (yych <= 'D') goto yy1528;
- if (yych == '_') goto yy148;
- goto yy4;
- } else {
- if (yych == 'd') goto yy1537;
- if (yych <= 'z') goto yy154;
- goto yy4;
- }
- }
-yy1537:
- YYDEBUG(1537, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy1529;
- if (yych != 'a') goto yy155;
- YYDEBUG(1538, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1530;
- if (yych != 'y') goto yy155;
- YYDEBUG(1539, *YYCURSOR);
- yyaccept = 33;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 16) {
- goto yy154;
- }
- if (yych <= '.') {
- if (yych == '-') goto yy148;
- goto yy1531;
- } else {
- if (yych <= '/') goto yy148;
- if (yych == '_') goto yy148;
- goto yy1531;
- }
-}
-#line 1755 "ext/date/lib/parse_date.re"
-
-}
-
-#define YYMAXFILL 31
-
-timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb)
-{
- Scanner in;
- int t;
- char *e = s + len - 1;
-
- memset(&in, 0, sizeof(in));
- in.errors = malloc(sizeof(struct timelib_error_container));
- in.errors->warning_count = 0;
- in.errors->warning_messages = NULL;
- in.errors->error_count = 0;
- in.errors->error_messages = NULL;
-
- if (len > 0) {
- while (isspace(*s) && s < e) {
- s++;
- }
- while (isspace(*e) && e > s) {
- e--;
- }
- }
- if (e - s < 0) {
- in.time = timelib_time_ctor();
- add_error(&in, "Empty string");
- if (errors) {
- *errors = in.errors;
- } else {
- timelib_error_container_dtor(in.errors);
- }
- in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->dst = in.time->z = TIMELIB_UNSET;
- in.time->is_localtime = in.time->zone_type = 0;
- return in.time;
- }
- e++;
-
- in.str = malloc((e - s) + YYMAXFILL);
- memset(in.str, 0, (e - s) + YYMAXFILL);
- memcpy(in.str, s, (e - s));
- in.lim = in.str + (e - s) + YYMAXFILL;
- in.cur = in.str;
- in.time = timelib_time_ctor();
- in.time->y = TIMELIB_UNSET;
- in.time->d = TIMELIB_UNSET;
- in.time->m = TIMELIB_UNSET;
- in.time->h = TIMELIB_UNSET;
- in.time->i = TIMELIB_UNSET;
- in.time->s = TIMELIB_UNSET;
- in.time->f = TIMELIB_UNSET;
- in.time->z = TIMELIB_UNSET;
- in.time->dst = TIMELIB_UNSET;
- in.tzdb = tzdb;
- in.time->is_localtime = 0;
- in.time->zone_type = 0;
-
- do {
- t = scan(&in);
-#ifdef DEBUG_PARSER
- printf("%d\n", t);
-#endif
- } while(t != EOI);
-
- /* do funky checking whether the parsed time was valid time */
- if (in.time->have_time && !timelib_valid_time( in.time->h, in.time->i, in.time->s)) {
- add_warning(&in, "The parsed time was invalid");
- }
- /* do funky checking whether the parsed date was valid date */
- if (in.time->have_date && !timelib_valid_date( in.time->y, in.time->m, in.time->d)) {
- add_warning(&in, "The parsed date was invalid");
- }
-
- free(in.str);
- if (errors) {
- *errors = in.errors;
- } else {
- timelib_error_container_dtor(in.errors);
- }
- return in.time;
-}
-
-#define TIMELIB_CHECK_NUMBER \
- if (strchr("0123456789", *ptr) == NULL) \
- { \
- add_pbf_error(s, "Unexpected data found.", string, begin); \
- }
-
-static void timelib_time_reset_fields(timelib_time *time)
-{
- assert(time != NULL);
-
- time->y = 1970;
- time->m = 1;
- time->d = 1;
- time->h = time->i = time->s = 0;
- time->f = 0.0;
- time->tz_info = NULL;
-}
-
-static void timelib_time_reset_unset_fields(timelib_time *time)
-{
- assert(time != NULL);
-
- if (time->y == TIMELIB_UNSET ) time->y = 1970;
- if (time->m == TIMELIB_UNSET ) time->m = 1;
- if (time->d == TIMELIB_UNSET ) time->d = 1;
- if (time->h == TIMELIB_UNSET ) time->h = 0;
- if (time->i == TIMELIB_UNSET ) time->i = 0;
- if (time->s == TIMELIB_UNSET ) time->s = 0;
- if (time->f == TIMELIB_UNSET ) time->f = 0.0;
-}
-
-timelib_time *timelib_parse_from_format(char *format, char *string, int len, timelib_error_container **errors, const timelib_tzdb *tzdb)
-{
- char *fptr = format;
- char *ptr = string;
- char *begin;
- timelib_sll tmp;
- Scanner in;
- Scanner *s = &in;
-
- memset(&in, 0, sizeof(in));
- in.errors = malloc(sizeof(struct timelib_error_container));
- in.errors->warning_count = 0;
- in.errors->warning_messages = NULL;
- in.errors->error_count = 0;
- in.errors->error_messages = NULL;
-
- in.time = timelib_time_ctor();
- in.time->y = TIMELIB_UNSET;
- in.time->d = TIMELIB_UNSET;
- in.time->m = TIMELIB_UNSET;
- in.time->h = TIMELIB_UNSET;
- in.time->i = TIMELIB_UNSET;
- in.time->s = TIMELIB_UNSET;
- in.time->f = TIMELIB_UNSET;
- in.time->z = TIMELIB_UNSET;
- in.time->dst = TIMELIB_UNSET;
- in.tzdb = tzdb;
- in.time->is_localtime = 0;
- in.time->zone_type = 0;
-
- /* Loop over the format string */
- while (*fptr && *ptr) {
- begin = ptr;
- switch (*fptr) {
- case 'D': /* three letter day */
- case 'l': /* full day */
- if (!timelib_lookup_relunit((char **) &ptr)) {
- add_pbf_error(s, "A textual day could not be found", string, begin);
- }
- break;
- case 'd': /* two digit day, with leading zero */
- case 'j': /* two digit day, without leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->d = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit day could not be found", string, begin);
- }
- break;
- case 'S': /* day suffix, ignored, nor checked */
- timelib_skip_day_suffix((char **) &ptr);
- break;
- case 'z': /* day of year - resets month (0 based) */
- TIMELIB_CHECK_NUMBER;
- if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
- } else {
- s->time->m = 1;
- s->time->d = tmp + 1;
- }
- break;
-
- case 'm': /* two digit month, with leading zero */
- case 'n': /* two digit month, without leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->m = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit month could not be found", string, begin);
- }
- break;
- case 'M': /* three letter month */
- case 'F': /* full month */
- tmp = timelib_lookup_month((char **) &ptr);
- if (!tmp) {
- add_pbf_error(s, "A textual month could not be found", string, begin);
- } else {
- s->time->m = tmp;
- }
- break;
- case 'y': /* two digit year */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->y = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit year could not be found", string, begin);
- }
- TIMELIB_PROCESS_YEAR(s->time->y);
- break;
- case 'Y': /* four digit year */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->y = timelib_get_nr((char **) &ptr, 4)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A four digit year could not be found", string, begin);
- }
- break;
- case 'g': /* two digit hour, with leading zero */
- case 'h': /* two digit hour, without leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit hour could not be found", string, begin);
- }
- if (s->time->h > 12) {
- add_pbf_error(s, "Hour can not be higher than 12", string, begin);
- }
- break;
- case 'G': /* two digit hour, with leading zero */
- case 'H': /* two digit hour, without leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit hour could not be found", string, begin);
- }
- break;
- case 'a': /* am/pm/a.m./p.m. */
- case 'A': /* AM/PM/A.M./P.M. */
- if (s->time->h == TIMELIB_UNSET) {
- add_pbf_error(s, "Meridian can only come after an hour has been found", string, begin);
- } else if ((tmp = timelib_meridian_with_check((char **) &ptr, s->time->h)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A meridian could not be found", string, begin);
- } else {
- s->time->h += tmp;
- }
- break;
- case 'i': /* two digit minute, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->i = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit minute could not be found", string, begin);
- }
- break;
- case 's': /* two digit second, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->s = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit second could not be found", string, begin);
- }
- break;
- case 'u': /* up to six digit millisecond */
- {
- double f;
- char *tptr;
-
- TIMELIB_CHECK_NUMBER;
- tptr = ptr;
- if ((f = timelib_get_nr((char **) &ptr, 6)) == TIMELIB_UNSET || (ptr - tptr < 1)) {
- add_pbf_error(s, "A six digit millisecond could not be found", string, begin);
- } else {
- s->time->f = (f / pow(10, (ptr - tptr)));
- }
- }
- break;
- case ' ': /* any sort of whitespace (' ' and \t) */
- timelib_eat_spaces((char **) &ptr);
- break;
- case 'U': /* epoch seconds */
- TIMELIB_CHECK_NUMBER;
- TIMELIB_HAVE_RELATIVE();
- tmp = timelib_get_unsigned_nr((char **) &ptr, 24);
- s->time->y = 1970;
- s->time->m = 1;
- s->time->d = 1;
- s->time->h = s->time->i = s->time->s = 0;
- s->time->f = 0.0;
- s->time->relative.s += tmp;
- s->time->is_localtime = 1;
- s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
- s->time->z = 0;
- break;
-
- case 'e': /* timezone */
- case 'P': /* timezone */
- case 'T': /* timezone */
- case 'O': /* timezone */
- {
- int tz_not_found;
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- if (tz_not_found) {
- add_pbf_error(s, "The timezone could not be found in the database", string, begin);
- }
- }
- break;
-
- case '#': /* separation symbol */
- if (*ptr == ';' || *ptr == ':' || *ptr == '/' || *ptr == '.' || *ptr == ',' || *ptr == '-' || *ptr == '(' || *ptr == ')') {
- ++ptr;
- } else {
- add_pbf_error(s, "The separation symbol ([;:/.,-]) could not be found", string, begin);
- }
- break;
-
- case ';':
- case ':':
- case '/':
- case '.':
- case ',':
- case '-':
- case '(':
- case ')':
- if (*ptr == *fptr) {
- ++ptr;
- } else {
- add_pbf_error(s, "The separation symbol could not be found", string, begin);
- }
- break;
-
- case '!': /* reset all fields to default */
- timelib_time_reset_fields(s->time);
- break; /* break intentionally not missing */
-
- case '|': /* reset all fields to default when not set */
- timelib_time_reset_unset_fields(s->time);
- break; /* break intentionally not missing */
-
- case '?': /* random char */
- ++ptr;
- break;
-
- case '\\': /* escaped char */
- *fptr++;
- if (*ptr == *fptr) {
- ++ptr;
- } else {
- add_pbf_error(s, "The escaped character could not be found", string, begin);
- }
- break;
-
- case '*': /* random chars until a separator or number ([ \t.,:;/-0123456789]) */
- timelib_eat_until_separator((char **) &ptr);
- break;
-
- default:
- if (*fptr != *ptr) {
- add_pbf_error(s, "The format separator does not match", string, begin);
- }
- ptr++;
- }
- fptr++;
- }
- if (*ptr) {
- add_pbf_error(s, "Trailing data", string, ptr);
- }
- if (*fptr) {
- /* Trailing | and ! specifiers are valid. */
- while (*fptr) {
- switch (*fptr++) {
- case '!': /* reset all fields to default */
- timelib_time_reset_fields(s->time);
- break;
-
- case '|': /* reset all fields to default when not set */
- timelib_time_reset_unset_fields(s->time);
- break;
-
- default:
- add_pbf_error(s, "Data missing", string, ptr);
- }
- }
- }
-
- /* clean up a bit */
- if (s->time->h != TIMELIB_UNSET || s->time->i != TIMELIB_UNSET || s->time->s != TIMELIB_UNSET) {
- if (s->time->h == TIMELIB_UNSET ) {
- s->time->h = 0;
- }
- if (s->time->i == TIMELIB_UNSET ) {
- s->time->i = 0;
- }
- if (s->time->s == TIMELIB_UNSET ) {
- s->time->s = 0;
- }
- }
-
- /* do funky checking whether the parsed time was valid time */
- if (s->time->h != TIMELIB_UNSET && s->time->i != TIMELIB_UNSET &&
- s->time->s != TIMELIB_UNSET &&
- !timelib_valid_time( s->time->h, s->time->i, s->time->s)) {
- add_pbf_warning(s, "The parsed time was invalid", string, ptr);
- }
- /* do funky checking whether the parsed date was valid date */
- if (s->time->y != TIMELIB_UNSET && s->time->m != TIMELIB_UNSET &&
- s->time->d != TIMELIB_UNSET &&
- !timelib_valid_date( s->time->y, s->time->m, s->time->d)) {
- add_pbf_warning(s, "The parsed date was invalid", string, ptr);
- }
-
- if (errors) {
- *errors = in.errors;
- } else {
- timelib_error_container_dtor(in.errors);
- }
- return in.time;
-}
-
-void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
-{
- if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) {
- parsed->h = 0;
- parsed->i = 0;
- parsed->s = 0;
- parsed->f = 0;
- }
- if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
- if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
- if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
- if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
- if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
- if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
- if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
- if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
- if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
-
- if (!parsed->tz_abbr) {
- parsed->tz_abbr = now->tz_abbr ? strdup(now->tz_abbr) : NULL;
- }
- if (!parsed->tz_info) {
- parsed->tz_info = now->tz_info ? (!(options & TIMELIB_NO_CLONE) ? timelib_tzinfo_clone(now->tz_info) : now->tz_info) : NULL;
- }
- if (parsed->zone_type == 0 && now->zone_type != 0) {
- parsed->zone_type = now->zone_type;
-/* parsed->tz_abbr = now->tz_abbr ? strdup(now->tz_abbr) : NULL;
- parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL;
-*/ parsed->is_localtime = 1;
- }
-/* timelib_dump_date(parsed, 2);
- timelib_dump_date(now, 2);
-*/
-}
-
-char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst)
-{
- const timelib_tz_lookup_table *tp;
-
- tp = zone_search(abbr, gmtoffset, isdst);
- if (tp) {
- return (tp->full_tz_name);
- } else {
- return NULL;
- }
-}
-
-const timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void)
-{
- return timelib_timezone_lookup;
-}
-
-#ifdef DEBUG_PARSER_STUB
-int main(void)
-{
- timelib_time time = timelib_strtotime("May 12");
-
- printf ("%04d-%02d-%02d %02d:%02d:%02d.%-5d %+04d %1d",
- time.y, time.m, time.d, time.h, time.i, time.s, time.f, time.z, time.dst);
- if (time.have_relative) {
- printf ("%3dY %3dM %3dD / %3dH %3dM %3dS",
- time.relative.y, time.relative.m, time.relative.d, time.relative.h, time.relative.i, time.relative.s);
- }
- if (time.have_weekday_relative) {
- printf (" / %d", time.relative.weekday);
- }
- if (time.have_weeknr_day) {
- printf(" / %dW%d", time.relative.weeknr_day.weeknr, time.relative.weeknr_day.dayofweek);
- }
- return 0;
-}
-#endif
-
-/*
- * vim: syntax=c
- */
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index 89bf2d697..5e1d31367 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_date.re 311831 2011-06-05 13:30:01Z bjori $ */
+/* $Id: parse_date.re 320481 2011-12-06 06:21:08Z derick $ */
#include "timelib.h"
@@ -119,8 +119,8 @@ typedef unsigned char uchar;
#define TIMELIB_DEINIT timelib_string_free(str)
#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
-#define TIMELIB_PROCESS_YEAR(x) { \
- if ((x) == TIMELIB_UNSET) { \
+#define TIMELIB_PROCESS_YEAR(x, l) { \
+ if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
/* (x) = 0; */ \
} else if ((x) < 100) { \
if ((x) < 70) { \
@@ -438,7 +438,7 @@ static char *timelib_string(Scanner *s)
return tmp;
}
-static timelib_sll timelib_get_nr(char **ptr, int max_length)
+static timelib_sll timelib_get_nr_ex(char **ptr, int max_length, int *scanned_length)
{
char *begin, *end, *str;
timelib_sll tmp_nr = TIMELIB_UNSET;
@@ -456,6 +456,9 @@ static timelib_sll timelib_get_nr(char **ptr, int max_length)
++len;
}
end = *ptr;
+ if (scanned_length) {
+ *scanned_length = end - begin;
+ }
str = calloc(1, end - begin + 1);
memcpy(str, begin, end - begin);
tmp_nr = strtoll(str, NULL, 10);
@@ -463,6 +466,11 @@ static timelib_sll timelib_get_nr(char **ptr, int max_length)
return tmp_nr;
}
+static timelib_sll timelib_get_nr(char **ptr, int max_length)
+{
+ return timelib_get_nr_ex(ptr, max_length, NULL);
+}
+
static void timelib_skip_day_suffix(char **ptr)
{
if (isspace(**ptr)) {
@@ -775,7 +783,7 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found
return value;
}
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb)
+static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
{
timelib_tzinfo *res;
long retval = 0;
@@ -824,7 +832,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
#endif
/* If we have a TimeZone identifier to start with, use it */
if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
- if ((res = timelib_parse_tzfile(tz_abbr, tzdb)) != NULL) {
+ if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
t->tz_info = res;
t->zone_type = TIMELIB_ZONETYPE_ID;
found++;
@@ -853,7 +861,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
} \
}
-static int scan(Scanner *s)
+static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
{
uchar *cursor = s->cur;
char *str, *ptr = NULL;
@@ -1186,7 +1194,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
}
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1227,7 +1235,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
s->time->h = timelib_get_nr((char **) &ptr, 2);
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = 0;
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, s->tzdb, tz_get_wrapper);
break;
case 1:
s->time->y = timelib_get_nr((char **) &ptr, 4);
@@ -1252,7 +1260,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
s->time->s = timelib_get_nr((char **) &ptr, 2);
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1263,14 +1271,15 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
americanshort | american
{
+ int length = 0;
DEBUG_OUTPUT("americanshort | american");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
if (*ptr == '/') {
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
}
TIMELIB_DEINIT;
return TIMELIB_AMERICAN;
@@ -1290,53 +1299,57 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
iso8601date2
{
+ int length = 0;
DEBUG_OUTPUT("iso8601date2");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
gnudateshorter
{
+ int length = 0;
DEBUG_OUTPUT("gnudateshorter");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
gnudateshort
{
+ int length = 0;
DEBUG_OUTPUT("gnudateshort");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_nr((char **) &ptr, 2);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
datefull
{
+ int length = 0;
DEBUG_OUTPUT("datefull");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->d = timelib_get_nr((char **) &ptr, 2);
timelib_skip_day_suffix((char **) &ptr);
s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL;
}
@@ -1355,52 +1368,56 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
pointeddate2
{
+ int length = 0;
DEBUG_OUTPUT("pointed date YY");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->d = timelib_get_nr((char **) &ptr, 2);
s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
datenoday
{
+ int length = 0;
DEBUG_OUTPUT("datenoday");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
datenodayrev
{
+ int length = 0;
DEBUG_OUTPUT("datenodayrev");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
datetextual | datenoyear
{
+ int length = 0;
DEBUG_OUTPUT("datetextual | datenoyear");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
@@ -1445,7 +1462,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
if (*ptr == '.') {
s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
if (*ptr) { /* timezone is optional */
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1457,13 +1474,14 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
pgydotd
{
+ int length = 0;
DEBUG_OUTPUT("pgydotd");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->d = timelib_get_nr((char **) &ptr, 3);
s->time->m = 1;
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_YEARDAY;
}
@@ -1508,26 +1526,28 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
pgtextshort
{
+ int length = 0;
DEBUG_OUTPUT("pgtextshort");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
pgtextreverse
{
+ int length = 0;
DEBUG_OUTPUT("pgtextreverse");
TIMELIB_INIT;
TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
s->time->m = timelib_get_month((char **) &ptr);
s->time->d = timelib_get_nr((char **) &ptr, 2);
- TIMELIB_PROCESS_YEAR(s->time->y);
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
@@ -1545,7 +1565,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
s->time->h = timelib_get_nr((char **) &ptr, 2);
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = timelib_get_nr((char **) &ptr, 2);
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1658,7 +1678,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
DEBUG_OUTPUT("tzcorrection | tz");
TIMELIB_INIT;
TIMELIB_HAVE_TZ();
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1711,7 +1731,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
}
if (*ptr != '\0') {
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_error(s, "The timezone could not be found in the database");
}
@@ -1757,7 +1777,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
/*!max:re2c */
-timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb)
+timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
{
Scanner in;
int t;
@@ -1812,7 +1832,7 @@ timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container
in.time->zone_type = 0;
do {
- t = scan(&in);
+ t = scan(&in, tz_get_wrapper);
#ifdef DEBUG_PARSER
printf("%d\n", t);
#endif
@@ -1867,7 +1887,7 @@ static void timelib_time_reset_unset_fields(timelib_time *time)
if (time->f == TIMELIB_UNSET ) time->f = 0.0;
}
-timelib_time *timelib_parse_from_format(char *format, char *string, int len, timelib_error_container **errors, const timelib_tzdb *tzdb)
+timelib_time *timelib_parse_from_format(char *format, char *string, int len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
{
char *fptr = format;
char *ptr = string;
@@ -1875,6 +1895,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
timelib_sll tmp;
Scanner in;
Scanner *s = &in;
+ int allow_extra = 0;
memset(&in, 0, sizeof(in));
in.errors = malloc(sizeof(struct timelib_error_container));
@@ -1903,8 +1924,19 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
switch (*fptr) {
case 'D': /* three letter day */
case 'l': /* full day */
- if (!timelib_lookup_relunit((char **) &ptr)) {
- add_pbf_error(s, "A textual day could not be found", string, begin);
+ {
+ const timelib_relunit* tmprel = 0;
+
+ tmprel = timelib_lookup_relunit((char **) &ptr);
+ if (!tmprel) {
+ add_pbf_error(s, "A textual day could not be found", string, begin);
+ break;
+ } else {
+ in.time->have_relative = 1;
+ in.time->relative.have_weekday_relative = 1;
+ in.time->relative.weekday = tmprel->multiplier;
+ in.time->relative.weekday_behavior = 1;
+ }
}
break;
case 'd': /* two digit day, with leading zero */
@@ -1917,13 +1949,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
case 'S': /* day suffix, ignored, nor checked */
timelib_skip_day_suffix((char **) &ptr);
break;
- case 'z': /* day of year - resets month (0 based) */
+ case 'z': /* day of year - resets month (0 based) - also initializes everything else to !TIMELIB_UNSET */
TIMELIB_CHECK_NUMBER;
if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
} else {
s->time->m = 1;
s->time->d = tmp + 1;
+ timelib_do_normalize(s->time);
}
break;
@@ -1944,11 +1977,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
}
break;
case 'y': /* two digit year */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->y = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit year could not be found", string, begin);
+ {
+ int length = 0;
+ TIMELIB_CHECK_NUMBER;
+ if ((s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length)) == TIMELIB_UNSET) {
+ add_pbf_error(s, "A two digit year could not be found", string, begin);
+ }
+ TIMELIB_PROCESS_YEAR(s->time->y, length);
}
- TIMELIB_PROCESS_YEAR(s->time->y);
break;
case 'Y': /* four digit year */
TIMELIB_CHECK_NUMBER;
@@ -1984,15 +2020,31 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
}
break;
case 'i': /* two digit minute, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->i = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit minute could not be found", string, begin);
+ {
+ int length;
+ timelib_sll min;
+
+ TIMELIB_CHECK_NUMBER;
+ min = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ if (min == TIMELIB_UNSET || length != 2) {
+ add_pbf_error(s, "A two digit minute could not be found", string, begin);
+ } else {
+ s->time->i = min;
+ }
}
break;
case 's': /* two digit second, with leading zero */
- TIMELIB_CHECK_NUMBER;
- if ((s->time->s = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
- add_pbf_error(s, "A two digit second could not be found", string, begin);
+ {
+ int length;
+ timelib_sll sec;
+
+ TIMELIB_CHECK_NUMBER;
+ sec = timelib_get_nr_ex((char **) &ptr, 2, &length);
+ if (sec == TIMELIB_UNSET || length != 2) {
+ add_pbf_error(s, "A two second minute could not be found", string, begin);
+ } else {
+ s->time->s = sec;
+ }
}
break;
case 'u': /* up to six digit millisecond */
@@ -2033,7 +2085,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
case 'O': /* timezone */
{
int tz_not_found;
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
if (tz_not_found) {
add_pbf_error(s, "The timezone could not be found in the database", string, begin);
}
@@ -2088,6 +2140,10 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
timelib_eat_until_separator((char **) &ptr);
break;
+ case '+': /* allow extra chars in the format */
+ allow_extra = 1;
+ break;
+
default:
if (*fptr != *ptr) {
add_pbf_error(s, "The format separator does not match", string, begin);
@@ -2097,11 +2153,20 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
fptr++;
}
if (*ptr) {
- add_pbf_error(s, "Trailing data", string, ptr);
+ if (allow_extra) {
+ add_pbf_warning(s, "Trailing data", string, ptr);
+ } else {
+ add_pbf_error(s, "Trailing data", string, ptr);
+ }
+ }
+ /* ignore trailing +'s */
+ while (*fptr == '+') {
+ fptr++;
}
if (*fptr) {
/* Trailing | and ! specifiers are valid. */
- while (*fptr) {
+ int done = 0;
+ while (*fptr && !done) {
switch (*fptr++) {
case '!': /* reset all fields to default */
timelib_time_reset_fields(s->time);
@@ -2113,6 +2178,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
default:
add_pbf_error(s, "Data missing", string, ptr);
+ done = 1;
}
}
}
diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c
index bb267127e..4baa01387 100644
--- a/ext/date/lib/parse_iso_intervals.c
+++ b/ext/date/lib/parse_iso_intervals.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sat Nov 13 14:57:59 2010 */
+/* Generated by re2c 0.13.5 on Mon Dec 5 22:02:31 2011 */
#line 1 "ext/date/lib/parse_iso_intervals.re"
/*
+----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_iso_intervals.c 305316 2010-11-13 15:01:48Z derick $ */
+/* $Id: parse_iso_intervals.c 320478 2011-12-06 06:04:24Z derick $ */
#include "timelib.h"
@@ -396,7 +396,7 @@ yy6:
break;
}
- nr = timelib_get_unsigned_nr((char **) &ptr, 9);
+ nr = timelib_get_unsigned_nr((char **) &ptr, 12);
switch (*ptr) {
case 'Y': s->period->y = nr; break;
case 'W': s->period->d = nr * 7; break;
diff --git a/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re
index 3fb47107c..a44276d46 100644
--- a/ext/date/lib/parse_iso_intervals.re
+++ b/ext/date/lib/parse_iso_intervals.re
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_iso_intervals.re 296828 2010-03-26 04:31:26Z aharvey $ */
+/* $Id: parse_iso_intervals.re 320478 2011-12-06 06:04:24Z derick $ */
#include "timelib.h"
@@ -364,7 +364,7 @@ isoweek = year4 "-"? "W" weekofyear;
break;
}
- nr = timelib_get_unsigned_nr((char **) &ptr, 9);
+ nr = timelib_get_unsigned_nr((char **) &ptr, 12);
switch (*ptr) {
case 'Y': s->period->y = nr; break;
case 'W': s->period->d = nr * 7; break;
diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h
index 67a57d875..53a861487 100644
--- a/ext/date/lib/timelib.h
+++ b/ext/date/lib/timelib.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: timelib.h 309055 2011-03-09 20:06:52Z scottmac $ */
+/* $Id: timelib.h 320481 2011-12-06 06:21:08Z derick $ */
#ifndef __TIMELIB_H__
#define __TIMELIB_H__
@@ -26,12 +26,14 @@
#include <limits.h>
#endif
-#define TIMELIB_VERSION 201101
+#define TIMELIB_VERSION 201102
#define TIMELIB_NONE 0x00
#define TIMELIB_OVERRIDE_TIME 0x01
#define TIMELIB_NO_CLONE 0x02
+#define TIMELIB_UNSET -99999
+
#define TIMELIB_SPECIAL_WEEKDAY 0x01
#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH 0x02
#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
@@ -52,6 +54,9 @@
#define strncasecmp strnicmp
#endif
+/* Function pointers */
+typedef timelib_tzinfo* (*timelib_tz_get_wrapper)(char *tzname, const timelib_tzdb *tzdb);
+
/* From dow.c */
timelib_sll timelib_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d);
timelib_sll timelib_iso_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d);
@@ -63,8 +68,8 @@ int timelib_valid_time(timelib_sll h, timelib_sll i, timelib_sll s);
int timelib_valid_date(timelib_sll y, timelib_sll m, timelib_sll d);
/* From parse_date.re */
-timelib_time *timelib_strtotime(char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb);
-timelib_time *timelib_parse_from_format(char *format, char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb);
+timelib_time *timelib_strtotime(char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper);
+timelib_time *timelib_parse_from_format(char *format, char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper);
void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options);
char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst);
const timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void);
@@ -78,6 +83,7 @@ void timelib_strtointerval(char *s, int len,
/* From tm2unixtime.c */
void timelib_update_ts(timelib_time* time, timelib_tzinfo* tzi);
+void timelib_do_normalize(timelib_time *base);
void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt);
/* From unixtime2tm.c */
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index 7f2a3a0c6..16164d453 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -1,4 +1,4 @@
-const timelib_tzdb_index_entry timezonedb_idx_builtin[573] = {
+const timelib_tzdb_index_entry timezonedb_idx_builtin[575] = {
{ "Africa/Abidjan" , 0x000000 },
{ "Africa/Accra" , 0x000055 },
{ "Africa/Addis_Ababa" , 0x0000FD },
@@ -25,556 +25,558 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[573] = {
{ "Africa/Gaborone" , 0x000FCC },
{ "Africa/Harare" , 0x001027 },
{ "Africa/Johannesburg" , 0x00107C },
- { "Africa/Kampala" , 0x0010EA },
- { "Africa/Khartoum" , 0x001169 },
- { "Africa/Kigali" , 0x00127C },
- { "Africa/Kinshasa" , 0x0012D1 },
- { "Africa/Lagos" , 0x00132C },
- { "Africa/Libreville" , 0x001381 },
- { "Africa/Lome" , 0x0013D6 },
- { "Africa/Luanda" , 0x00141A },
- { "Africa/Lubumbashi" , 0x00146F },
- { "Africa/Lusaka" , 0x0014CA },
- { "Africa/Malabo" , 0x00151F },
- { "Africa/Maputo" , 0x001585 },
- { "Africa/Maseru" , 0x0015DA },
- { "Africa/Mbabane" , 0x001642 },
- { "Africa/Mogadishu" , 0x001698 },
- { "Africa/Monrovia" , 0x0016F3 },
- { "Africa/Nairobi" , 0x001759 },
- { "Africa/Ndjamena" , 0x0017D8 },
- { "Africa/Niamey" , 0x001844 },
- { "Africa/Nouakchott" , 0x0018B7 },
- { "Africa/Ouagadougou" , 0x001922 },
- { "Africa/Porto-Novo" , 0x001977 },
- { "Africa/Sao_Tome" , 0x0019DD },
- { "Africa/Timbuktu" , 0x001A32 },
- { "Africa/Tripoli" , 0x001A9D },
- { "Africa/Tunis" , 0x001B97 },
- { "Africa/Windhoek" , 0x001CA9 },
- { "America/Adak" , 0x001EF0 },
- { "America/Anchorage" , 0x002266 },
- { "America/Anguilla" , 0x0025DA },
- { "America/Antigua" , 0x00262F },
- { "America/Araguaina" , 0x002695 },
- { "America/Argentina/Buenos_Aires" , 0x0027F0 },
- { "America/Argentina/Catamarca" , 0x00299E },
- { "America/Argentina/ComodRivadavia" , 0x002B5F },
- { "America/Argentina/Cordoba" , 0x002D05 },
- { "America/Argentina/Jujuy" , 0x002EDA },
- { "America/Argentina/La_Rioja" , 0x00308E },
- { "America/Argentina/Mendoza" , 0x003246 },
- { "America/Argentina/Rio_Gallegos" , 0x003406 },
- { "America/Argentina/Salta" , 0x0035BB },
- { "America/Argentina/San_Juan" , 0x003767 },
- { "America/Argentina/San_Luis" , 0x00391F },
- { "America/Argentina/Tucuman" , 0x003AE5 },
- { "America/Argentina/Ushuaia" , 0x003CA1 },
- { "America/Aruba" , 0x003E5C },
- { "America/Asuncion" , 0x003EC2 },
- { "America/Atikokan" , 0x0041A7 },
- { "America/Atka" , 0x00427D },
- { "America/Bahia" , 0x0045E3 },
- { "America/Bahia_Banderas" , 0x00476C },
- { "America/Barbados" , 0x0049E5 },
- { "America/Belem" , 0x004A7F },
- { "America/Belize" , 0x004B7A },
- { "America/Blanc-Sablon" , 0x004CF6 },
- { "America/Boa_Vista" , 0x004DAA },
- { "America/Bogota" , 0x004EB3 },
- { "America/Boise" , 0x004F1F },
- { "America/Buenos_Aires" , 0x0052B6 },
- { "America/Cambridge_Bay" , 0x00544F },
- { "America/Campo_Grande" , 0x005777 },
- { "America/Cancun" , 0x005A66 },
- { "America/Caracas" , 0x005CA8 },
- { "America/Catamarca" , 0x005D0F },
- { "America/Cayenne" , 0x005EB5 },
- { "America/Cayman" , 0x005F17 },
- { "America/Chicago" , 0x005F6C },
- { "America/Chihuahua" , 0x006483 },
- { "America/Coral_Harbour" , 0x0066EE },
- { "America/Cordoba" , 0x006780 },
- { "America/Costa_Rica" , 0x006926 },
- { "America/Cuiaba" , 0x0069B0 },
- { "America/Curacao" , 0x006C8E },
- { "America/Danmarkshavn" , 0x006CF4 },
- { "America/Dawson" , 0x006E38 },
- { "America/Dawson_Creek" , 0x007155 },
- { "America/Denver" , 0x00732F },
- { "America/Detroit" , 0x0076B5 },
- { "America/Dominica" , 0x007A14 },
- { "America/Edmonton" , 0x007A69 },
- { "America/Eirunepe" , 0x007E21 },
- { "America/El_Salvador" , 0x007F34 },
- { "America/Ensenada" , 0x007FA9 },
- { "America/Fort_Wayne" , 0x008450 },
- { "America/Fortaleza" , 0x008312 },
- { "America/Glace_Bay" , 0x0086BA },
- { "America/Godthab" , 0x008A31 },
- { "America/Goose_Bay" , 0x008CF5 },
- { "America/Grand_Turk" , 0x0091B2 },
- { "America/Grenada" , 0x009461 },
- { "America/Guadeloupe" , 0x0094B6 },
- { "America/Guatemala" , 0x00950B },
- { "America/Guayaquil" , 0x009594 },
- { "America/Guyana" , 0x0095F1 },
- { "America/Halifax" , 0x009672 },
- { "America/Havana" , 0x009B88 },
- { "America/Hermosillo" , 0x009EFB },
- { "America/Indiana/Indianapolis" , 0x009FD9 },
- { "America/Indiana/Knox" , 0x00A26A },
- { "America/Indiana/Marengo" , 0x00A601 },
- { "America/Indiana/Petersburg" , 0x00A8A7 },
- { "America/Indiana/Tell_City" , 0x00ADF4 },
- { "America/Indiana/Vevay" , 0x00B08D },
- { "America/Indiana/Vincennes" , 0x00B2C8 },
- { "America/Indiana/Winamac" , 0x00B57C },
- { "America/Indianapolis" , 0x00AB8A },
- { "America/Inuvik" , 0x00B835 },
- { "America/Iqaluit" , 0x00BB2C },
- { "America/Jamaica" , 0x00BE4E },
- { "America/Jujuy" , 0x00BF13 },
- { "America/Juneau" , 0x00C0BD },
- { "America/Kentucky/Louisville" , 0x00C43B },
- { "America/Kentucky/Monticello" , 0x00C859 },
- { "America/Knox_IN" , 0x00CBDE },
- { "America/Kralendijk" , 0x00CF4F },
- { "America/La_Paz" , 0x00CFB5 },
- { "America/Lima" , 0x00D01C },
- { "America/Los_Angeles" , 0x00D0C4 },
- { "America/Louisville" , 0x00D4D5 },
- { "America/Lower_Princes" , 0x00D8CA },
- { "America/Maceio" , 0x00D930 },
- { "America/Managua" , 0x00DA6A },
- { "America/Manaus" , 0x00DB1D },
- { "America/Marigot" , 0x00DC1F },
- { "America/Martinique" , 0x00DC74 },
- { "America/Matamoros" , 0x00DCE0 },
- { "America/Mazatlan" , 0x00DF39 },
- { "America/Mendoza" , 0x00E1A6 },
- { "America/Menominee" , 0x00E35A },
- { "America/Merida" , 0x00E6DB },
- { "America/Metlakatla" , 0x00E916 },
- { "America/Mexico_City" , 0x00EC74 },
- { "America/Miquelon" , 0x00EEEF },
- { "America/Moncton" , 0x00F161 },
- { "America/Monterrey" , 0x00F5F8 },
- { "America/Montevideo" , 0x00F85B },
- { "America/Montreal" , 0x00FB6D },
- { "America/Montserrat" , 0x010083 },
- { "America/Nassau" , 0x0100D8 },
- { "America/New_York" , 0x01041D },
- { "America/Nipigon" , 0x010928 },
- { "America/Nome" , 0x010C79 },
- { "America/Noronha" , 0x010FF7 },
- { "America/North_Dakota/Beulah" , 0x011127 },
- { "America/North_Dakota/Center" , 0x0114BB },
- { "America/North_Dakota/New_Salem" , 0x01184F },
- { "America/Ojinaga" , 0x011BF8 },
- { "America/Panama" , 0x011E59 },
- { "America/Pangnirtung" , 0x011EAE },
- { "America/Paramaribo" , 0x0121E4 },
- { "America/Phoenix" , 0x012276 },
- { "America/Port-au-Prince" , 0x012324 },
- { "America/Port_of_Spain" , 0x01253F },
- { "America/Porto_Acre" , 0x012440 },
- { "America/Porto_Velho" , 0x012594 },
- { "America/Puerto_Rico" , 0x01268A },
- { "America/Rainy_River" , 0x0126F5 },
- { "America/Rankin_Inlet" , 0x012A2D },
- { "America/Recife" , 0x012D13 },
- { "America/Regina" , 0x012E3D },
- { "America/Resolute" , 0x012FFB },
- { "America/Rio_Branco" , 0x0132F4 },
- { "America/Rosario" , 0x0133F7 },
- { "America/Santa_Isabel" , 0x01359D },
- { "America/Santarem" , 0x013940 },
- { "America/Santiago" , 0x013A45 },
- { "America/Santo_Domingo" , 0x013DEE },
- { "America/Sao_Paulo" , 0x013EB4 },
- { "America/Scoresbysund" , 0x0141C3 },
- { "America/Shiprock" , 0x0144B1 },
- { "America/Sitka" , 0x014840 },
- { "America/St_Barthelemy" , 0x014BC8 },
- { "America/St_Johns" , 0x014C1D },
- { "America/St_Kitts" , 0x015170 },
- { "America/St_Lucia" , 0x0151C5 },
- { "America/St_Thomas" , 0x01521A },
- { "America/St_Vincent" , 0x01526F },
- { "America/Swift_Current" , 0x0152C4 },
- { "America/Tegucigalpa" , 0x0153E5 },
- { "America/Thule" , 0x015464 },
- { "America/Thunder_Bay" , 0x0156AB },
- { "America/Tijuana" , 0x0159F4 },
- { "America/Toronto" , 0x015D8D },
- { "America/Tortola" , 0x0162A4 },
- { "America/Vancouver" , 0x0162F9 },
- { "America/Virgin" , 0x016736 },
- { "America/Whitehorse" , 0x01678B },
- { "America/Winnipeg" , 0x016AA8 },
- { "America/Yakutat" , 0x016EE8 },
- { "America/Yellowknife" , 0x017253 },
- { "Antarctica/Casey" , 0x017563 },
- { "Antarctica/Davis" , 0x0175EE },
- { "Antarctica/DumontDUrville" , 0x017685 },
- { "Antarctica/Macquarie" , 0x017717 },
- { "Antarctica/Mawson" , 0x017991 },
- { "Antarctica/McMurdo" , 0x017A0D },
- { "Antarctica/Palmer" , 0x017D0F },
- { "Antarctica/Rothera" , 0x01802B },
- { "Antarctica/South_Pole" , 0x0180A1 },
- { "Antarctica/Syowa" , 0x0183A9 },
- { "Antarctica/Vostok" , 0x018417 },
- { "Arctic/Longyearbyen" , 0x018488 },
- { "Asia/Aden" , 0x0187BA },
- { "Asia/Almaty" , 0x01880F },
- { "Asia/Amman" , 0x01898E },
- { "Asia/Anadyr" , 0x018C4E },
- { "Asia/Aqtau" , 0x018E33 },
- { "Asia/Aqtobe" , 0x019032 },
- { "Asia/Ashgabat" , 0x0191EA },
- { "Asia/Ashkhabad" , 0x019307 },
- { "Asia/Baghdad" , 0x019424 },
- { "Asia/Bahrain" , 0x019599 },
- { "Asia/Baku" , 0x0195FF },
- { "Asia/Bangkok" , 0x0198E7 },
- { "Asia/Beirut" , 0x01993C },
- { "Asia/Bishkek" , 0x019C49 },
- { "Asia/Brunei" , 0x019DF5 },
- { "Asia/Calcutta" , 0x019E57 },
- { "Asia/Choibalsan" , 0x019ED0 },
- { "Asia/Chongqing" , 0x01A049 },
- { "Asia/Chungking" , 0x01A138 },
- { "Asia/Colombo" , 0x01A1E7 },
- { "Asia/Dacca" , 0x01A283 },
- { "Asia/Damascus" , 0x01A329 },
- { "Asia/Dhaka" , 0x01A679 },
- { "Asia/Dili" , 0x01A71F },
- { "Asia/Dubai" , 0x01A7A8 },
- { "Asia/Dushanbe" , 0x01A7FD },
- { "Asia/Gaza" , 0x01A900 },
- { "Asia/Harbin" , 0x01AC49 },
- { "Asia/Ho_Chi_Minh" , 0x01AD30 },
- { "Asia/Hong_Kong" , 0x01ADA8 },
- { "Asia/Hovd" , 0x01AF6A },
- { "Asia/Irkutsk" , 0x01B0E2 },
- { "Asia/Istanbul" , 0x01B2C8 },
- { "Asia/Jakarta" , 0x01B6B5 },
- { "Asia/Jayapura" , 0x01B75F },
- { "Asia/Jerusalem" , 0x01B7FB },
- { "Asia/Kabul" , 0x01BB2A },
- { "Asia/Kamchatka" , 0x01BB7B },
- { "Asia/Karachi" , 0x01BD57 },
- { "Asia/Kashgar" , 0x01BE0C },
- { "Asia/Kathmandu" , 0x01BEDD },
- { "Asia/Katmandu" , 0x01BF43 },
- { "Asia/Kolkata" , 0x01BFA9 },
- { "Asia/Krasnoyarsk" , 0x01C022 },
- { "Asia/Kuala_Lumpur" , 0x01C20A },
- { "Asia/Kuching" , 0x01C2C7 },
- { "Asia/Kuwait" , 0x01C3B5 },
- { "Asia/Macao" , 0x01C40A },
- { "Asia/Macau" , 0x01C545 },
- { "Asia/Magadan" , 0x01C680 },
- { "Asia/Makassar" , 0x01C862 },
- { "Asia/Manila" , 0x01C926 },
- { "Asia/Muscat" , 0x01C9AB },
- { "Asia/Nicosia" , 0x01CA00 },
- { "Asia/Novokuznetsk" , 0x01CCE8 },
- { "Asia/Novosibirsk" , 0x01CEEA },
- { "Asia/Omsk" , 0x01D0D5 },
- { "Asia/Oral" , 0x01D2BC },
- { "Asia/Phnom_Penh" , 0x01D48C },
- { "Asia/Pontianak" , 0x01D504 },
- { "Asia/Pyongyang" , 0x01D5C5 },
- { "Asia/Qatar" , 0x01D632 },
- { "Asia/Qyzylorda" , 0x01D698 },
- { "Asia/Rangoon" , 0x01D86E },
- { "Asia/Riyadh" , 0x01D8E6 },
- { "Asia/Saigon" , 0x01D93B },
- { "Asia/Sakhalin" , 0x01D9B3 },
- { "Asia/Samarkand" , 0x01DBAA },
- { "Asia/Seoul" , 0x01DCE0 },
- { "Asia/Shanghai" , 0x01DD84 },
- { "Asia/Singapore" , 0x01DE64 },
- { "Asia/Taipei" , 0x01DF1B },
- { "Asia/Tashkent" , 0x01E033 },
- { "Asia/Tbilisi" , 0x01E164 },
- { "Asia/Tehran" , 0x01E31E },
- { "Asia/Tel_Aviv" , 0x01E58C },
- { "Asia/Thimbu" , 0x01E8BB },
- { "Asia/Thimphu" , 0x01E921 },
- { "Asia/Tokyo" , 0x01E987 },
- { "Asia/Ujung_Pandang" , 0x01EA10 },
- { "Asia/Ulaanbaatar" , 0x01EA8C },
- { "Asia/Ulan_Bator" , 0x01EBE7 },
- { "Asia/Urumqi" , 0x01ED34 },
- { "Asia/Vientiane" , 0x01EDFB },
- { "Asia/Vladivostok" , 0x01EE73 },
- { "Asia/Yakutsk" , 0x01F05F },
- { "Asia/Yekaterinburg" , 0x01F244 },
- { "Asia/Yerevan" , 0x01F44F },
- { "Atlantic/Azores" , 0x01F753 },
- { "Atlantic/Bermuda" , 0x01FC56 },
- { "Atlantic/Canary" , 0x01FF37 },
- { "Atlantic/Cape_Verde" , 0x02020D },
- { "Atlantic/Faeroe" , 0x020286 },
- { "Atlantic/Faroe" , 0x02052A },
- { "Atlantic/Jan_Mayen" , 0x0207CE },
- { "Atlantic/Madeira" , 0x020B00 },
- { "Atlantic/Reykjavik" , 0x021009 },
- { "Atlantic/South_Georgia" , 0x0211C2 },
- { "Atlantic/St_Helena" , 0x0214D0 },
- { "Atlantic/Stanley" , 0x021206 },
- { "Australia/ACT" , 0x021525 },
- { "Australia/Adelaide" , 0x021842 },
- { "Australia/Brisbane" , 0x021B6E },
- { "Australia/Broken_Hill" , 0x021C35 },
- { "Australia/Canberra" , 0x021F73 },
- { "Australia/Currie" , 0x022290 },
- { "Australia/Darwin" , 0x0225C3 },
- { "Australia/Eucla" , 0x022649 },
- { "Australia/Hobart" , 0x02271E },
- { "Australia/LHI" , 0x022A7C },
- { "Australia/Lindeman" , 0x022D17 },
- { "Australia/Lord_Howe" , 0x022DF8 },
- { "Australia/Melbourne" , 0x0230A3 },
- { "Australia/North" , 0x0233C8 },
- { "Australia/NSW" , 0x02343C },
- { "Australia/Perth" , 0x023759 },
- { "Australia/Queensland" , 0x023831 },
- { "Australia/South" , 0x0238DD },
- { "Australia/Sydney" , 0x023BFA },
- { "Australia/Tasmania" , 0x023F37 },
- { "Australia/Victoria" , 0x02427C },
- { "Australia/West" , 0x024599 },
- { "Australia/Yancowinna" , 0x02464F },
- { "Brazil/Acre" , 0x024971 },
- { "Brazil/DeNoronha" , 0x024A70 },
- { "Brazil/East" , 0x024B90 },
- { "Brazil/West" , 0x024E6D },
- { "Canada/Atlantic" , 0x024F65 },
- { "Canada/Central" , 0x02544D },
- { "Canada/East-Saskatchewan" , 0x025D57 },
- { "Canada/Eastern" , 0x025867 },
- { "Canada/Mountain" , 0x025EE0 },
- { "Canada/Newfoundland" , 0x026256 },
- { "Canada/Pacific" , 0x026781 },
- { "Canada/Saskatchewan" , 0x026B9A },
- { "Canada/Yukon" , 0x026D23 },
- { "CET" , 0x027026 },
- { "Chile/Continental" , 0x02732F },
- { "Chile/EasterIsland" , 0x0276CA },
- { "CST6CDT" , 0x027A0C },
- { "Cuba" , 0x027D5D },
- { "EET" , 0x0280D0 },
- { "Egypt" , 0x028383 },
- { "Eire" , 0x028646 },
- { "EST" , 0x028B57 },
- { "EST5EDT" , 0x028B9B },
- { "Etc/GMT" , 0x028EEC },
- { "Etc/GMT+0" , 0x028FB8 },
- { "Etc/GMT+1" , 0x029042 },
- { "Etc/GMT+10" , 0x0290CF },
- { "Etc/GMT+11" , 0x02915D },
- { "Etc/GMT+12" , 0x0291EB },
- { "Etc/GMT+2" , 0x029306 },
- { "Etc/GMT+3" , 0x029392 },
- { "Etc/GMT+4" , 0x02941E },
- { "Etc/GMT+5" , 0x0294AA },
- { "Etc/GMT+6" , 0x029536 },
- { "Etc/GMT+7" , 0x0295C2 },
- { "Etc/GMT+8" , 0x02964E },
- { "Etc/GMT+9" , 0x0296DA },
- { "Etc/GMT-0" , 0x028F74 },
- { "Etc/GMT-1" , 0x028FFC },
- { "Etc/GMT-10" , 0x029088 },
- { "Etc/GMT-11" , 0x029116 },
- { "Etc/GMT-12" , 0x0291A4 },
- { "Etc/GMT-13" , 0x029232 },
- { "Etc/GMT-14" , 0x029279 },
- { "Etc/GMT-2" , 0x0292C0 },
- { "Etc/GMT-3" , 0x02934C },
- { "Etc/GMT-4" , 0x0293D8 },
- { "Etc/GMT-5" , 0x029464 },
- { "Etc/GMT-6" , 0x0294F0 },
- { "Etc/GMT-7" , 0x02957C },
- { "Etc/GMT-8" , 0x029608 },
- { "Etc/GMT-9" , 0x029694 },
- { "Etc/GMT0" , 0x028F30 },
- { "Etc/Greenwich" , 0x029720 },
- { "Etc/UCT" , 0x029764 },
- { "Etc/Universal" , 0x0297A8 },
- { "Etc/UTC" , 0x0297EC },
- { "Etc/Zulu" , 0x029830 },
- { "Europe/Amsterdam" , 0x029874 },
- { "Europe/Andorra" , 0x029CB2 },
- { "Europe/Athens" , 0x029F2E },
- { "Europe/Belfast" , 0x02A271 },
- { "Europe/Belgrade" , 0x02A7A8 },
- { "Europe/Berlin" , 0x02AA71 },
- { "Europe/Bratislava" , 0x02ADC7 },
- { "Europe/Brussels" , 0x02B0F9 },
- { "Europe/Bucharest" , 0x02B530 },
- { "Europe/Budapest" , 0x02B85A },
- { "Europe/Chisinau" , 0x02BBCD },
- { "Europe/Copenhagen" , 0x02BF5B },
- { "Europe/Dublin" , 0x02C265 },
- { "Europe/Gibraltar" , 0x02C776 },
- { "Europe/Guernsey" , 0x02CBCD },
- { "Europe/Helsinki" , 0x02D104 },
- { "Europe/Isle_of_Man" , 0x02D3BA },
- { "Europe/Istanbul" , 0x02D8F1 },
- { "Europe/Jersey" , 0x02DCDE },
- { "Europe/Kaliningrad" , 0x02E215 },
- { "Europe/Kiev" , 0x02E477 },
- { "Europe/Lisbon" , 0x02E78E },
- { "Europe/Ljubljana" , 0x02EC92 },
- { "Europe/London" , 0x02EF5B },
- { "Europe/Luxembourg" , 0x02F492 },
- { "Europe/Madrid" , 0x02F8E8 },
- { "Europe/Malta" , 0x02FCAE },
- { "Europe/Mariehamn" , 0x030067 },
- { "Europe/Minsk" , 0x03031D },
- { "Europe/Monaco" , 0x030628 },
- { "Europe/Moscow" , 0x030A63 },
- { "Europe/Nicosia" , 0x030CB4 },
- { "Europe/Oslo" , 0x030F9C },
- { "Europe/Paris" , 0x0312CE },
- { "Europe/Podgorica" , 0x031714 },
- { "Europe/Prague" , 0x0319DD },
- { "Europe/Riga" , 0x031D0F },
- { "Europe/Rome" , 0x032054 },
- { "Europe/Samara" , 0x032417 },
- { "Europe/San_Marino" , 0x032647 },
- { "Europe/Sarajevo" , 0x032A0A },
- { "Europe/Simferopol" , 0x032CD3 },
- { "Europe/Skopje" , 0x032FFE },
- { "Europe/Sofia" , 0x0332C7 },
- { "Europe/Stockholm" , 0x0335CF },
- { "Europe/Tallinn" , 0x03387E },
- { "Europe/Tirane" , 0x033BB8 },
- { "Europe/Tiraspol" , 0x033EBE },
- { "Europe/Uzhgorod" , 0x03424C },
- { "Europe/Vaduz" , 0x034563 },
- { "Europe/Vatican" , 0x0347F6 },
- { "Europe/Vienna" , 0x034BB9 },
- { "Europe/Vilnius" , 0x034EE6 },
- { "Europe/Volgograd" , 0x035225 },
- { "Europe/Warsaw" , 0x035425 },
- { "Europe/Zagreb" , 0x035806 },
- { "Europe/Zaporozhye" , 0x035ACF },
- { "Europe/Zurich" , 0x035E10 },
- { "Factory" , 0x0360BF },
- { "GB" , 0x036130 },
- { "GB-Eire" , 0x036667 },
- { "GMT" , 0x036B9E },
- { "GMT+0" , 0x036C6A },
- { "GMT-0" , 0x036C26 },
- { "GMT0" , 0x036BE2 },
- { "Greenwich" , 0x036CAE },
- { "Hongkong" , 0x036CF2 },
- { "HST" , 0x036EB4 },
- { "Iceland" , 0x036EF8 },
- { "Indian/Antananarivo" , 0x0370B1 },
- { "Indian/Chagos" , 0x037125 },
- { "Indian/Christmas" , 0x037187 },
- { "Indian/Cocos" , 0x0371CB },
- { "Indian/Comoro" , 0x03720F },
- { "Indian/Kerguelen" , 0x037264 },
- { "Indian/Mahe" , 0x0372B9 },
- { "Indian/Maldives" , 0x03730E },
- { "Indian/Mauritius" , 0x037363 },
- { "Indian/Mayotte" , 0x0373D9 },
- { "Indian/Reunion" , 0x03742E },
- { "Iran" , 0x037483 },
- { "Israel" , 0x0376F1 },
- { "Jamaica" , 0x037A20 },
- { "Japan" , 0x037AE5 },
- { "Kwajalein" , 0x037B6E },
- { "Libya" , 0x037BD1 },
- { "MET" , 0x037CCB },
- { "Mexico/BajaNorte" , 0x037FD4 },
- { "Mexico/BajaSur" , 0x03833D },
- { "Mexico/General" , 0x038582 },
- { "MST" , 0x0387E0 },
- { "MST7MDT" , 0x038824 },
- { "Navajo" , 0x038B75 },
- { "NZ" , 0x038EEE },
- { "NZ-CHAT" , 0x03926C },
- { "Pacific/Apia" , 0x039554 },
- { "Pacific/Auckland" , 0x0395D2 },
- { "Pacific/Chatham" , 0x03995E },
- { "Pacific/Chuuk" , 0x039C55 },
- { "Pacific/Easter" , 0x039CAE },
- { "Pacific/Efate" , 0x03A00C },
- { "Pacific/Enderbury" , 0x03A0D2 },
- { "Pacific/Fakaofo" , 0x03A140 },
- { "Pacific/Fiji" , 0x03A184 },
- { "Pacific/Funafuti" , 0x03A20E },
- { "Pacific/Galapagos" , 0x03A252 },
- { "Pacific/Gambier" , 0x03A2CA },
- { "Pacific/Guadalcanal" , 0x03A32F },
- { "Pacific/Guam" , 0x03A384 },
- { "Pacific/Honolulu" , 0x03A3DA },
- { "Pacific/Johnston" , 0x03A451 },
- { "Pacific/Kiritimati" , 0x03A4A3 },
- { "Pacific/Kosrae" , 0x03A50E },
- { "Pacific/Kwajalein" , 0x03A56B },
- { "Pacific/Majuro" , 0x03A5D7 },
- { "Pacific/Marquesas" , 0x03A636 },
- { "Pacific/Midway" , 0x03A69D },
- { "Pacific/Nauru" , 0x03A727 },
- { "Pacific/Niue" , 0x03A79F },
- { "Pacific/Norfolk" , 0x03A7FD },
- { "Pacific/Noumea" , 0x03A852 },
- { "Pacific/Pago_Pago" , 0x03A8E2 },
- { "Pacific/Palau" , 0x03A96B },
- { "Pacific/Pitcairn" , 0x03A9AF },
- { "Pacific/Pohnpei" , 0x03AA04 },
- { "Pacific/Ponape" , 0x03AA59 },
- { "Pacific/Port_Moresby" , 0x03AA9E },
- { "Pacific/Rarotonga" , 0x03AAE2 },
- { "Pacific/Saipan" , 0x03ABBE },
- { "Pacific/Samoa" , 0x03AC21 },
- { "Pacific/Tahiti" , 0x03ACAA },
- { "Pacific/Tarawa" , 0x03AD0F },
- { "Pacific/Tongatapu" , 0x03AD63 },
- { "Pacific/Truk" , 0x03ADEF },
- { "Pacific/Wake" , 0x03AE34 },
- { "Pacific/Wallis" , 0x03AE84 },
- { "Pacific/Yap" , 0x03AEC8 },
- { "Poland" , 0x03AF0D },
- { "Portugal" , 0x03B2EE },
- { "PRC" , 0x03B7EA },
- { "PST8PDT" , 0x03B89B },
- { "ROC" , 0x03BBEC },
- { "ROK" , 0x03BD04 },
- { "Singapore" , 0x03BDA8 },
- { "Turkey" , 0x03BE5F },
- { "UCT" , 0x03C24C },
- { "Universal" , 0x03C290 },
- { "US/Alaska" , 0x03C2D4 },
- { "US/Aleutian" , 0x03C63D },
- { "US/Arizona" , 0x03C9A3 },
- { "US/Central" , 0x03CA31 },
- { "US/East-Indiana" , 0x03D43B },
- { "US/Eastern" , 0x03CF3C },
- { "US/Hawaii" , 0x03D6A5 },
- { "US/Indiana-Starke" , 0x03D716 },
- { "US/Michigan" , 0x03DA87 },
- { "US/Mountain" , 0x03DDBE },
- { "US/Pacific" , 0x03E137 },
- { "US/Pacific-New" , 0x03E53C },
- { "US/Samoa" , 0x03E941 },
- { "UTC" , 0x03E9CA },
- { "W-SU" , 0x03ECC1 },
- { "WET" , 0x03EA0E },
- { "Zulu" , 0x03EEFB },
+ { "Africa/Juba" , 0x0010EA },
+ { "Africa/Kampala" , 0x0011FD },
+ { "Africa/Khartoum" , 0x00127C },
+ { "Africa/Kigali" , 0x00138F },
+ { "Africa/Kinshasa" , 0x0013E4 },
+ { "Africa/Lagos" , 0x00143F },
+ { "Africa/Libreville" , 0x001494 },
+ { "Africa/Lome" , 0x0014E9 },
+ { "Africa/Luanda" , 0x00152D },
+ { "Africa/Lubumbashi" , 0x001582 },
+ { "Africa/Lusaka" , 0x0015DD },
+ { "Africa/Malabo" , 0x001632 },
+ { "Africa/Maputo" , 0x001698 },
+ { "Africa/Maseru" , 0x0016ED },
+ { "Africa/Mbabane" , 0x001755 },
+ { "Africa/Mogadishu" , 0x0017AB },
+ { "Africa/Monrovia" , 0x001806 },
+ { "Africa/Nairobi" , 0x00186C },
+ { "Africa/Ndjamena" , 0x0018EB },
+ { "Africa/Niamey" , 0x001957 },
+ { "Africa/Nouakchott" , 0x0019CA },
+ { "Africa/Ouagadougou" , 0x001A35 },
+ { "Africa/Porto-Novo" , 0x001A8A },
+ { "Africa/Sao_Tome" , 0x001AF0 },
+ { "Africa/Timbuktu" , 0x001B45 },
+ { "Africa/Tripoli" , 0x001BB0 },
+ { "Africa/Tunis" , 0x001CAA },
+ { "Africa/Windhoek" , 0x001DBC },
+ { "America/Adak" , 0x002003 },
+ { "America/Anchorage" , 0x002379 },
+ { "America/Anguilla" , 0x0026ED },
+ { "America/Antigua" , 0x002742 },
+ { "America/Araguaina" , 0x0027A8 },
+ { "America/Argentina/Buenos_Aires" , 0x002903 },
+ { "America/Argentina/Catamarca" , 0x002AB1 },
+ { "America/Argentina/ComodRivadavia" , 0x002C72 },
+ { "America/Argentina/Cordoba" , 0x002E18 },
+ { "America/Argentina/Jujuy" , 0x002FED },
+ { "America/Argentina/La_Rioja" , 0x0031A1 },
+ { "America/Argentina/Mendoza" , 0x003359 },
+ { "America/Argentina/Rio_Gallegos" , 0x003519 },
+ { "America/Argentina/Salta" , 0x0036CE },
+ { "America/Argentina/San_Juan" , 0x00387A },
+ { "America/Argentina/San_Luis" , 0x003A32 },
+ { "America/Argentina/Tucuman" , 0x003BF8 },
+ { "America/Argentina/Ushuaia" , 0x003DB4 },
+ { "America/Aruba" , 0x003F6F },
+ { "America/Asuncion" , 0x003FD5 },
+ { "America/Atikokan" , 0x0042BA },
+ { "America/Atka" , 0x004390 },
+ { "America/Bahia" , 0x0046F6 },
+ { "America/Bahia_Banderas" , 0x004988 },
+ { "America/Barbados" , 0x004C01 },
+ { "America/Belem" , 0x004C9B },
+ { "America/Belize" , 0x004D96 },
+ { "America/Blanc-Sablon" , 0x004F12 },
+ { "America/Boa_Vista" , 0x004FC6 },
+ { "America/Bogota" , 0x0050CF },
+ { "America/Boise" , 0x00513B },
+ { "America/Buenos_Aires" , 0x0054D2 },
+ { "America/Cambridge_Bay" , 0x00566B },
+ { "America/Campo_Grande" , 0x005993 },
+ { "America/Cancun" , 0x005C82 },
+ { "America/Caracas" , 0x005EC4 },
+ { "America/Catamarca" , 0x005F2B },
+ { "America/Cayenne" , 0x0060D1 },
+ { "America/Cayman" , 0x006133 },
+ { "America/Chicago" , 0x006188 },
+ { "America/Chihuahua" , 0x00669F },
+ { "America/Coral_Harbour" , 0x00690A },
+ { "America/Cordoba" , 0x00699C },
+ { "America/Costa_Rica" , 0x006B42 },
+ { "America/Cuiaba" , 0x006BCC },
+ { "America/Curacao" , 0x006EAA },
+ { "America/Danmarkshavn" , 0x006F10 },
+ { "America/Dawson" , 0x007054 },
+ { "America/Dawson_Creek" , 0x007371 },
+ { "America/Denver" , 0x00754B },
+ { "America/Detroit" , 0x0078D1 },
+ { "America/Dominica" , 0x007C30 },
+ { "America/Edmonton" , 0x007C85 },
+ { "America/Eirunepe" , 0x00803D },
+ { "America/El_Salvador" , 0x008150 },
+ { "America/Ensenada" , 0x0081C5 },
+ { "America/Fort_Wayne" , 0x00866C },
+ { "America/Fortaleza" , 0x00852E },
+ { "America/Glace_Bay" , 0x0088D6 },
+ { "America/Godthab" , 0x008C4D },
+ { "America/Goose_Bay" , 0x008F11 },
+ { "America/Grand_Turk" , 0x0093CE },
+ { "America/Grenada" , 0x00967D },
+ { "America/Guadeloupe" , 0x0096D2 },
+ { "America/Guatemala" , 0x009727 },
+ { "America/Guayaquil" , 0x0097B0 },
+ { "America/Guyana" , 0x00980D },
+ { "America/Halifax" , 0x00988E },
+ { "America/Havana" , 0x009DA4 },
+ { "America/Hermosillo" , 0x00A117 },
+ { "America/Indiana/Indianapolis" , 0x00A1F5 },
+ { "America/Indiana/Knox" , 0x00A486 },
+ { "America/Indiana/Marengo" , 0x00A81D },
+ { "America/Indiana/Petersburg" , 0x00AAC3 },
+ { "America/Indiana/Tell_City" , 0x00B010 },
+ { "America/Indiana/Vevay" , 0x00B2A9 },
+ { "America/Indiana/Vincennes" , 0x00B4E4 },
+ { "America/Indiana/Winamac" , 0x00B798 },
+ { "America/Indianapolis" , 0x00ADA6 },
+ { "America/Inuvik" , 0x00BA51 },
+ { "America/Iqaluit" , 0x00BD48 },
+ { "America/Jamaica" , 0x00C06A },
+ { "America/Jujuy" , 0x00C12F },
+ { "America/Juneau" , 0x00C2D9 },
+ { "America/Kentucky/Louisville" , 0x00C657 },
+ { "America/Kentucky/Monticello" , 0x00CA75 },
+ { "America/Knox_IN" , 0x00CDFA },
+ { "America/Kralendijk" , 0x00D16B },
+ { "America/La_Paz" , 0x00D1D1 },
+ { "America/Lima" , 0x00D238 },
+ { "America/Los_Angeles" , 0x00D2E0 },
+ { "America/Louisville" , 0x00D6F1 },
+ { "America/Lower_Princes" , 0x00DAE6 },
+ { "America/Maceio" , 0x00DB4C },
+ { "America/Managua" , 0x00DC86 },
+ { "America/Manaus" , 0x00DD39 },
+ { "America/Marigot" , 0x00DE3B },
+ { "America/Martinique" , 0x00DE90 },
+ { "America/Matamoros" , 0x00DEFC },
+ { "America/Mazatlan" , 0x00E155 },
+ { "America/Mendoza" , 0x00E3C2 },
+ { "America/Menominee" , 0x00E576 },
+ { "America/Merida" , 0x00E8F7 },
+ { "America/Metlakatla" , 0x00EB32 },
+ { "America/Mexico_City" , 0x00EC6C },
+ { "America/Miquelon" , 0x00EEE7 },
+ { "America/Moncton" , 0x00F159 },
+ { "America/Monterrey" , 0x00F5F0 },
+ { "America/Montevideo" , 0x00F853 },
+ { "America/Montreal" , 0x00FB65 },
+ { "America/Montserrat" , 0x01007B },
+ { "America/Nassau" , 0x0100D0 },
+ { "America/New_York" , 0x010415 },
+ { "America/Nipigon" , 0x010920 },
+ { "America/Nome" , 0x010C71 },
+ { "America/Noronha" , 0x010FEF },
+ { "America/North_Dakota/Beulah" , 0x01111F },
+ { "America/North_Dakota/Center" , 0x0114B3 },
+ { "America/North_Dakota/New_Salem" , 0x011847 },
+ { "America/Ojinaga" , 0x011BF0 },
+ { "America/Panama" , 0x011E51 },
+ { "America/Pangnirtung" , 0x011EA6 },
+ { "America/Paramaribo" , 0x0121DC },
+ { "America/Phoenix" , 0x01226E },
+ { "America/Port-au-Prince" , 0x01231C },
+ { "America/Port_of_Spain" , 0x012537 },
+ { "America/Porto_Acre" , 0x012438 },
+ { "America/Porto_Velho" , 0x01258C },
+ { "America/Puerto_Rico" , 0x012682 },
+ { "America/Rainy_River" , 0x0126ED },
+ { "America/Rankin_Inlet" , 0x012A25 },
+ { "America/Recife" , 0x012D0B },
+ { "America/Regina" , 0x012E35 },
+ { "America/Resolute" , 0x012FF3 },
+ { "America/Rio_Branco" , 0x0132E4 },
+ { "America/Rosario" , 0x0133E7 },
+ { "America/Santa_Isabel" , 0x01358D },
+ { "America/Santarem" , 0x013930 },
+ { "America/Santiago" , 0x013A35 },
+ { "America/Santo_Domingo" , 0x013DDE },
+ { "America/Sao_Paulo" , 0x013EA4 },
+ { "America/Scoresbysund" , 0x0141B3 },
+ { "America/Shiprock" , 0x0144A1 },
+ { "America/Sitka" , 0x014830 },
+ { "America/St_Barthelemy" , 0x014BB8 },
+ { "America/St_Johns" , 0x014C0D },
+ { "America/St_Kitts" , 0x015160 },
+ { "America/St_Lucia" , 0x0151B5 },
+ { "America/St_Thomas" , 0x01520A },
+ { "America/St_Vincent" , 0x01525F },
+ { "America/Swift_Current" , 0x0152B4 },
+ { "America/Tegucigalpa" , 0x0153D5 },
+ { "America/Thule" , 0x015454 },
+ { "America/Thunder_Bay" , 0x01569B },
+ { "America/Tijuana" , 0x0159E4 },
+ { "America/Toronto" , 0x015D7D },
+ { "America/Tortola" , 0x016294 },
+ { "America/Vancouver" , 0x0162E9 },
+ { "America/Virgin" , 0x016726 },
+ { "America/Whitehorse" , 0x01677B },
+ { "America/Winnipeg" , 0x016A98 },
+ { "America/Yakutat" , 0x016ED8 },
+ { "America/Yellowknife" , 0x017243 },
+ { "Antarctica/Casey" , 0x017553 },
+ { "Antarctica/Davis" , 0x0175DE },
+ { "Antarctica/DumontDUrville" , 0x017675 },
+ { "Antarctica/Macquarie" , 0x017707 },
+ { "Antarctica/Mawson" , 0x017981 },
+ { "Antarctica/McMurdo" , 0x0179FD },
+ { "Antarctica/Palmer" , 0x017CFF },
+ { "Antarctica/Rothera" , 0x01801B },
+ { "Antarctica/South_Pole" , 0x018091 },
+ { "Antarctica/Syowa" , 0x018399 },
+ { "Antarctica/Vostok" , 0x018407 },
+ { "Arctic/Longyearbyen" , 0x018478 },
+ { "Asia/Aden" , 0x0187AA },
+ { "Asia/Almaty" , 0x0187FF },
+ { "Asia/Amman" , 0x01897E },
+ { "Asia/Anadyr" , 0x018C3E },
+ { "Asia/Aqtau" , 0x018E23 },
+ { "Asia/Aqtobe" , 0x019022 },
+ { "Asia/Ashgabat" , 0x0191DA },
+ { "Asia/Ashkhabad" , 0x0192F7 },
+ { "Asia/Baghdad" , 0x019414 },
+ { "Asia/Bahrain" , 0x019589 },
+ { "Asia/Baku" , 0x0195EF },
+ { "Asia/Bangkok" , 0x0198D7 },
+ { "Asia/Beirut" , 0x01992C },
+ { "Asia/Bishkek" , 0x019C39 },
+ { "Asia/Brunei" , 0x019DE5 },
+ { "Asia/Calcutta" , 0x019E47 },
+ { "Asia/Choibalsan" , 0x019EC0 },
+ { "Asia/Chongqing" , 0x01A039 },
+ { "Asia/Chungking" , 0x01A128 },
+ { "Asia/Colombo" , 0x01A1D7 },
+ { "Asia/Dacca" , 0x01A273 },
+ { "Asia/Damascus" , 0x01A319 },
+ { "Asia/Dhaka" , 0x01A669 },
+ { "Asia/Dili" , 0x01A70F },
+ { "Asia/Dubai" , 0x01A798 },
+ { "Asia/Dushanbe" , 0x01A7ED },
+ { "Asia/Gaza" , 0x01A8F0 },
+ { "Asia/Harbin" , 0x01AB3F },
+ { "Asia/Hebron" , 0x01AC26 },
+ { "Asia/Ho_Chi_Minh" , 0x01AE7E },
+ { "Asia/Hong_Kong" , 0x01AEF6 },
+ { "Asia/Hovd" , 0x01B0B8 },
+ { "Asia/Irkutsk" , 0x01B230 },
+ { "Asia/Istanbul" , 0x01B416 },
+ { "Asia/Jakarta" , 0x01B803 },
+ { "Asia/Jayapura" , 0x01B8AD },
+ { "Asia/Jerusalem" , 0x01B949 },
+ { "Asia/Kabul" , 0x01BC78 },
+ { "Asia/Kamchatka" , 0x01BCC9 },
+ { "Asia/Karachi" , 0x01BEA5 },
+ { "Asia/Kashgar" , 0x01BF5A },
+ { "Asia/Kathmandu" , 0x01C02B },
+ { "Asia/Katmandu" , 0x01C091 },
+ { "Asia/Kolkata" , 0x01C0F7 },
+ { "Asia/Krasnoyarsk" , 0x01C170 },
+ { "Asia/Kuala_Lumpur" , 0x01C358 },
+ { "Asia/Kuching" , 0x01C415 },
+ { "Asia/Kuwait" , 0x01C503 },
+ { "Asia/Macao" , 0x01C558 },
+ { "Asia/Macau" , 0x01C693 },
+ { "Asia/Magadan" , 0x01C7CE },
+ { "Asia/Makassar" , 0x01C9B0 },
+ { "Asia/Manila" , 0x01CA74 },
+ { "Asia/Muscat" , 0x01CAF9 },
+ { "Asia/Nicosia" , 0x01CB4E },
+ { "Asia/Novokuznetsk" , 0x01CE36 },
+ { "Asia/Novosibirsk" , 0x01D038 },
+ { "Asia/Omsk" , 0x01D223 },
+ { "Asia/Oral" , 0x01D40A },
+ { "Asia/Phnom_Penh" , 0x01D5DA },
+ { "Asia/Pontianak" , 0x01D652 },
+ { "Asia/Pyongyang" , 0x01D713 },
+ { "Asia/Qatar" , 0x01D780 },
+ { "Asia/Qyzylorda" , 0x01D7E6 },
+ { "Asia/Rangoon" , 0x01D9BC },
+ { "Asia/Riyadh" , 0x01DA34 },
+ { "Asia/Saigon" , 0x01DA89 },
+ { "Asia/Sakhalin" , 0x01DB01 },
+ { "Asia/Samarkand" , 0x01DCF8 },
+ { "Asia/Seoul" , 0x01DE2E },
+ { "Asia/Shanghai" , 0x01DED2 },
+ { "Asia/Singapore" , 0x01DFB2 },
+ { "Asia/Taipei" , 0x01E069 },
+ { "Asia/Tashkent" , 0x01E181 },
+ { "Asia/Tbilisi" , 0x01E2B2 },
+ { "Asia/Tehran" , 0x01E46C },
+ { "Asia/Tel_Aviv" , 0x01E6DA },
+ { "Asia/Thimbu" , 0x01EA09 },
+ { "Asia/Thimphu" , 0x01EA6F },
+ { "Asia/Tokyo" , 0x01EAD5 },
+ { "Asia/Ujung_Pandang" , 0x01EB5E },
+ { "Asia/Ulaanbaatar" , 0x01EBDA },
+ { "Asia/Ulan_Bator" , 0x01ED35 },
+ { "Asia/Urumqi" , 0x01EE82 },
+ { "Asia/Vientiane" , 0x01EF49 },
+ { "Asia/Vladivostok" , 0x01EFC1 },
+ { "Asia/Yakutsk" , 0x01F1AD },
+ { "Asia/Yekaterinburg" , 0x01F392 },
+ { "Asia/Yerevan" , 0x01F59D },
+ { "Atlantic/Azores" , 0x01F8A1 },
+ { "Atlantic/Bermuda" , 0x01FDA4 },
+ { "Atlantic/Canary" , 0x020085 },
+ { "Atlantic/Cape_Verde" , 0x02035B },
+ { "Atlantic/Faeroe" , 0x0203D4 },
+ { "Atlantic/Faroe" , 0x020678 },
+ { "Atlantic/Jan_Mayen" , 0x02091C },
+ { "Atlantic/Madeira" , 0x020C4E },
+ { "Atlantic/Reykjavik" , 0x021157 },
+ { "Atlantic/South_Georgia" , 0x021310 },
+ { "Atlantic/St_Helena" , 0x02161E },
+ { "Atlantic/Stanley" , 0x021354 },
+ { "Australia/ACT" , 0x021673 },
+ { "Australia/Adelaide" , 0x021990 },
+ { "Australia/Brisbane" , 0x021CBC },
+ { "Australia/Broken_Hill" , 0x021D83 },
+ { "Australia/Canberra" , 0x0220C1 },
+ { "Australia/Currie" , 0x0223DE },
+ { "Australia/Darwin" , 0x022711 },
+ { "Australia/Eucla" , 0x022797 },
+ { "Australia/Hobart" , 0x02286C },
+ { "Australia/LHI" , 0x022BCA },
+ { "Australia/Lindeman" , 0x022E65 },
+ { "Australia/Lord_Howe" , 0x022F46 },
+ { "Australia/Melbourne" , 0x0231F1 },
+ { "Australia/North" , 0x023516 },
+ { "Australia/NSW" , 0x02358A },
+ { "Australia/Perth" , 0x0238A7 },
+ { "Australia/Queensland" , 0x02397F },
+ { "Australia/South" , 0x023A2B },
+ { "Australia/Sydney" , 0x023D48 },
+ { "Australia/Tasmania" , 0x024085 },
+ { "Australia/Victoria" , 0x0243CA },
+ { "Australia/West" , 0x0246E7 },
+ { "Australia/Yancowinna" , 0x02479D },
+ { "Brazil/Acre" , 0x024ABF },
+ { "Brazil/DeNoronha" , 0x024BBE },
+ { "Brazil/East" , 0x024CDE },
+ { "Brazil/West" , 0x024FBB },
+ { "Canada/Atlantic" , 0x0250B3 },
+ { "Canada/Central" , 0x02559B },
+ { "Canada/East-Saskatchewan" , 0x025EA5 },
+ { "Canada/Eastern" , 0x0259B5 },
+ { "Canada/Mountain" , 0x02602E },
+ { "Canada/Newfoundland" , 0x0263A4 },
+ { "Canada/Pacific" , 0x0268CF },
+ { "Canada/Saskatchewan" , 0x026CE8 },
+ { "Canada/Yukon" , 0x026E71 },
+ { "CET" , 0x027174 },
+ { "Chile/Continental" , 0x02747D },
+ { "Chile/EasterIsland" , 0x027818 },
+ { "CST6CDT" , 0x027B5A },
+ { "Cuba" , 0x027EAB },
+ { "EET" , 0x02821E },
+ { "Egypt" , 0x0284D1 },
+ { "Eire" , 0x028794 },
+ { "EST" , 0x028CA5 },
+ { "EST5EDT" , 0x028CE9 },
+ { "Etc/GMT" , 0x02903A },
+ { "Etc/GMT+0" , 0x029106 },
+ { "Etc/GMT+1" , 0x029190 },
+ { "Etc/GMT+10" , 0x02921D },
+ { "Etc/GMT+11" , 0x0292AB },
+ { "Etc/GMT+12" , 0x029339 },
+ { "Etc/GMT+2" , 0x029454 },
+ { "Etc/GMT+3" , 0x0294E0 },
+ { "Etc/GMT+4" , 0x02956C },
+ { "Etc/GMT+5" , 0x0295F8 },
+ { "Etc/GMT+6" , 0x029684 },
+ { "Etc/GMT+7" , 0x029710 },
+ { "Etc/GMT+8" , 0x02979C },
+ { "Etc/GMT+9" , 0x029828 },
+ { "Etc/GMT-0" , 0x0290C2 },
+ { "Etc/GMT-1" , 0x02914A },
+ { "Etc/GMT-10" , 0x0291D6 },
+ { "Etc/GMT-11" , 0x029264 },
+ { "Etc/GMT-12" , 0x0292F2 },
+ { "Etc/GMT-13" , 0x029380 },
+ { "Etc/GMT-14" , 0x0293C7 },
+ { "Etc/GMT-2" , 0x02940E },
+ { "Etc/GMT-3" , 0x02949A },
+ { "Etc/GMT-4" , 0x029526 },
+ { "Etc/GMT-5" , 0x0295B2 },
+ { "Etc/GMT-6" , 0x02963E },
+ { "Etc/GMT-7" , 0x0296CA },
+ { "Etc/GMT-8" , 0x029756 },
+ { "Etc/GMT-9" , 0x0297E2 },
+ { "Etc/GMT0" , 0x02907E },
+ { "Etc/Greenwich" , 0x02986E },
+ { "Etc/UCT" , 0x0298B2 },
+ { "Etc/Universal" , 0x0298F6 },
+ { "Etc/UTC" , 0x02993A },
+ { "Etc/Zulu" , 0x02997E },
+ { "Europe/Amsterdam" , 0x0299C2 },
+ { "Europe/Andorra" , 0x029E00 },
+ { "Europe/Athens" , 0x02A07C },
+ { "Europe/Belfast" , 0x02A3BF },
+ { "Europe/Belgrade" , 0x02A8F6 },
+ { "Europe/Berlin" , 0x02ABBF },
+ { "Europe/Bratislava" , 0x02AF15 },
+ { "Europe/Brussels" , 0x02B247 },
+ { "Europe/Bucharest" , 0x02B67E },
+ { "Europe/Budapest" , 0x02B9A8 },
+ { "Europe/Chisinau" , 0x02BD1B },
+ { "Europe/Copenhagen" , 0x02C0A9 },
+ { "Europe/Dublin" , 0x02C3B3 },
+ { "Europe/Gibraltar" , 0x02C8C4 },
+ { "Europe/Guernsey" , 0x02CD1B },
+ { "Europe/Helsinki" , 0x02D252 },
+ { "Europe/Isle_of_Man" , 0x02D508 },
+ { "Europe/Istanbul" , 0x02DA3F },
+ { "Europe/Jersey" , 0x02DE2C },
+ { "Europe/Kaliningrad" , 0x02E363 },
+ { "Europe/Kiev" , 0x02E5C9 },
+ { "Europe/Lisbon" , 0x02E8E0 },
+ { "Europe/Ljubljana" , 0x02EDE4 },
+ { "Europe/London" , 0x02F0AD },
+ { "Europe/Luxembourg" , 0x02F5E4 },
+ { "Europe/Madrid" , 0x02FA3A },
+ { "Europe/Malta" , 0x02FE00 },
+ { "Europe/Mariehamn" , 0x0301B9 },
+ { "Europe/Minsk" , 0x03046F },
+ { "Europe/Monaco" , 0x03067D },
+ { "Europe/Moscow" , 0x030AB8 },
+ { "Europe/Nicosia" , 0x030D09 },
+ { "Europe/Oslo" , 0x030FF1 },
+ { "Europe/Paris" , 0x031323 },
+ { "Europe/Podgorica" , 0x031769 },
+ { "Europe/Prague" , 0x031A32 },
+ { "Europe/Riga" , 0x031D64 },
+ { "Europe/Rome" , 0x0320A9 },
+ { "Europe/Samara" , 0x03246C },
+ { "Europe/San_Marino" , 0x03269C },
+ { "Europe/Sarajevo" , 0x032A5F },
+ { "Europe/Simferopol" , 0x032D28 },
+ { "Europe/Skopje" , 0x033053 },
+ { "Europe/Sofia" , 0x03331C },
+ { "Europe/Stockholm" , 0x033624 },
+ { "Europe/Tallinn" , 0x0338D3 },
+ { "Europe/Tirane" , 0x033C0D },
+ { "Europe/Tiraspol" , 0x033F13 },
+ { "Europe/Uzhgorod" , 0x0342A1 },
+ { "Europe/Vaduz" , 0x0345B8 },
+ { "Europe/Vatican" , 0x03484B },
+ { "Europe/Vienna" , 0x034C0E },
+ { "Europe/Vilnius" , 0x034F3B },
+ { "Europe/Volgograd" , 0x03527A },
+ { "Europe/Warsaw" , 0x03547A },
+ { "Europe/Zagreb" , 0x03585B },
+ { "Europe/Zaporozhye" , 0x035B24 },
+ { "Europe/Zurich" , 0x035E65 },
+ { "Factory" , 0x036114 },
+ { "GB" , 0x036185 },
+ { "GB-Eire" , 0x0366BC },
+ { "GMT" , 0x036BF3 },
+ { "GMT+0" , 0x036CBF },
+ { "GMT-0" , 0x036C7B },
+ { "GMT0" , 0x036C37 },
+ { "Greenwich" , 0x036D03 },
+ { "Hongkong" , 0x036D47 },
+ { "HST" , 0x036F09 },
+ { "Iceland" , 0x036F4D },
+ { "Indian/Antananarivo" , 0x037106 },
+ { "Indian/Chagos" , 0x03717A },
+ { "Indian/Christmas" , 0x0371DC },
+ { "Indian/Cocos" , 0x037220 },
+ { "Indian/Comoro" , 0x037264 },
+ { "Indian/Kerguelen" , 0x0372B9 },
+ { "Indian/Mahe" , 0x03730E },
+ { "Indian/Maldives" , 0x037363 },
+ { "Indian/Mauritius" , 0x0373B8 },
+ { "Indian/Mayotte" , 0x03742E },
+ { "Indian/Reunion" , 0x037483 },
+ { "Iran" , 0x0374D8 },
+ { "Israel" , 0x037746 },
+ { "Jamaica" , 0x037A75 },
+ { "Japan" , 0x037B3A },
+ { "Kwajalein" , 0x037BC3 },
+ { "Libya" , 0x037C26 },
+ { "MET" , 0x037D20 },
+ { "Mexico/BajaNorte" , 0x038029 },
+ { "Mexico/BajaSur" , 0x038392 },
+ { "Mexico/General" , 0x0385D7 },
+ { "MST" , 0x038835 },
+ { "MST7MDT" , 0x038879 },
+ { "Navajo" , 0x038BCA },
+ { "NZ" , 0x038F43 },
+ { "NZ-CHAT" , 0x0392C1 },
+ { "Pacific/Apia" , 0x0395A9 },
+ { "Pacific/Auckland" , 0x039646 },
+ { "Pacific/Chatham" , 0x0399D2 },
+ { "Pacific/Chuuk" , 0x039CC9 },
+ { "Pacific/Easter" , 0x039D22 },
+ { "Pacific/Efate" , 0x03A080 },
+ { "Pacific/Enderbury" , 0x03A146 },
+ { "Pacific/Fakaofo" , 0x03A1B4 },
+ { "Pacific/Fiji" , 0x03A1F8 },
+ { "Pacific/Funafuti" , 0x03A28C },
+ { "Pacific/Galapagos" , 0x03A2D0 },
+ { "Pacific/Gambier" , 0x03A348 },
+ { "Pacific/Guadalcanal" , 0x03A3AD },
+ { "Pacific/Guam" , 0x03A402 },
+ { "Pacific/Honolulu" , 0x03A458 },
+ { "Pacific/Johnston" , 0x03A4CF },
+ { "Pacific/Kiritimati" , 0x03A521 },
+ { "Pacific/Kosrae" , 0x03A58C },
+ { "Pacific/Kwajalein" , 0x03A5E9 },
+ { "Pacific/Majuro" , 0x03A655 },
+ { "Pacific/Marquesas" , 0x03A6B4 },
+ { "Pacific/Midway" , 0x03A71B },
+ { "Pacific/Nauru" , 0x03A7A5 },
+ { "Pacific/Niue" , 0x03A81D },
+ { "Pacific/Norfolk" , 0x03A87B },
+ { "Pacific/Noumea" , 0x03A8D0 },
+ { "Pacific/Pago_Pago" , 0x03A960 },
+ { "Pacific/Palau" , 0x03A9E9 },
+ { "Pacific/Pitcairn" , 0x03AA2D },
+ { "Pacific/Pohnpei" , 0x03AA82 },
+ { "Pacific/Ponape" , 0x03AAD7 },
+ { "Pacific/Port_Moresby" , 0x03AB1C },
+ { "Pacific/Rarotonga" , 0x03AB60 },
+ { "Pacific/Saipan" , 0x03AC3C },
+ { "Pacific/Samoa" , 0x03AC9F },
+ { "Pacific/Tahiti" , 0x03AD28 },
+ { "Pacific/Tarawa" , 0x03AD8D },
+ { "Pacific/Tongatapu" , 0x03ADE1 },
+ { "Pacific/Truk" , 0x03AE6D },
+ { "Pacific/Wake" , 0x03AEB2 },
+ { "Pacific/Wallis" , 0x03AF02 },
+ { "Pacific/Yap" , 0x03AF46 },
+ { "Poland" , 0x03AF8B },
+ { "Portugal" , 0x03B36C },
+ { "PRC" , 0x03B868 },
+ { "PST8PDT" , 0x03B919 },
+ { "ROC" , 0x03BC6A },
+ { "ROK" , 0x03BD82 },
+ { "Singapore" , 0x03BE26 },
+ { "Turkey" , 0x03BEDD },
+ { "UCT" , 0x03C2CA },
+ { "Universal" , 0x03C30E },
+ { "US/Alaska" , 0x03C352 },
+ { "US/Aleutian" , 0x03C6BB },
+ { "US/Arizona" , 0x03CA21 },
+ { "US/Central" , 0x03CAAF },
+ { "US/East-Indiana" , 0x03D4B9 },
+ { "US/Eastern" , 0x03CFBA },
+ { "US/Hawaii" , 0x03D723 },
+ { "US/Indiana-Starke" , 0x03D794 },
+ { "US/Michigan" , 0x03DB05 },
+ { "US/Mountain" , 0x03DE3C },
+ { "US/Pacific" , 0x03E1B5 },
+ { "US/Pacific-New" , 0x03E5BA },
+ { "US/Samoa" , 0x03E9BF },
+ { "UTC" , 0x03EA48 },
+ { "W-SU" , 0x03ED3F },
+ { "WET" , 0x03EA8C },
+ { "Zulu" , 0x03EF79 },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[257855] = {
+const unsigned char timelib_timezone_db_data_builtin[257981] = {
/* Africa/Abidjan */
@@ -840,8 +842,8 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xB6, 0xA3, 0xD3, 0xAC,
-0xD6, 0x9D, 0x7F, 0xD0, 0xEF, 0x12, 0x66, 0xE3, 0x01, 0x02, 0x01, 0x00, 0x00, 0x24, 0xD4, 0x00,
-0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x26, 0x9D, 0x00, 0x08, 0x4C, 0x4D, 0x54,
+0xD6, 0x9D, 0x7F, 0xD0, 0xEF, 0x12, 0x66, 0xD4, 0x01, 0x02, 0x01, 0x00, 0x00, 0x24, 0xD4, 0x00,
+0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x08, 0x4C, 0x4D, 0x54,
0x00, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7E, 0xF4, 0x00, 0x01, 0x4E, 0x99, 0x8D, 0x00, 0x00, 0x00, 0x00,
@@ -914,13 +916,33 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x61, 0x46, 0x58, 0x01, 0x3D, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00,
+/* Africa/Juba */
+0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x53, 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, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB6, 0xA3, 0xDA, 0xE0,
+0x00, 0x9E, 0x17, 0xE0, 0x01, 0x7A, 0x34, 0x50, 0x02, 0x7D, 0xF9, 0xE0, 0x03, 0x5B, 0x67, 0xD0,
+0x04, 0x60, 0x7E, 0xE0, 0x05, 0x3D, 0xEC, 0xD0, 0x06, 0x40, 0x60, 0xE0, 0x07, 0x1F, 0x20, 0x50,
+0x08, 0x20, 0x42, 0xE0, 0x09, 0x00, 0x53, 0xD0, 0x0A, 0x00, 0x24, 0xE0, 0x0A, 0xE1, 0x87, 0x50,
+0x0B, 0xE0, 0x06, 0xE0, 0x0C, 0xC4, 0x0C, 0x50, 0x0D, 0xBF, 0xE8, 0xE0, 0x0E, 0xA5, 0x3F, 0xD0,
+0x0F, 0xA9, 0x05, 0x60, 0x10, 0x86, 0x73, 0x50, 0x11, 0x88, 0xE7, 0x60, 0x12, 0x67, 0xA6, 0xD0,
+0x13, 0x68, 0xC9, 0x60, 0x14, 0x4A, 0x2B, 0xD0, 0x15, 0x48, 0xAB, 0x60, 0x16, 0x2B, 0x5F, 0x50,
+0x17, 0x28, 0x8D, 0x60, 0x18, 0x0C, 0x92, 0xD0, 0x19, 0x08, 0x6F, 0x60, 0x19, 0xED, 0xC6, 0x50,
+0x1A, 0xF1, 0x8B, 0xE0, 0x1B, 0xD0, 0x4B, 0x50, 0x1C, 0xD1, 0x6D, 0xE0, 0x1D, 0xB1, 0x7E, 0xD0,
+0x38, 0x80, 0x45, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30,
+0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x4C, 0x4D,
+0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xBA, 0xC8, 0x01, 0x42, 0xE0, 0x40, 0x00,
+0x00, 0x00, 0x00,
+
/* Africa/Kampala */
0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x13, 0xB1, 0xEE, 0xDF, 0x1C,
-0xB4, 0xC2, 0x9A, 0xD0, 0xD6, 0x9D, 0x86, 0xD8, 0xE7, 0x8C, 0x47, 0x63, 0x01, 0x02, 0x03, 0x01,
+0xB4, 0xC2, 0x9A, 0xD0, 0xD6, 0x9D, 0x86, 0xD8, 0xE7, 0x8C, 0x47, 0x54, 0x01, 0x02, 0x03, 0x01,
0x00, 0x00, 0x1E, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28,
-0x00, 0x08, 0x00, 0x00, 0x26, 0x9D, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
+0x00, 0x08, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
0x42, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x89, 0xCF, 0xF2, 0x01, 0x44, 0x1F, 0x42, 0x00, 0x00, 0x00, 0x00,
@@ -1062,9 +1084,9 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x13, 0xB1, 0xEE, 0xDA, 0xFC,
-0xB4, 0xC2, 0x9A, 0xD0, 0xC7, 0x91, 0x47, 0xD8, 0xED, 0x2F, 0xE1, 0xE3, 0x01, 0x02, 0x03, 0x01,
+0xB4, 0xC2, 0x9A, 0xD0, 0xC7, 0x91, 0x47, 0xD8, 0xED, 0x2F, 0xE1, 0xD4, 0x01, 0x02, 0x03, 0x01,
0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28,
-0x00, 0x08, 0x00, 0x00, 0x26, 0x9D, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
+0x00, 0x08, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
0x42, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x87, 0x5E, 0xF2, 0x01, 0x4A, 0xD6, 0x02, 0x00, 0x00, 0x00, 0x00,
@@ -1890,7 +1912,7 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* America/Bahia */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x6B, 0x1C,
+0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x6B, 0x1C,
0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20,
0xDA, 0x38, 0xAE, 0x30, 0xDA, 0xEB, 0xFA, 0x30, 0xDC, 0x19, 0xE1, 0xB0, 0xDC, 0xB9, 0x59, 0x20,
0xDD, 0xFB, 0x15, 0x30, 0xDE, 0x9B, 0xDE, 0x20, 0xDF, 0xDD, 0x9A, 0x30, 0xE0, 0x54, 0x33, 0x20,
@@ -1905,14 +1927,31 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x32, 0x57, 0x20, 0xB0, 0x33, 0x06, 0x6A, 0x20, 0x34, 0x38, 0x54, 0x30, 0x34, 0xF8, 0xC1, 0x20,
0x36, 0x20, 0x1F, 0x30, 0x36, 0xCF, 0x68, 0xA0, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xB8, 0x85, 0x20,
0x39, 0xDF, 0xE3, 0x30, 0x3A, 0x8F, 0x2C, 0xA0, 0x3B, 0xC8, 0xFF, 0xB0, 0x3C, 0x6F, 0x0E, 0xA0,
-0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, 0x4F, 0x49, 0x92, 0x20,
+0x50, 0x83, 0x65, 0x30, 0x51, 0x20, 0x39, 0xA0, 0x52, 0x63, 0x47, 0x30, 0x53, 0x00, 0x1B, 0xA0,
+0x54, 0x43, 0x29, 0x30, 0x54, 0xE9, 0x38, 0x20, 0x56, 0x23, 0x0B, 0x30, 0x56, 0xC9, 0x1A, 0x20,
+0x58, 0x02, 0xED, 0x30, 0x58, 0xA8, 0xFC, 0x20, 0x59, 0xE2, 0xCF, 0x30, 0x5A, 0x88, 0xDE, 0x20,
+0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x68, 0xC0, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, 0x5E, 0x48, 0xA2, 0x20,
+0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x31, 0xBE, 0xA0, 0x61, 0x6B, 0x91, 0xB0, 0x62, 0x11, 0xA0, 0xA0,
+0x63, 0x4B, 0x73, 0xB0, 0x63, 0xFA, 0xBD, 0x20, 0x65, 0x2B, 0x55, 0xB0, 0x65, 0xD1, 0x64, 0xA0,
+0x67, 0x14, 0x72, 0x30, 0x67, 0xB1, 0x46, 0xA0, 0x68, 0xF4, 0x54, 0x30, 0x69, 0x9A, 0x63, 0x20,
+0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x7A, 0x45, 0x20, 0x6C, 0xB4, 0x18, 0x30, 0x6D, 0x5A, 0x27, 0x20,
+0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x3A, 0x09, 0x20, 0x70, 0x7D, 0x16, 0xB0, 0x71, 0x19, 0xEB, 0x20,
+0x72, 0x5C, 0xF8, 0xB0, 0x72, 0xF9, 0xCD, 0x20, 0x74, 0x3C, 0xDA, 0xB0, 0x74, 0xD9, 0xAF, 0x20,
+0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xC2, 0xCB, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, 0x78, 0xAB, 0xE8, 0x20,
+0x79, 0xDC, 0x80, 0xB0, 0x7A, 0x82, 0x8F, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, 0x7C, 0x62, 0x71, 0xA0,
+0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x4B, 0x8E, 0x20, 0x7F, 0x85, 0x61, 0x30, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0xFF, 0xFF, 0xDB, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF,
-0xFF, 0xD5, 0xD0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52,
-0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x84, 0xA2, 0x00, 0xD7, 0xE2, 0xED,
-0x00, 0x00, 0x00, 0x05, 0x42, 0x61, 0x68, 0x69, 0x61,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xDB, 0xE4,
+0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x09, 0x4C, 0x4D,
+0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x75, 0x84, 0xA2, 0x00, 0xD7, 0xE2, 0xED, 0x00, 0x00, 0x00, 0x05, 0x42, 0x61, 0x68,
+0x69, 0x61,
/* America/Bahia_Banderas */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -3160,20 +3199,20 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x42, 0x4F, 0x6A, 0x7C, 0x43, 0x64, 0x37, 0x6C, 0x44, 0x2F, 0x4C, 0x7C, 0x45, 0x44, 0x19, 0x6C,
0x45, 0xF3, 0x7E, 0xFC, 0x47, 0x2D, 0x35, 0xEC, 0x47, 0xD3, 0x60, 0xFC, 0x49, 0x0D, 0x17, 0xEC,
0x49, 0xB3, 0x42, 0xFC, 0x4A, 0xEC, 0xF9, 0xEC, 0x4B, 0x9C, 0x5F, 0x7C, 0x4C, 0xD6, 0x16, 0x6C,
-0x4D, 0x7C, 0x41, 0x7C, 0x4E, 0xB5, 0xF8, 0x6C, 0x4F, 0x5C, 0x23, 0x7C, 0x50, 0x95, 0xDA, 0x6C,
-0x51, 0x3C, 0x05, 0x7C, 0x52, 0x75, 0xBC, 0x6C, 0x53, 0x1B, 0xE7, 0x7C, 0x54, 0x55, 0x9E, 0x6C,
-0x54, 0xFB, 0xC9, 0x7C, 0x56, 0x35, 0x80, 0x6C, 0x56, 0xE4, 0xE5, 0xFC, 0x58, 0x1E, 0x9C, 0xEC,
-0x58, 0xC4, 0xC7, 0xFC, 0x59, 0xFE, 0x7E, 0xEC, 0x5A, 0xA4, 0xA9, 0xFC, 0x5B, 0xDE, 0x60, 0xEC,
-0x5C, 0x84, 0x8B, 0xFC, 0x5D, 0xBE, 0x42, 0xEC, 0x5E, 0x64, 0x6D, 0xFC, 0x5F, 0x9E, 0x24, 0xEC,
-0x60, 0x4D, 0x8A, 0x7C, 0x61, 0x87, 0x41, 0x6C, 0x62, 0x2D, 0x6C, 0x7C, 0x63, 0x67, 0x23, 0x6C,
-0x64, 0x0D, 0x4E, 0x7C, 0x65, 0x47, 0x05, 0x6C, 0x65, 0xED, 0x30, 0x7C, 0x67, 0x26, 0xE7, 0x6C,
-0x67, 0xCD, 0x12, 0x7C, 0x69, 0x06, 0xC9, 0x6C, 0x69, 0xAC, 0xF4, 0x7C, 0x6A, 0xE6, 0xAB, 0x6C,
-0x6B, 0x96, 0x10, 0xFC, 0x6C, 0xCF, 0xC7, 0xEC, 0x6D, 0x75, 0xF2, 0xFC, 0x6E, 0xAF, 0xA9, 0xEC,
-0x6F, 0x55, 0xD4, 0xFC, 0x70, 0x8F, 0x8B, 0xEC, 0x71, 0x35, 0xB6, 0xFC, 0x72, 0x6F, 0x6D, 0xEC,
-0x73, 0x15, 0x98, 0xFC, 0x74, 0x4F, 0x4F, 0xEC, 0x74, 0xFE, 0xB5, 0x7C, 0x76, 0x38, 0x6C, 0x6C,
-0x76, 0xDE, 0x97, 0x7C, 0x78, 0x18, 0x4E, 0x6C, 0x78, 0xBE, 0x79, 0x7C, 0x79, 0xF8, 0x30, 0x6C,
-0x7A, 0x9E, 0x5B, 0x7C, 0x7B, 0xD8, 0x12, 0x6C, 0x7C, 0x7E, 0x3D, 0x7C, 0x7D, 0xB7, 0xF4, 0x6C,
-0x7E, 0x5E, 0x1F, 0x7C, 0x7F, 0x97, 0xD6, 0x6C, 0x01, 0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x4D, 0x7C, 0x41, 0x7C, 0x4E, 0xB6, 0x14, 0x50, 0x4F, 0x5C, 0x3F, 0x60, 0x50, 0x95, 0xF6, 0x50,
+0x51, 0x3C, 0x21, 0x60, 0x52, 0x75, 0xD8, 0x50, 0x53, 0x1C, 0x03, 0x60, 0x54, 0x55, 0xBA, 0x50,
+0x54, 0xFB, 0xE5, 0x60, 0x56, 0x35, 0x9C, 0x50, 0x56, 0xE5, 0x01, 0xE0, 0x58, 0x1E, 0xB8, 0xD0,
+0x58, 0xC4, 0xE3, 0xE0, 0x59, 0xFE, 0x9A, 0xD0, 0x5A, 0xA4, 0xC5, 0xE0, 0x5B, 0xDE, 0x7C, 0xD0,
+0x5C, 0x84, 0xA7, 0xE0, 0x5D, 0xBE, 0x5E, 0xD0, 0x5E, 0x64, 0x89, 0xE0, 0x5F, 0x9E, 0x40, 0xD0,
+0x60, 0x4D, 0xA6, 0x60, 0x61, 0x87, 0x5D, 0x50, 0x62, 0x2D, 0x88, 0x60, 0x63, 0x67, 0x3F, 0x50,
+0x64, 0x0D, 0x6A, 0x60, 0x65, 0x47, 0x21, 0x50, 0x65, 0xED, 0x4C, 0x60, 0x67, 0x27, 0x03, 0x50,
+0x67, 0xCD, 0x2E, 0x60, 0x69, 0x06, 0xE5, 0x50, 0x69, 0xAD, 0x10, 0x60, 0x6A, 0xE6, 0xC7, 0x50,
+0x6B, 0x96, 0x2C, 0xE0, 0x6C, 0xCF, 0xE3, 0xD0, 0x6D, 0x76, 0x0E, 0xE0, 0x6E, 0xAF, 0xC5, 0xD0,
+0x6F, 0x55, 0xF0, 0xE0, 0x70, 0x8F, 0xA7, 0xD0, 0x71, 0x35, 0xD2, 0xE0, 0x72, 0x6F, 0x89, 0xD0,
+0x73, 0x15, 0xB4, 0xE0, 0x74, 0x4F, 0x6B, 0xD0, 0x74, 0xFE, 0xD1, 0x60, 0x76, 0x38, 0x88, 0x50,
+0x76, 0xDE, 0xB3, 0x60, 0x78, 0x18, 0x6A, 0x50, 0x78, 0xBE, 0x95, 0x60, 0x79, 0xF8, 0x4C, 0x50,
+0x7A, 0x9E, 0x77, 0x60, 0x7B, 0xD8, 0x2E, 0x50, 0x7C, 0x7E, 0x59, 0x60, 0x7D, 0xB8, 0x10, 0x50,
+0x7E, 0x5E, 0x3B, 0x60, 0x7F, 0x97, 0xF2, 0x50, 0x01, 0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x04, 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,
@@ -3401,7 +3440,7 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x6F, 0x96, 0x50, 0x45, 0x44, 0x35, 0x50,
0x45, 0xF3, 0x8C, 0xD0, 0x47, 0x24, 0x17, 0x50, 0x47, 0xDC, 0xA9, 0x50, 0x49, 0x03, 0xF9, 0x50,
0x49, 0xB3, 0x50, 0xD0, 0x4A, 0xE3, 0xDB, 0x50, 0x4B, 0x9C, 0x6D, 0x50, 0x4C, 0xCC, 0xF7, 0xD0,
-0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xAC, 0xD9, 0xD0, 0x4F, 0x5C, 0x31, 0x50, 0x50, 0x8C, 0xBB, 0xD0,
+0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xBF, 0x4E, 0xD0, 0x4F, 0x5C, 0x31, 0x50, 0x50, 0x8C, 0xBB, 0xD0,
0x51, 0x3C, 0x13, 0x50, 0x52, 0x6C, 0x9D, 0xD0, 0x53, 0x1B, 0xF5, 0x50, 0x54, 0x4C, 0x7F, 0xD0,
0x54, 0xFB, 0xD7, 0x50, 0x56, 0x2C, 0x61, 0xD0, 0x56, 0xE4, 0xF3, 0xD0, 0x58, 0x15, 0x7E, 0x50,
0x58, 0xC4, 0xD5, 0xD0, 0x59, 0xF5, 0x60, 0x50, 0x5A, 0xA4, 0xB7, 0xD0, 0x5B, 0xD5, 0x42, 0x50,
@@ -4705,8 +4744,8 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* America/Metlakatla */
0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xCB, 0x89, 0x1A, 0xA0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xCB, 0x89, 0x1A, 0xA0,
0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xA8, 0x2A, 0x10,
0x00, 0x98, 0x29, 0x20, 0x01, 0x88, 0x0C, 0x10, 0x02, 0x78, 0x0B, 0x20, 0x03, 0x71, 0x28, 0x90,
0x04, 0x61, 0x27, 0xA0, 0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0, 0x07, 0x30, 0xEC, 0x90,
@@ -4715,49 +4754,15 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x0F, 0xA9, 0xAE, 0x20, 0x10, 0x99, 0x91, 0x10, 0x11, 0x89, 0x90, 0x20, 0x12, 0x79, 0x73, 0x10,
0x13, 0x69, 0x72, 0x20, 0x14, 0x59, 0x55, 0x10, 0x15, 0x49, 0x54, 0x20, 0x16, 0x39, 0x37, 0x10,
0x17, 0x29, 0x36, 0x20, 0x18, 0x22, 0x53, 0x90, 0x19, 0x09, 0x18, 0x20, 0x1A, 0x02, 0x35, 0x90,
-0x1A, 0xF2, 0x34, 0xA0, 0x1B, 0xE2, 0x17, 0x90, 0x1C, 0xD2, 0x16, 0xA0, 0x1D, 0xC1, 0xF9, 0x90,
-0x1E, 0xB1, 0xF8, 0xA0, 0x1F, 0xA1, 0xDB, 0x90, 0x20, 0x76, 0x2B, 0x20, 0x21, 0x81, 0xBD, 0x90,
-0x22, 0x56, 0x0D, 0x20, 0x23, 0x6A, 0xDA, 0x10, 0x24, 0x35, 0xEF, 0x20, 0x25, 0x4A, 0xBC, 0x10,
-0x26, 0x15, 0xD1, 0x20, 0x27, 0x2A, 0x9E, 0x10, 0x27, 0xFE, 0xED, 0xA0, 0x29, 0x0A, 0x80, 0x10,
-0x29, 0xDE, 0xCF, 0xA0, 0x2A, 0xEA, 0x62, 0x10, 0x2B, 0xBE, 0xB1, 0xA0, 0x2C, 0xD3, 0x7E, 0x90,
-0x2D, 0x9E, 0x93, 0xA0, 0x2E, 0xB3, 0x60, 0x90, 0x2F, 0x7E, 0x75, 0xA0, 0x30, 0x93, 0x42, 0x90,
-0x31, 0x67, 0x92, 0x20, 0x32, 0x73, 0x24, 0x90, 0x33, 0x47, 0x74, 0x20, 0x34, 0x53, 0x06, 0x90,
-0x35, 0x27, 0x56, 0x20, 0x36, 0x32, 0xE8, 0x90, 0x37, 0x07, 0x38, 0x20, 0x38, 0x1C, 0x05, 0x10,
-0x38, 0xE7, 0x1A, 0x20, 0x39, 0xFB, 0xE7, 0x10, 0x3A, 0xC6, 0xFC, 0x20, 0x3B, 0xDB, 0xC9, 0x10,
-0x3C, 0xB0, 0x18, 0xA0, 0x3D, 0xBB, 0xAB, 0x10, 0x3E, 0x8F, 0xFA, 0xA0, 0x3F, 0x9B, 0x8D, 0x10,
-0x40, 0x6F, 0xDC, 0xA0, 0x41, 0x84, 0xA9, 0x90, 0x42, 0x4F, 0xBE, 0xA0, 0x43, 0x64, 0x8B, 0x90,
-0x44, 0x2F, 0xA0, 0xA0, 0x45, 0x44, 0x6D, 0x90, 0x45, 0xF3, 0xD3, 0x20, 0x47, 0x2D, 0x8A, 0x10,
-0x47, 0xD3, 0xB5, 0x20, 0x49, 0x0D, 0x6C, 0x10, 0x49, 0xB3, 0x97, 0x20, 0x4A, 0xED, 0x4E, 0x10,
-0x4B, 0x9C, 0xB3, 0xA0, 0x4C, 0xD6, 0x6A, 0x90, 0x4D, 0x7C, 0x95, 0xA0, 0x4E, 0xB6, 0x4C, 0x90,
-0x4F, 0x5C, 0x77, 0xA0, 0x50, 0x96, 0x2E, 0x90, 0x51, 0x3C, 0x59, 0xA0, 0x52, 0x76, 0x10, 0x90,
-0x53, 0x1C, 0x3B, 0xA0, 0x54, 0x55, 0xF2, 0x90, 0x54, 0xFC, 0x1D, 0xA0, 0x56, 0x35, 0xD4, 0x90,
-0x56, 0xE5, 0x3A, 0x20, 0x58, 0x1E, 0xF1, 0x10, 0x58, 0xC5, 0x1C, 0x20, 0x59, 0xFE, 0xD3, 0x10,
-0x5A, 0xA4, 0xFE, 0x20, 0x5B, 0xDE, 0xB5, 0x10, 0x5C, 0x84, 0xE0, 0x20, 0x5D, 0xBE, 0x97, 0x10,
-0x5E, 0x64, 0xC2, 0x20, 0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0, 0x61, 0x87, 0x95, 0x90,
-0x62, 0x2D, 0xC0, 0xA0, 0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0, 0x65, 0x47, 0x59, 0x90,
-0x65, 0xED, 0x84, 0xA0, 0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0, 0x69, 0x07, 0x1D, 0x90,
-0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20, 0x6C, 0xD0, 0x1C, 0x10,
-0x6D, 0x76, 0x47, 0x20, 0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20, 0x70, 0x8F, 0xE0, 0x10,
-0x71, 0x36, 0x0B, 0x20, 0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20, 0x74, 0x4F, 0xA4, 0x10,
-0x74, 0xFF, 0x09, 0xA0, 0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0, 0x78, 0x18, 0xA2, 0x90,
-0x78, 0xBE, 0xCD, 0xA0, 0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0, 0x7B, 0xD8, 0x66, 0x90,
-0x7C, 0x7E, 0x91, 0xA0, 0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0, 0x7F, 0x98, 0x2A, 0x90,
0x01, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0x8F,
-0x80, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF,
-0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01,
-0x10, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54,
-0x00, 0x4D, 0x65, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-0x00, 0x00, 0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x65,
-0x74, 0x6C, 0x61, 0x6B, 0x61, 0x74, 0x6C, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20,
-0x41, 0x6E, 0x6E, 0x65, 0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64,
+0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x9D,
+0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x10, 0x50,
+0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x4D,
+0x65, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xDD,
+0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x65, 0x74, 0x6C, 0x61, 0x6B,
+0x61, 0x74, 0x6C, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65,
+0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64,
/* America/Mexico_City */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -5916,8 +5921,8 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* America/Resolute */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xD5, 0xFB, 0x81, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xD5, 0xFB, 0x81, 0x80,
0xF7, 0x2F, 0x4C, 0x60, 0xF8, 0x28, 0x77, 0xE0, 0x13, 0x69, 0x56, 0x00, 0x14, 0x59, 0x38, 0xF0,
0x15, 0x49, 0x38, 0x00, 0x16, 0x39, 0x1A, 0xF0, 0x17, 0x29, 0x1A, 0x00, 0x18, 0x22, 0x37, 0x70,
0x19, 0x08, 0xFC, 0x00, 0x1A, 0x02, 0x19, 0x70, 0x1A, 0xF2, 0x18, 0x80, 0x1B, 0xE1, 0xFB, 0x70,
@@ -5932,37 +5937,37 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x3A, 0xC6, 0xE0, 0x00, 0x3B, 0xDB, 0xAC, 0xF0, 0x3C, 0xAF, 0xFC, 0x80, 0x3D, 0xBB, 0x8E, 0xF0,
0x3E, 0x8F, 0xDE, 0x80, 0x3F, 0x9B, 0x70, 0xF0, 0x40, 0x6F, 0xC0, 0x80, 0x41, 0x84, 0x8D, 0x70,
0x42, 0x4F, 0xA2, 0x80, 0x43, 0x64, 0x6F, 0x70, 0x44, 0x2F, 0x84, 0x80, 0x45, 0x44, 0x51, 0x70,
-0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x6D, 0xF0, 0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x4F, 0xF0,
-0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x31, 0xF0, 0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x4E, 0x70,
-0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x30, 0x70, 0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x12, 0x70,
-0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xF4, 0x70, 0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xD6, 0x70,
-0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xB8, 0x70, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xD4, 0xF0,
-0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xB6, 0xF0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x98, 0xF0,
-0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x5C, 0xF0,
-0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x5B, 0x70,
-0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x1F, 0x70,
-0x67, 0xCD, 0x3C, 0x70, 0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xE3, 0x70,
-0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xE1, 0xF0,
-0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0xA5, 0xF0,
-0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0xA4, 0x70,
-0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x68, 0x70,
-0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x2C, 0x70,
-0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x47, 0xD3, 0x99, 0x00, 0x49, 0x0D, 0x4F, 0xF0,
+0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x4B, 0x9C, 0x97, 0x80, 0x4C, 0xD6, 0x4E, 0x70,
+0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70, 0x4F, 0x5C, 0x5B, 0x80, 0x50, 0x96, 0x12, 0x70,
+0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70, 0x53, 0x1C, 0x1F, 0x80, 0x54, 0x55, 0xD6, 0x70,
+0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70, 0x56, 0xE5, 0x1E, 0x00, 0x58, 0x1E, 0xD4, 0xF0,
+0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x5A, 0xA4, 0xE2, 0x00, 0x5B, 0xDE, 0x98, 0xF0,
+0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0,
+0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70,
+0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70,
+0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70,
+0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0,
+0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0,
+0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70,
+0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70,
+0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70,
+0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70, 0x02, 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, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00,
+0x04, 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, 0x02, 0x03, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00,
-0x09, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0D, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x11, 0xFF, 0xFF, 0xB9,
-0xB0, 0x00, 0x0D, 0x7A, 0x7A, 0x7A, 0x00, 0x43, 0x44, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00,
-0x43, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x4E, 0x33, 0x00, 0x81, 0xF5, 0xDB, 0x00, 0x00, 0x00, 0x29,
-0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64,
-0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x52, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65,
-0x2C, 0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75, 0x74,
+0x09, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0D, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x11, 0x7A, 0x7A, 0x7A,
+0x00, 0x43, 0x44, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x45, 0x53,
+0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x4E, 0x33,
+0x00, 0x81, 0xF5, 0xDB, 0x00, 0x00, 0x00, 0x29, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20,
+0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20,
+0x52, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x2C, 0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75,
+0x74,
/* America/Rio_Branco */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -6444,20 +6449,20 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x43, 0x64, 0x30, 0x64, 0x44, 0x2F, 0x45, 0x74, 0x45, 0x44, 0x12, 0x64, 0x45, 0xF3, 0x77, 0xF4,
0x47, 0x2D, 0x2E, 0xE4, 0x47, 0xD3, 0x59, 0xF4, 0x49, 0x0D, 0x10, 0xE4, 0x49, 0xB3, 0x3B, 0xF4,
0x4A, 0xEC, 0xF2, 0xE4, 0x4B, 0x9C, 0x58, 0x74, 0x4C, 0xD6, 0x0F, 0x64, 0x4D, 0x7C, 0x3A, 0x74,
-0x4E, 0xB5, 0xF1, 0x64, 0x4F, 0x5C, 0x1C, 0x74, 0x50, 0x95, 0xD3, 0x64, 0x51, 0x3B, 0xFE, 0x74,
-0x52, 0x75, 0xB5, 0x64, 0x53, 0x1B, 0xE0, 0x74, 0x54, 0x55, 0x97, 0x64, 0x54, 0xFB, 0xC2, 0x74,
-0x56, 0x35, 0x79, 0x64, 0x56, 0xE4, 0xDE, 0xF4, 0x58, 0x1E, 0x95, 0xE4, 0x58, 0xC4, 0xC0, 0xF4,
-0x59, 0xFE, 0x77, 0xE4, 0x5A, 0xA4, 0xA2, 0xF4, 0x5B, 0xDE, 0x59, 0xE4, 0x5C, 0x84, 0x84, 0xF4,
-0x5D, 0xBE, 0x3B, 0xE4, 0x5E, 0x64, 0x66, 0xF4, 0x5F, 0x9E, 0x1D, 0xE4, 0x60, 0x4D, 0x83, 0x74,
-0x61, 0x87, 0x3A, 0x64, 0x62, 0x2D, 0x65, 0x74, 0x63, 0x67, 0x1C, 0x64, 0x64, 0x0D, 0x47, 0x74,
-0x65, 0x46, 0xFE, 0x64, 0x65, 0xED, 0x29, 0x74, 0x67, 0x26, 0xE0, 0x64, 0x67, 0xCD, 0x0B, 0x74,
-0x69, 0x06, 0xC2, 0x64, 0x69, 0xAC, 0xED, 0x74, 0x6A, 0xE6, 0xA4, 0x64, 0x6B, 0x96, 0x09, 0xF4,
-0x6C, 0xCF, 0xC0, 0xE4, 0x6D, 0x75, 0xEB, 0xF4, 0x6E, 0xAF, 0xA2, 0xE4, 0x6F, 0x55, 0xCD, 0xF4,
-0x70, 0x8F, 0x84, 0xE4, 0x71, 0x35, 0xAF, 0xF4, 0x72, 0x6F, 0x66, 0xE4, 0x73, 0x15, 0x91, 0xF4,
-0x74, 0x4F, 0x48, 0xE4, 0x74, 0xFE, 0xAE, 0x74, 0x76, 0x38, 0x65, 0x64, 0x76, 0xDE, 0x90, 0x74,
-0x78, 0x18, 0x47, 0x64, 0x78, 0xBE, 0x72, 0x74, 0x79, 0xF8, 0x29, 0x64, 0x7A, 0x9E, 0x54, 0x74,
-0x7B, 0xD8, 0x0B, 0x64, 0x7C, 0x7E, 0x36, 0x74, 0x7D, 0xB7, 0xED, 0x64, 0x7E, 0x5E, 0x18, 0x74,
-0x7F, 0x97, 0xCF, 0x64, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x4E, 0xB6, 0x0D, 0x48, 0x4F, 0x5C, 0x38, 0x58, 0x50, 0x95, 0xEF, 0x48, 0x51, 0x3C, 0x1A, 0x58,
+0x52, 0x75, 0xD1, 0x48, 0x53, 0x1B, 0xFC, 0x58, 0x54, 0x55, 0xB3, 0x48, 0x54, 0xFB, 0xDE, 0x58,
+0x56, 0x35, 0x95, 0x48, 0x56, 0xE4, 0xFA, 0xD8, 0x58, 0x1E, 0xB1, 0xC8, 0x58, 0xC4, 0xDC, 0xD8,
+0x59, 0xFE, 0x93, 0xC8, 0x5A, 0xA4, 0xBE, 0xD8, 0x5B, 0xDE, 0x75, 0xC8, 0x5C, 0x84, 0xA0, 0xD8,
+0x5D, 0xBE, 0x57, 0xC8, 0x5E, 0x64, 0x82, 0xD8, 0x5F, 0x9E, 0x39, 0xC8, 0x60, 0x4D, 0x9F, 0x58,
+0x61, 0x87, 0x56, 0x48, 0x62, 0x2D, 0x81, 0x58, 0x63, 0x67, 0x38, 0x48, 0x64, 0x0D, 0x63, 0x58,
+0x65, 0x47, 0x1A, 0x48, 0x65, 0xED, 0x45, 0x58, 0x67, 0x26, 0xFC, 0x48, 0x67, 0xCD, 0x27, 0x58,
+0x69, 0x06, 0xDE, 0x48, 0x69, 0xAD, 0x09, 0x58, 0x6A, 0xE6, 0xC0, 0x48, 0x6B, 0x96, 0x25, 0xD8,
+0x6C, 0xCF, 0xDC, 0xC8, 0x6D, 0x76, 0x07, 0xD8, 0x6E, 0xAF, 0xBE, 0xC8, 0x6F, 0x55, 0xE9, 0xD8,
+0x70, 0x8F, 0xA0, 0xC8, 0x71, 0x35, 0xCB, 0xD8, 0x72, 0x6F, 0x82, 0xC8, 0x73, 0x15, 0xAD, 0xD8,
+0x74, 0x4F, 0x64, 0xC8, 0x74, 0xFE, 0xCA, 0x58, 0x76, 0x38, 0x81, 0x48, 0x76, 0xDE, 0xAC, 0x58,
+0x78, 0x18, 0x63, 0x48, 0x78, 0xBE, 0x8E, 0x58, 0x79, 0xF8, 0x45, 0x48, 0x7A, 0x9E, 0x70, 0x58,
+0x7B, 0xD8, 0x27, 0x48, 0x7C, 0x7E, 0x52, 0x58, 0x7D, 0xB8, 0x09, 0x48, 0x7E, 0x5E, 0x34, 0x58,
+0x7F, 0x97, 0xEB, 0x48, 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, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
@@ -8025,7 +8030,7 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* Asia/Gaza */
0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xC8, 0x59, 0xB2, 0xE0,
+0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xC8, 0x59, 0xB2, 0xE0,
0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xC9, 0x70, 0xD3, 0x65, 0xB0, 0x80,
0xD4, 0x6B, 0xE0, 0xD0, 0xE8, 0x36, 0x63, 0x60, 0xE8, 0xF4, 0x2D, 0x50, 0xEA, 0x0B, 0xB9, 0x60,
@@ -8047,35 +8052,19 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x3D, 0xAF, 0x24, 0xD0, 0x3E, 0x9F, 0x23, 0xE0, 0x3F, 0x8F, 0x06, 0xD0, 0x40, 0x7F, 0x05, 0xE0,
0x41, 0x5C, 0x81, 0xE0, 0x42, 0x5E, 0xE7, 0xE0, 0x43, 0x41, 0xB7, 0xF0, 0x44, 0x2D, 0xA6, 0x60,
0x45, 0x12, 0xFD, 0x50, 0x46, 0x0E, 0xD9, 0xE0, 0x46, 0xE8, 0x6F, 0x70, 0x47, 0xF1, 0x5E, 0xE0,
-0x48, 0xB7, 0x2D, 0xF0, 0x49, 0xCB, 0xFA, 0xE0, 0x4A, 0xA0, 0x4A, 0x70, 0x4B, 0xAD, 0x2E, 0x9C,
-0x4C, 0x61, 0xBD, 0xD0, 0x4D, 0x8D, 0x10, 0x9C, 0x4E, 0x60, 0x0E, 0x70, 0x4F, 0x76, 0x2D, 0x1C,
-0x50, 0x49, 0x2A, 0xF0, 0x51, 0x56, 0x0F, 0x1C, 0x52, 0x29, 0x0C, 0xF0, 0x53, 0x35, 0xF1, 0x1C,
-0x54, 0x08, 0xEE, 0xF0, 0x55, 0x15, 0xD3, 0x1C, 0x55, 0xE8, 0xD0, 0xF0, 0x56, 0xF5, 0xB5, 0x1C,
-0x57, 0xC8, 0xB2, 0xF0, 0x58, 0xD5, 0x97, 0x1C, 0x59, 0xA8, 0x94, 0xF0, 0x5A, 0xBE, 0xB3, 0x9C,
-0x5B, 0x91, 0xB1, 0x70, 0x5C, 0x9E, 0x95, 0x9C, 0x5D, 0x71, 0x93, 0x70, 0x5E, 0x7E, 0x77, 0x9C,
-0x5F, 0x51, 0x75, 0x70, 0x60, 0x5E, 0x59, 0x9C, 0x61, 0x31, 0x57, 0x70, 0x62, 0x3E, 0x3B, 0x9C,
-0x63, 0x11, 0x39, 0x70, 0x64, 0x1E, 0x1D, 0x9C, 0x64, 0xF1, 0x1B, 0x70, 0x66, 0x07, 0x3A, 0x1C,
-0x66, 0xDA, 0x37, 0xF0, 0x67, 0xE7, 0x1C, 0x1C, 0x68, 0xBA, 0x19, 0xF0, 0x69, 0xC6, 0xFE, 0x1C,
-0x6A, 0x99, 0xFB, 0xF0, 0x6B, 0xA6, 0xE0, 0x1C, 0x6C, 0x79, 0xDD, 0xF0, 0x6D, 0x86, 0xC2, 0x1C,
-0x6E, 0x59, 0xBF, 0xF0, 0x6F, 0x6F, 0xDE, 0x9C, 0x70, 0x42, 0xDC, 0x70, 0x71, 0x4F, 0xC0, 0x9C,
-0x72, 0x22, 0xBE, 0x70, 0x73, 0x2F, 0xA2, 0x9C, 0x74, 0x02, 0xA0, 0x70, 0x75, 0x0F, 0x84, 0x9C,
-0x75, 0xE2, 0x82, 0x70, 0x76, 0xEF, 0x66, 0x9C, 0x77, 0xC2, 0x64, 0x70, 0x78, 0xCF, 0x48, 0x9C,
-0x79, 0xA2, 0x46, 0x70, 0x7A, 0xB8, 0x65, 0x1C, 0x7B, 0x8B, 0x62, 0xF0, 0x7C, 0x98, 0x47, 0x1C,
-0x7D, 0x6B, 0x44, 0xF0, 0x7E, 0x78, 0x29, 0x1C, 0x7F, 0x4B, 0x26, 0xF0, 0x00, 0x01, 0x00, 0x01,
+0x48, 0xB7, 0x11, 0xD0, 0x49, 0xCB, 0xFA, 0xE0, 0x4A, 0xA0, 0x4A, 0x70, 0x4B, 0xAD, 0x2E, 0x9C,
+0x4C, 0x61, 0xBD, 0xD0, 0x4D, 0x96, 0xF3, 0xDC, 0x4E, 0x35, 0xC2, 0x50, 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, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2A, 0x30,
-0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00,
-0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00,
-0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x64,
-0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00,
+0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x45, 0x45, 0x54, 0x00,
+0x45, 0x45, 0x53, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40,
+0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70,
/* Asia/Harbin */
0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -8094,6 +8083,46 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x6E, 0x67, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x4D, 0x6F, 0x68, 0x65, 0x29,
0x2C, 0x20, 0x4A, 0x69, 0x6C, 0x69, 0x6E,
+/* Asia/Hebron */
+0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xC8, 0x59, 0xB2, 0xE0,
+0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
+0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xC9, 0x70, 0xD3, 0x65, 0xB0, 0x80,
+0xD4, 0x6B, 0xE0, 0xD0, 0xE8, 0x36, 0x63, 0x60, 0xE8, 0xF4, 0x2D, 0x50, 0xEA, 0x0B, 0xB9, 0x60,
+0xEA, 0xD5, 0x60, 0xD0, 0xEB, 0xEC, 0xFA, 0xF0, 0xEC, 0xB5, 0x6D, 0x00, 0xED, 0xCF, 0x7F, 0xF0,
+0xEE, 0x97, 0xF2, 0x00, 0xEF, 0xB0, 0xB3, 0x70, 0xF0, 0x79, 0x25, 0x80, 0xF1, 0x91, 0xE6, 0xF0,
+0xF2, 0x5A, 0x59, 0x00, 0xF3, 0x73, 0x1A, 0x70, 0xF4, 0x3B, 0x8C, 0x80, 0xF5, 0x55, 0x9F, 0x70,
+0xF6, 0x1E, 0x11, 0x80, 0xF7, 0x36, 0xD2, 0xF0, 0xF7, 0xFF, 0x45, 0x00, 0xF9, 0x18, 0x06, 0x70,
+0xF9, 0xE1, 0xCA, 0x00, 0xFA, 0xF9, 0x39, 0xF0, 0xFB, 0x27, 0x42, 0x50, 0x08, 0x7C, 0x8B, 0xE0,
+0x08, 0xFD, 0xB0, 0xD0, 0x09, 0xF6, 0xEA, 0x60, 0x0A, 0xA6, 0x33, 0xD0, 0x1C, 0xBE, 0xF8, 0xE0,
+0x1D, 0x89, 0xF1, 0xD0, 0x1E, 0xCC, 0xFF, 0x60, 0x1F, 0x60, 0x99, 0x50, 0x20, 0x82, 0xB1, 0x60,
+0x21, 0x49, 0xB5, 0xD0, 0x22, 0x5D, 0x4D, 0x60, 0x23, 0x1F, 0x0B, 0xD0, 0x24, 0x5A, 0x30, 0x60,
+0x25, 0x00, 0x3F, 0x50, 0x26, 0x0B, 0xED, 0xE0, 0x26, 0xD6, 0xE6, 0xD0, 0x27, 0xEB, 0xCF, 0xE0,
+0x28, 0xC0, 0x03, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xA9, 0x1F, 0xD0, 0x2B, 0xBB, 0x65, 0xE0,
+0x2C, 0x89, 0x01, 0xD0, 0x2D, 0x9B, 0x47, 0xE0, 0x2E, 0x5F, 0xA9, 0x50, 0x2F, 0x7B, 0x29, 0xE0,
+0x30, 0x48, 0xC5, 0xD0, 0x30, 0xE7, 0x07, 0xE0, 0x31, 0x64, 0x46, 0x60, 0x32, 0x41, 0xC2, 0x60,
+0x33, 0x44, 0x28, 0x60, 0x34, 0x21, 0xA4, 0x60, 0x35, 0x24, 0x0A, 0x60, 0x36, 0x01, 0x86, 0x60,
+0x36, 0x8B, 0xF3, 0xE0, 0x37, 0x16, 0x61, 0x60, 0x38, 0x06, 0x44, 0x50, 0x38, 0xFF, 0x7D, 0xE0,
+0x39, 0xEF, 0x60, 0xD0, 0x3A, 0xDF, 0x5F, 0xE0, 0x3B, 0xCF, 0x42, 0xD0, 0x3C, 0xBF, 0x41, 0xE0,
+0x3D, 0xAF, 0x24, 0xD0, 0x3E, 0x9F, 0x23, 0xE0, 0x3F, 0x8F, 0x06, 0xD0, 0x40, 0x7F, 0x05, 0xE0,
+0x41, 0x5C, 0x81, 0xE0, 0x42, 0x5E, 0xE7, 0xE0, 0x43, 0x41, 0xB7, 0xF0, 0x44, 0x2D, 0xA6, 0x60,
+0x45, 0x12, 0xFD, 0x50, 0x46, 0x0E, 0xD9, 0xE0, 0x46, 0xE8, 0x6F, 0x70, 0x47, 0xF1, 0x5E, 0xE0,
+0x48, 0xBB, 0x06, 0x50, 0x49, 0xCB, 0xFA, 0xE0, 0x4A, 0xA0, 0x4A, 0x70, 0x4B, 0xAD, 0x2E, 0x9C,
+0x4C, 0x61, 0xBD, 0xD0, 0x4D, 0x95, 0xA2, 0x5C, 0x4E, 0x35, 0xC2, 0x50, 0x4E, 0x5C, 0x0B, 0xE0,
+0x4E, 0x85, 0x06, 0x80, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x02,
+0x05, 0x02, 0x05, 0x02, 0x05, 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, 0x00, 0x00, 0x00,
+0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x49,
+0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57,
+0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B,
+
/* Asia/Ho_Chi_Minh */
0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x4E, 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,
@@ -11305,20 +11334,20 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x43, 0x64, 0x30, 0x64, 0x44, 0x2F, 0x45, 0x74, 0x45, 0x44, 0x12, 0x64, 0x45, 0xF3, 0x77, 0xF4,
0x47, 0x2D, 0x2E, 0xE4, 0x47, 0xD3, 0x59, 0xF4, 0x49, 0x0D, 0x10, 0xE4, 0x49, 0xB3, 0x3B, 0xF4,
0x4A, 0xEC, 0xF2, 0xE4, 0x4B, 0x9C, 0x58, 0x74, 0x4C, 0xD6, 0x0F, 0x64, 0x4D, 0x7C, 0x3A, 0x74,
-0x4E, 0xB5, 0xF1, 0x64, 0x4F, 0x5C, 0x1C, 0x74, 0x50, 0x95, 0xD3, 0x64, 0x51, 0x3B, 0xFE, 0x74,
-0x52, 0x75, 0xB5, 0x64, 0x53, 0x1B, 0xE0, 0x74, 0x54, 0x55, 0x97, 0x64, 0x54, 0xFB, 0xC2, 0x74,
-0x56, 0x35, 0x79, 0x64, 0x56, 0xE4, 0xDE, 0xF4, 0x58, 0x1E, 0x95, 0xE4, 0x58, 0xC4, 0xC0, 0xF4,
-0x59, 0xFE, 0x77, 0xE4, 0x5A, 0xA4, 0xA2, 0xF4, 0x5B, 0xDE, 0x59, 0xE4, 0x5C, 0x84, 0x84, 0xF4,
-0x5D, 0xBE, 0x3B, 0xE4, 0x5E, 0x64, 0x66, 0xF4, 0x5F, 0x9E, 0x1D, 0xE4, 0x60, 0x4D, 0x83, 0x74,
-0x61, 0x87, 0x3A, 0x64, 0x62, 0x2D, 0x65, 0x74, 0x63, 0x67, 0x1C, 0x64, 0x64, 0x0D, 0x47, 0x74,
-0x65, 0x46, 0xFE, 0x64, 0x65, 0xED, 0x29, 0x74, 0x67, 0x26, 0xE0, 0x64, 0x67, 0xCD, 0x0B, 0x74,
-0x69, 0x06, 0xC2, 0x64, 0x69, 0xAC, 0xED, 0x74, 0x6A, 0xE6, 0xA4, 0x64, 0x6B, 0x96, 0x09, 0xF4,
-0x6C, 0xCF, 0xC0, 0xE4, 0x6D, 0x75, 0xEB, 0xF4, 0x6E, 0xAF, 0xA2, 0xE4, 0x6F, 0x55, 0xCD, 0xF4,
-0x70, 0x8F, 0x84, 0xE4, 0x71, 0x35, 0xAF, 0xF4, 0x72, 0x6F, 0x66, 0xE4, 0x73, 0x15, 0x91, 0xF4,
-0x74, 0x4F, 0x48, 0xE4, 0x74, 0xFE, 0xAE, 0x74, 0x76, 0x38, 0x65, 0x64, 0x76, 0xDE, 0x90, 0x74,
-0x78, 0x18, 0x47, 0x64, 0x78, 0xBE, 0x72, 0x74, 0x79, 0xF8, 0x29, 0x64, 0x7A, 0x9E, 0x54, 0x74,
-0x7B, 0xD8, 0x0B, 0x64, 0x7C, 0x7E, 0x36, 0x74, 0x7D, 0xB7, 0xED, 0x64, 0x7E, 0x5E, 0x18, 0x74,
-0x7F, 0x97, 0xCF, 0x64, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x4E, 0xB6, 0x0D, 0x48, 0x4F, 0x5C, 0x38, 0x58, 0x50, 0x95, 0xEF, 0x48, 0x51, 0x3C, 0x1A, 0x58,
+0x52, 0x75, 0xD1, 0x48, 0x53, 0x1B, 0xFC, 0x58, 0x54, 0x55, 0xB3, 0x48, 0x54, 0xFB, 0xDE, 0x58,
+0x56, 0x35, 0x95, 0x48, 0x56, 0xE4, 0xFA, 0xD8, 0x58, 0x1E, 0xB1, 0xC8, 0x58, 0xC4, 0xDC, 0xD8,
+0x59, 0xFE, 0x93, 0xC8, 0x5A, 0xA4, 0xBE, 0xD8, 0x5B, 0xDE, 0x75, 0xC8, 0x5C, 0x84, 0xA0, 0xD8,
+0x5D, 0xBE, 0x57, 0xC8, 0x5E, 0x64, 0x82, 0xD8, 0x5F, 0x9E, 0x39, 0xC8, 0x60, 0x4D, 0x9F, 0x58,
+0x61, 0x87, 0x56, 0x48, 0x62, 0x2D, 0x81, 0x58, 0x63, 0x67, 0x38, 0x48, 0x64, 0x0D, 0x63, 0x58,
+0x65, 0x47, 0x1A, 0x48, 0x65, 0xED, 0x45, 0x58, 0x67, 0x26, 0xFC, 0x48, 0x67, 0xCD, 0x27, 0x58,
+0x69, 0x06, 0xDE, 0x48, 0x69, 0xAD, 0x09, 0x58, 0x6A, 0xE6, 0xC0, 0x48, 0x6B, 0x96, 0x25, 0xD8,
+0x6C, 0xCF, 0xDC, 0xC8, 0x6D, 0x76, 0x07, 0xD8, 0x6E, 0xAF, 0xBE, 0xC8, 0x6F, 0x55, 0xE9, 0xD8,
+0x70, 0x8F, 0xA0, 0xC8, 0x71, 0x35, 0xCB, 0xD8, 0x72, 0x6F, 0x82, 0xC8, 0x73, 0x15, 0xAD, 0xD8,
+0x74, 0x4F, 0x64, 0xC8, 0x74, 0xFE, 0xCA, 0x58, 0x76, 0x38, 0x81, 0x48, 0x76, 0xDE, 0xAC, 0x58,
+0x78, 0x18, 0x63, 0x48, 0x78, 0xBE, 0x8E, 0x58, 0x79, 0xF8, 0x45, 0x48, 0x7A, 0x9E, 0x70, 0x58,
+0x7B, 0xD8, 0x27, 0x48, 0x7C, 0x7E, 0x52, 0x58, 0x7D, 0xB8, 0x09, 0x48, 0x7E, 0x5E, 0x34, 0x58,
+0x7F, 0x97, 0xEB, 0x48, 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, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
@@ -11737,7 +11766,7 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x6F, 0x96, 0x50, 0x45, 0x44, 0x35, 0x50,
0x45, 0xF3, 0x8C, 0xD0, 0x47, 0x24, 0x17, 0x50, 0x47, 0xDC, 0xA9, 0x50, 0x49, 0x03, 0xF9, 0x50,
0x49, 0xB3, 0x50, 0xD0, 0x4A, 0xE3, 0xDB, 0x50, 0x4B, 0x9C, 0x6D, 0x50, 0x4C, 0xCC, 0xF7, 0xD0,
-0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xAC, 0xD9, 0xD0, 0x4F, 0x5C, 0x31, 0x50, 0x50, 0x8C, 0xBB, 0xD0,
+0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xBF, 0x4E, 0xD0, 0x4F, 0x5C, 0x31, 0x50, 0x50, 0x8C, 0xBB, 0xD0,
0x51, 0x3C, 0x13, 0x50, 0x52, 0x6C, 0x9D, 0xD0, 0x53, 0x1B, 0xF5, 0x50, 0x54, 0x4C, 0x7F, 0xD0,
0x54, 0xFB, 0xD7, 0x50, 0x56, 0x2C, 0x61, 0xD0, 0x56, 0xE4, 0xF3, 0xD0, 0x58, 0x15, 0x7E, 0x50,
0x58, 0xC4, 0xD5, 0xD0, 0x59, 0xF5, 0x60, 0x50, 0x5A, 0xA4, 0xB7, 0xD0, 0x5B, 0xD5, 0x42, 0x50,
@@ -13480,7 +13509,7 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* Europe/Kaliningrad */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1A, 0x9B, 0x0C, 0x17, 0x60,
+0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x0C, 0x17, 0x60,
0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90,
0x9F, 0x84, 0x97, 0x90, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90,
0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70,
@@ -13510,13 +13539,13 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x05, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x2A,
0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x11, 0x00,
0x00, 0x1C, 0x20, 0x00, 0x16, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00,
-0x16, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x16, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00,
+0x16, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1A, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00,
0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54,
-0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xDC, 0xD1, 0xF2, 0x01, 0x31, 0xF0, 0x50, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F,
-0x77, 0x2D, 0x30, 0x31, 0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6C, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x72,
-0x61, 0x64,
+0x00, 0x46, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xDC, 0xD1, 0xF2, 0x01, 0x31, 0xF0, 0x50, 0x00, 0x00, 0x00, 0x17, 0x4D,
+0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2D, 0x30, 0x31, 0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6C, 0x69, 0x6E,
+0x69, 0x6E, 0x67, 0x72, 0x61, 0x64,
/* Europe/Kiev */
0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -14031,8 +14060,8 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* Europe/Minsk */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xAA, 0x38,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x22, 0xAA, 0x19, 0xAA, 0x38,
0xB5, 0xA4, 0x19, 0x60, 0xCA, 0x5E, 0x70, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90,
0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x0A, 0x02, 0x60, 0x15, 0x27, 0xA7, 0xD0,
0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0,
@@ -14049,36 +14078,20 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
0x40, 0x66, 0x15, 0x80, 0x41, 0x84, 0x2B, 0x00, 0x42, 0x45, 0xF7, 0x80, 0x43, 0x64, 0x0D, 0x00,
0x44, 0x25, 0xD9, 0x80, 0x45, 0x43, 0xEF, 0x00, 0x46, 0x05, 0xBB, 0x80, 0x47, 0x23, 0xD1, 0x00,
0x47, 0xEE, 0xD8, 0x00, 0x49, 0x03, 0xB3, 0x00, 0x49, 0xCE, 0xBA, 0x00, 0x4A, 0xE3, 0x95, 0x00,
-0x4B, 0xAE, 0x9C, 0x00, 0x4C, 0xCC, 0xB1, 0x80, 0x4D, 0x8E, 0x7E, 0x00, 0x4E, 0xAC, 0x93, 0x80,
-0x4F, 0x6E, 0x60, 0x00, 0x50, 0x8C, 0x75, 0x80, 0x51, 0x57, 0x7C, 0x80, 0x52, 0x6C, 0x57, 0x80,
-0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x39, 0x80, 0x55, 0x17, 0x40, 0x80, 0x56, 0x2C, 0x1B, 0x80,
-0x56, 0xF7, 0x22, 0x80, 0x58, 0x15, 0x38, 0x00, 0x58, 0xD7, 0x04, 0x80, 0x59, 0xF5, 0x1A, 0x00,
-0x5A, 0xB6, 0xE6, 0x80, 0x5B, 0xD4, 0xFC, 0x00, 0x5C, 0xA0, 0x03, 0x00, 0x5D, 0xB4, 0xDE, 0x00,
-0x5E, 0x7F, 0xE5, 0x00, 0x5F, 0x94, 0xC0, 0x00, 0x60, 0x5F, 0xC7, 0x00, 0x61, 0x7D, 0xDC, 0x80,
-0x62, 0x3F, 0xA9, 0x00, 0x63, 0x5D, 0xBE, 0x80, 0x64, 0x1F, 0x8B, 0x00, 0x65, 0x3D, 0xA0, 0x80,
-0x66, 0x08, 0xA7, 0x80, 0x67, 0x1D, 0x82, 0x80, 0x67, 0xE8, 0x89, 0x80, 0x68, 0xFD, 0x64, 0x80,
-0x69, 0xC8, 0x6B, 0x80, 0x6A, 0xDD, 0x46, 0x80, 0x6B, 0xA8, 0x4D, 0x80, 0x6C, 0xC6, 0x63, 0x00,
-0x6D, 0x88, 0x2F, 0x80, 0x6E, 0xA6, 0x45, 0x00, 0x6F, 0x68, 0x11, 0x80, 0x70, 0x86, 0x27, 0x00,
-0x71, 0x51, 0x2E, 0x00, 0x72, 0x66, 0x09, 0x00, 0x73, 0x31, 0x10, 0x00, 0x74, 0x45, 0xEB, 0x00,
-0x75, 0x10, 0xF2, 0x00, 0x76, 0x2F, 0x07, 0x80, 0x76, 0xF0, 0xD4, 0x00, 0x78, 0x0E, 0xE9, 0x80,
-0x78, 0xD0, 0xB6, 0x00, 0x79, 0xEE, 0xCB, 0x80, 0x7A, 0xB0, 0x98, 0x00, 0x7B, 0xCE, 0xAD, 0x80,
-0x7C, 0x99, 0xB4, 0x80, 0x7D, 0xAE, 0x8F, 0x80, 0x7E, 0x79, 0x96, 0x80, 0x7F, 0x8E, 0x71, 0x80,
-0x01, 0x02, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07,
-0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
+0x4B, 0xAE, 0x9C, 0x00, 0x4C, 0xCC, 0xB1, 0x80, 0x4D, 0x8E, 0x7E, 0x00, 0x01, 0x02, 0x05, 0x03,
+0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07, 0x08, 0x07, 0x08, 0x07,
+0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, 0x00,
-0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00,
-0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x38,
-0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00,
-0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4D, 0x4D, 0x54, 0x00, 0x45,
-0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00,
-0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
-0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xDB, 0x92, 0xF0, 0x01, 0x3C, 0xB8, 0xBA, 0x00, 0x00, 0x00, 0x00,
+0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x0B,
+0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30,
+0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00,
+0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08,
+0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1E, 0x4D, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
+0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44,
+0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x46, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xDB, 0x92, 0xF0, 0x01, 0x3C, 0xB8, 0xBA, 0x00, 0x00, 0x00, 0x00,
/* Europe/Monaco */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -16544,13 +16557,15 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* Pacific/Apia */
0x50, 0x48, 0x50, 0x31, 0x01, 0x57, 0x53, 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x91, 0x05, 0xFC, 0x00,
-0xDA, 0x62, 0x04, 0x38, 0x4C, 0x9F, 0x27, 0xB0, 0x4D, 0x97, 0x2B, 0xE0, 0x01, 0x02, 0x03, 0x02,
-0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50,
-0x00, 0x09, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54,
-0x00, 0x57, 0x53, 0x54, 0x00, 0x57, 0x53, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x74, 0x38, 0x9A, 0x00, 0x0C, 0x9D, 0x2A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x91, 0x05, 0xFC, 0x00,
+0xDA, 0x62, 0x04, 0x38, 0x4C, 0x9F, 0x27, 0xB0, 0x4D, 0x97, 0x2B, 0xE0, 0x4E, 0x7D, 0xE2, 0x60,
+0x4E, 0xFD, 0x8B, 0xA0, 0x4F, 0x77, 0x0D, 0xE0, 0x01, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0xFF,
+0xFF, 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00,
+0x09, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0D, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0D, 0x00, 0x00, 0xB6,
+0xD0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x57, 0x53, 0x54, 0x00,
+0x57, 0x53, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x74, 0x38, 0x9A, 0x00, 0x0C, 0x9D, 0x2A, 0x00, 0x00, 0x00, 0x00,
/* Pacific/Auckland */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -16759,13 +16774,14 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
/* Pacific/Fiji */
0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x9A, 0x13, 0xB2, 0x3C,
+0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x9A, 0x13, 0xB2, 0x3C,
0x36, 0x3B, 0x17, 0xE0, 0x36, 0xD7, 0xFA, 0x60, 0x38, 0x24, 0x34, 0x60, 0x38, 0xB7, 0xDC, 0x60,
0x4B, 0x11, 0x2C, 0xE0, 0x4B, 0xAE, 0x0F, 0x60, 0x4C, 0xC2, 0xEA, 0x60, 0x4D, 0x72, 0x41, 0xE0,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0xA7, 0x44, 0x00, 0x00, 0x00,
-0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x46,
-0x4A, 0x53, 0x54, 0x00, 0x46, 0x4A, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D,
-0xA8, 0xEA, 0x02, 0x22, 0xE6, 0x82, 0x00, 0x00, 0x00, 0x00,
+0x4E, 0xA2, 0xCC, 0x60, 0x4F, 0x1A, 0xC4, 0xE0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x00, 0x00, 0xA7, 0x44, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00,
+0x00, 0xA8, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x4A, 0x53, 0x54, 0x00, 0x46, 0x4A,
+0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xA8, 0xEA, 0x02, 0x22, 0xE6, 0x82,
+0x00, 0x00, 0x00, 0x00,
/* Pacific/Funafuti */
0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -18157,4 +18173,4 @@ const unsigned char timelib_timezone_db_data_builtin[257855] = {
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 = { "2011.8", 573, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2011.14", 575, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/lib/tm2unixtime.c b/ext/date/lib/tm2unixtime.c
index de877a382..7af06a8c1 100644
--- a/ext/date/lib/tm2unixtime.c
+++ b/ext/date/lib/tm2unixtime.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tm2unixtime.c 302890 2010-08-30 16:25:52Z derick $ */
+/* $Id: tm2unixtime.c 320481 2011-12-06 06:21:08Z derick $ */
#include "timelib.h"
@@ -179,11 +179,11 @@ void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt)
do {} while (do_range_limit(0, 12, 12, &rt->m, &rt->y));
}
-static void do_normalize(timelib_time* time)
+void timelib_do_normalize(timelib_time* time)
{
- do {} while (do_range_limit(0, 60, 60, &time->s, &time->i));
- do {} while (do_range_limit(0, 60, 60, &time->i, &time->h));
- do {} while (do_range_limit(0, 24, 24, &time->h, &time->d));
+ if (time->s != TIMELIB_UNSET) do {} while (do_range_limit(0, 60, 60, &time->s, &time->i));
+ if (time->s != TIMELIB_UNSET) do {} while (do_range_limit(0, 60, 60, &time->i, &time->h));
+ if (time->s != TIMELIB_UNSET) do {} while (do_range_limit(0, 24, 24, &time->h, &time->d));
do {} while (do_range_limit(1, 13, 12, &time->m, &time->y));
do {} while (do_range_limit_days(&time->y, &time->m, &time->d));
@@ -195,7 +195,7 @@ static void do_adjust_relative(timelib_time* time)
if (time->relative.have_weekday_relative) {
do_adjust_for_weekday(time);
}
- do_normalize(time);
+ timelib_do_normalize(time);
if (time->have_relative) {
time->s += time->relative.s;
@@ -215,7 +215,7 @@ static void do_adjust_relative(timelib_time* time)
time->m++;
break;
}
- do_normalize(time);
+ timelib_do_normalize(time);
}
static void do_adjust_special_weekday(timelib_time* time)
@@ -280,7 +280,7 @@ static void do_adjust_special(timelib_time* time)
break;
}
}
- do_normalize(time);
+ timelib_do_normalize(time);
memset(&(time->relative.special), 0, sizeof(time->relative.special));
}
@@ -300,7 +300,7 @@ static void do_adjust_special_early(timelib_time* time)
break;
}
}
- do_normalize(time);
+ timelib_do_normalize(time);
}
static timelib_sll do_years(timelib_sll year)
diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c
index e42da44a8..2894a1ce8 100644
--- a/ext/date/lib/unixtime2tm.c
+++ b/ext/date/lib/unixtime2tm.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: unixtime2tm.c 307103 2011-01-05 04:13:23Z iliaa $ */
+/* $Id: unixtime2tm.c 319767 2011-11-24 17:13:47Z derick $ */
#include "timelib.h"
@@ -146,7 +146,7 @@ void timelib_update_from_sse(timelib_time *tm)
int z = tm->z;
signed int dst = tm->dst;
- timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60));
+ timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60) + (tm->dst * 3600));
tm->z = z;
tm->dst = dst;
@@ -184,7 +184,7 @@ void timelib_unixtime2local(timelib_time *tm, timelib_sll ts)
int z = tm->z;
signed int dst = tm->dst;
- timelib_unixtime2gmt(tm, ts - (tm->z * 60));
+ timelib_unixtime2gmt(tm, ts - (tm->z * 60) + (tm->dst * 3600));
tm->z = z;
tm->dst = dst;
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index ad2391fc0..b74b002c8 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_date.c 314445 2011-08-07 18:12:52Z gwynne $ */
+/* $Id: php_date.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_streams.h"
@@ -463,6 +463,8 @@ const zend_function_entry date_funcs_timezone[] = {
const zend_function_entry date_funcs_interval[] = {
PHP_ME(DateInterval, __construct, arginfo_date_interval_construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+ PHP_ME(DateInterval, __wakeup, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(DateInterval, __set_state, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
PHP_ME_MAPPING(format, date_interval_format, arginfo_date_method_interval_format, 0)
PHP_ME_MAPPING(createFromDateString, date_interval_create_from_date_string, arginfo_date_interval_create_from_date_string, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
PHP_FE_END
@@ -832,6 +834,12 @@ static timelib_tzinfo *php_date_parse_tzfile(char *formal_tzname, const timelib_
}
return tzi;
}
+
+timelib_tzinfo *php_date_parse_tzfile_wrapper(char *formal_tzname, const timelib_tzdb *tzdb)
+{
+ TSRMLS_FETCH();
+ return php_date_parse_tzfile(formal_tzname, tzdb TSRMLS_CC);
+}
/* }}} */
/* {{{ Helper functions */
@@ -1367,7 +1375,7 @@ PHPAPI signed long php_parse_date(char *string, signed long *now)
int error2;
signed long retval;
- parsed_time = timelib_strtotime(string, strlen(string), &error, DATE_TIMEZONEDB);
+ parsed_time = timelib_strtotime(string, strlen(string), &error, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
if (error->error_count) {
timelib_error_container_dtor(error);
return -1;
@@ -1404,7 +1412,7 @@ PHP_FUNCTION(strtotime)
initial_ts = emalloc(25);
snprintf(initial_ts, 24, "@%ld UTC", preset_ts);
- t = timelib_strtotime(initial_ts, strlen(initial_ts), NULL, DATE_TIMEZONEDB); /* we ignore the error here, as this should never fail */
+ t = timelib_strtotime(initial_ts, strlen(initial_ts), NULL, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper); /* we ignore the error here, as this should never fail */
timelib_update_ts(t, tzi);
now->tz_info = tzi;
now->zone_type = TIMELIB_ZONETYPE_ID;
@@ -1426,7 +1434,7 @@ PHP_FUNCTION(strtotime)
RETURN_FALSE;
}
- t = timelib_strtotime(times, time_len, &error, DATE_TIMEZONEDB);
+ t = timelib_strtotime(times, time_len, &error, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
error1 = error->error_count;
timelib_error_container_dtor(error);
timelib_fill_holes(t, now, TIMELIB_NO_CLONE);
@@ -2047,6 +2055,9 @@ static zend_object_value date_object_clone_date(zval *this_ptr TSRMLS_DC)
zend_object_value new_ov = date_object_new_date_ex(old_obj->std.ce, &new_obj TSRMLS_CC);
zend_objects_clone_members(&new_obj->std, new_ov, &old_obj->std, Z_OBJ_HANDLE_P(this_ptr) TSRMLS_CC);
+ if (!old_obj->time) {
+ return new_ov;
+ }
/* this should probably moved to a new `timelib_time *timelime_time_clone(timelib_time *)` */
new_obj->time = timelib_time_ctor();
@@ -2168,6 +2179,10 @@ static zend_object_value date_object_clone_timezone(zval *this_ptr TSRMLS_DC)
zend_object_value new_ov = date_object_new_timezone_ex(old_obj->std.ce, &new_obj TSRMLS_CC);
zend_objects_clone_members(&new_obj->std, new_ov, &old_obj->std, Z_OBJ_HANDLE_P(this_ptr) TSRMLS_CC);
+ if (!old_obj->initialized) {
+ return new_ov;
+ }
+
new_obj->type = old_obj->type;
new_obj->initialized = 1;
switch (new_obj->type) {
@@ -2388,9 +2403,9 @@ PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str,
timelib_time_dtor(dateobj->time);
}
if (format) {
- dateobj->time = timelib_parse_from_format(format, time_str_len ? time_str : "", time_str_len ? time_str_len : 0, &err, DATE_TIMEZONEDB);
+ dateobj->time = timelib_parse_from_format(format, time_str_len ? time_str : "", time_str_len ? time_str_len : 0, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
} else {
- dateobj->time = timelib_strtotime(time_str_len ? time_str : "now", time_str_len ? time_str_len : sizeof("now") -1, &err, DATE_TIMEZONEDB);
+ dateobj->time = timelib_strtotime(time_str_len ? time_str : "now", time_str_len ? time_str_len : sizeof("now") -1, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
}
/* update last errors and warnings */
@@ -2724,7 +2739,7 @@ PHP_FUNCTION(date_parse)
RETURN_FALSE;
}
- parsed_time = timelib_strtotime(date, date_len, &error, DATE_TIMEZONEDB);
+ parsed_time = timelib_strtotime(date, date_len, &error, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAM_PASSTHRU, parsed_time, error);
}
/* }}} */
@@ -2743,7 +2758,7 @@ PHP_FUNCTION(date_parse_from_format)
RETURN_FALSE;
}
- parsed_time = timelib_parse_from_format(format, date, date_len, &error, DATE_TIMEZONEDB);
+ parsed_time = timelib_parse_from_format(format, date, date_len, &error, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAM_PASSTHRU, parsed_time, error);
}
/* }}} */
@@ -2785,7 +2800,7 @@ PHP_FUNCTION(date_modify)
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
- tmp_time = timelib_strtotime(modify, modify_len, &err, DATE_TIMEZONEDB);
+ tmp_time = timelib_strtotime(modify, modify_len, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
/* update last errors and warnings */
update_errors_warnings(err TSRMLS_CC);
@@ -3606,6 +3621,70 @@ PHP_METHOD(DateInterval, __construct)
}
/* }}} */
+static long php_date_long_from_hash_element(HashTable *myht, char *element, size_t size)
+{
+ zval **z_arg = NULL;
+
+ if (zend_hash_find(myht, element, size + 1, (void**) &z_arg) == SUCCESS) {
+ convert_to_long(*z_arg);
+ return Z_LVAL_PP(z_arg);
+ } else {
+ return -1;
+ }
+}
+
+static int php_date_interval_initialize_from_hash(zval **return_value, php_interval_obj **intobj, HashTable *myht TSRMLS_DC)
+{
+ (*intobj)->diff = timelib_rel_time_ctor();
+
+ (*intobj)->diff->y = php_date_long_from_hash_element(myht, "y", 1);
+ (*intobj)->diff->m = php_date_long_from_hash_element(myht, "m", 1);
+ (*intobj)->diff->d = php_date_long_from_hash_element(myht, "d", 1);
+ (*intobj)->diff->h = php_date_long_from_hash_element(myht, "h", 1);
+ (*intobj)->diff->i = php_date_long_from_hash_element(myht, "i", 1);
+ (*intobj)->diff->s = php_date_long_from_hash_element(myht, "s", 1);
+ (*intobj)->diff->invert = php_date_long_from_hash_element(myht, "invert", 6);
+ (*intobj)->diff->days = php_date_long_from_hash_element(myht, "days", 4);
+ (*intobj)->initialized = 1;
+
+ return 0;
+}
+
+/* {{{ proto DateInterval::__set_state()
+*/
+PHP_METHOD(DateInterval, __set_state)
+{
+ php_interval_obj *intobj;
+ zval *array;
+ HashTable *myht;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &array) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ myht = HASH_OF(array);
+
+ php_date_instantiate(date_ce_interval, return_value TSRMLS_CC);
+ intobj = (php_interval_obj *) zend_object_store_get_object(return_value TSRMLS_CC);
+ php_date_interval_initialize_from_hash(&return_value, &intobj, myht TSRMLS_CC);
+}
+/* }}} */
+
+/* {{{ proto DateInterval::__wakeup()
+*/
+PHP_METHOD(DateInterval, __wakeup)
+{
+ zval *object = getThis();
+ php_interval_obj *intobj;
+ HashTable *myht;
+
+ intobj = (php_interval_obj *) zend_object_store_get_object(object TSRMLS_CC);
+
+ myht = Z_OBJPROP_P(object);
+
+ php_date_interval_initialize_from_hash(&return_value, &intobj, myht TSRMLS_CC);
+}
+/* }}} */
/* {{{ proto DateInterval date_interval_create_from_date_string(string time)
Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string
*/
@@ -3623,7 +3702,7 @@ PHP_FUNCTION(date_interval_create_from_date_string)
php_date_instantiate(date_ce_interval, return_value TSRMLS_CC);
- time = timelib_strtotime(time_str, time_str_len, &err, DATE_TIMEZONEDB);
+ time = timelib_strtotime(time_str, time_str_len, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
diobj = (php_interval_obj *) zend_object_store_get_object(return_value TSRMLS_CC);
diobj->diff = timelib_rel_time_clone(&time->relative);
diobj->initialized = 1;
@@ -3661,8 +3740,8 @@ static char *date_interval_format(char *format, int format_len, timelib_rel_time
case 'I': length = slprintf(buffer, 32, "%02d", (int) t->i); break;
case 'i': length = slprintf(buffer, 32, "%d", (int) t->i); break;
- case 'S': length = slprintf(buffer, 32, "%02d", (int) t->s); break;
- case 's': length = slprintf(buffer, 32, "%d", (int) t->s); break;
+ case 'S': length = slprintf(buffer, 32, "%02ld", (long) t->s); break;
+ case 's': length = slprintf(buffer, 32, "%ld", (long) t->s); break;
case 'a': {
if ((int) t->days != -99999) {
diff --git a/ext/date/php_date.h b/ext/date/php_date.h
index cda0b331b..e7adafa24 100644
--- a/ext/date/php_date.h
+++ b/ext/date/php_date.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_date.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_date.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_DATE_H
#define PHP_DATE_H
@@ -82,6 +82,8 @@ PHP_FUNCTION(timezone_abbreviations_list);
PHP_FUNCTION(timezone_version_get);
PHP_METHOD(DateInterval, __construct);
+PHP_METHOD(DateInterval, __wakeup);
+PHP_METHOD(DateInterval, __set_state);
PHP_FUNCTION(date_interval_format);
PHP_FUNCTION(date_interval_create_from_date_string);
diff --git a/ext/date/tests/DateInterval_format_a.phpt b/ext/date/tests/DateInterval_format_a.phpt
index d095db56b..48c6cc167 100644
--- a/ext/date/tests/DateInterval_format_a.phpt
+++ b/ext/date/tests/DateInterval_format_a.phpt
@@ -8,10 +8,7 @@ date.timezone=UTC
--SKIPIF--
<?php
if (!method_exists('DateInterval', 'format')) die("skip: method doesn't exist");
-if (substr(PHP_OS, 0, 3) != 'WIN') die("skip this test is for Windows platforms only");
?>
---XFAIL--
-Windows VC6 libs' floor()/ceil() choke on floats
--FILE--
<?php
diff --git a/ext/date/tests/DateTime_add-fall-type2-type2.phpt b/ext/date/tests/DateTime_add-fall-type2-type2.phpt
index 82cc81c9e..894ff604e 100644
--- a/ext/date/tests/DateTime_add-fall-type2-type2.phpt
+++ b/ext/date/tests/DateTime_add-fall-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::add() -- fall type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -16,38 +14,38 @@ require 'DateTime_data-fall-type2-type2.inc';
test_time_fall_type2_prev_type2_prev: ADD: 2010-10-04 02:18:48 EDT + P+0Y1M2DT16H19M40S = **2010-11-06 18:38:28 EDT**
test_time_fall_type2_prev_type2_dt: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT**
test_time_fall_type2_prev_type2_redodt: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_prev_type2_redost: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_prev_type2_st: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_prev_type2_post: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST**
+test_time_fall_type2_prev_type2_redost: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 02:14:44 EDT**
+test_time_fall_type2_prev_type2_st: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 04:16:55 EDT**
+test_time_fall_type2_prev_type2_post: ADD: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EDT**
test_time_fall_type2_dt_type2_prev: ADD: 2010-11-07 00:10:20 EDT + P-0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT**
test_time_fall_type2_dt_type2_dt: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT0H5M15S = **2010-11-07 00:15:35 EDT**
test_time_fall_type2_dt_type2_redodt: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_dt_type2_redost: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_dt_type2_st: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_dt_type2_post: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST**
+test_time_fall_type2_dt_type2_redost: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 02:14:44 EDT**
+test_time_fall_type2_dt_type2_st: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 04:16:55 EDT**
+test_time_fall_type2_dt_type2_post: ADD: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 20:59:59 EDT**
test_time_fall_type2_redodt_type2_prev: ADD: 2010-11-07 01:12:33 EDT + P-0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT**
test_time_fall_type2_redodt_type2_dt: ADD: 2010-11-07 01:12:33 EDT + P-0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT**
test_time_fall_type2_redodt_type2_redodt: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M0DT0H3M2S = **2010-11-07 01:15:35 EDT**
-test_time_fall_type2_redodt_type2_redost: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_redodt_type2_st: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_redodt_type2_post: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_redost_type2_prev: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_redost_type2_dt: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_redost_type2_redodt: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT**
+test_time_fall_type2_redodt_type2_redost: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 02:14:44 EDT**
+test_time_fall_type2_redodt_type2_st: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 04:16:55 EDT**
+test_time_fall_type2_redodt_type2_post: ADD: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 20:59:59 EDT**
+test_time_fall_type2_redost_type2_prev: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 17:38:28 EST**
+test_time_fall_type2_redost_type2_dt: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-06 23:10:20 EST**
+test_time_fall_type2_redost_type2_redodt: ADD: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 00:12:33 EST**
test_time_fall_type2_redost_type2_redost: ADD: 2010-11-07 01:14:44 EST + P+0Y0M0DT0H2M10S = **2010-11-07 01:16:54 EST**
test_time_fall_type2_redost_type2_st: ADD: 2010-11-07 01:14:44 EST + P+0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST**
test_time_fall_type2_redost_type2_post: ADD: 2010-11-07 01:14:44 EST + P+0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_st_type2_prev: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_st_type2_dt: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_st_type2_redodt: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT**
+test_time_fall_type2_st_type2_prev: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 17:38:28 EST**
+test_time_fall_type2_st_type2_dt: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-06 23:10:20 EST**
+test_time_fall_type2_st_type2_redodt: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 00:12:33 EST**
test_time_fall_type2_st_type2_redost: ADD: 2010-11-07 03:16:55 EST + P-0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST**
test_time_fall_type2_st_type2_st: ADD: 2010-11-07 03:16:55 EST + P+0Y0M0DT2H3M1S = **2010-11-07 05:19:56 EST**
test_time_fall_type2_st_type2_post: ADD: 2010-11-07 03:16:55 EST + P+0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_post_type2_prev: ADD: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_post_type2_dt: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_post_type2_redodt: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT**
+test_time_fall_type2_post_type2_prev: ADD: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EST**
+test_time_fall_type2_post_type2_dt: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-06 23:10:20 EST**
+test_time_fall_type2_post_type2_redodt: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 00:12:33 EST**
test_time_fall_type2_post_type2_redost: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST**
test_time_fall_type2_post_type2_st: ADD: 2010-11-08 19:59:59 EST + P-0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST**
test_time_fall_type2_post_type2_post: ADD: 2010-11-08 18:57:55 EST + P+0Y0M0DT1H2M4S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_dtsec_type2_stsec: ADD: 2010-11-07 01:59:59 EDT + P+0Y0M0DT0H0M1S = **2010-11-07 01:00:00 EST**
-test_time_fall_type2_stsec_type2_dtsec: ADD: 2010-11-07 01:00:00 EST + P-0Y0M0DT0H0M1S = **2010-11-07 01:59:59 EDT**
+test_time_fall_type2_dtsec_type2_stsec: ADD: 2010-11-07 01:59:59 EDT + P+0Y0M0DT0H0M1S = **2010-11-07 02:00:00 EDT**
+test_time_fall_type2_stsec_type2_dtsec: ADD: 2010-11-07 01:00:00 EST + P-0Y0M0DT0H0M1S = **2010-11-07 00:59:59 EST**
diff --git a/ext/date/tests/DateTime_add-spring-type2-type2.phpt b/ext/date/tests/DateTime_add-spring-type2-type2.phpt
index b64c27476..e522873b6 100644
--- a/ext/date/tests/DateTime_add-spring-type2-type2.phpt
+++ b/ext/date/tests/DateTime_add-spring-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::add() -- spring type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -15,19 +13,19 @@ require 'DateTime_data-spring-type2-type2.inc';
--EXPECT--
test_time_spring_type2_prev_type2_prev: ADD: 2010-02-11 02:18:48 EST + P+0Y1M2DT16H19M40S = **2010-03-13 18:38:28 EST**
test_time_spring_type2_prev_type2_st: ADD: 2010-03-13 18:38:28 EST + P+0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST**
-test_time_spring_type2_prev_type2_dt: ADD: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT**
-test_time_spring_type2_prev_type2_post: ADD: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT**
+test_time_spring_type2_prev_type2_dt: ADD: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 02:16:55 EST**
+test_time_spring_type2_prev_type2_post: ADD: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EST**
test_time_spring_type2_st_type2_prev: ADD: 2010-03-14 00:10:20 EST + P-0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST**
test_time_spring_type2_st_type2_st: ADD: 2010-03-14 00:10:20 EST + P+0Y0M0DT0H5M15S = **2010-03-14 00:15:35 EST**
-test_time_spring_type2_st_type2_dt: ADD: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT**
-test_time_spring_type2_st_type2_post: ADD: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT**
-test_time_spring_type2_dt_type2_prev: ADD: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST**
-test_time_spring_type2_dt_type2_st: ADD: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST**
+test_time_spring_type2_st_type2_dt: ADD: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 02:16:55 EST**
+test_time_spring_type2_st_type2_post: ADD: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 18:59:59 EST**
+test_time_spring_type2_dt_type2_prev: ADD: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 19:38:28 EDT**
+test_time_spring_type2_dt_type2_st: ADD: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 01:10:20 EDT**
test_time_spring_type2_dt_type2_dt: ADD: 2010-03-14 03:16:55 EDT + P+0Y0M0DT2H3M1S = **2010-03-14 05:19:56 EDT**
test_time_spring_type2_dt_type2_post: ADD: 2010-03-14 03:16:55 EDT + P+0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT**
-test_time_spring_type2_post_type2_prev: ADD: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST**
-test_time_spring_type2_post_type2_st: ADD: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST**
+test_time_spring_type2_post_type2_prev: ADD: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EDT**
+test_time_spring_type2_post_type2_st: ADD: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 01:10:20 EDT**
test_time_spring_type2_post_type2_dt: ADD: 2010-03-15 19:59:59 EDT + P-0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT**
test_time_spring_type2_post_type2_post: ADD: 2010-03-15 18:57:55 EDT + P+0Y0M0DT1H2M4S = **2010-03-15 19:59:59 EDT**
-test_time_spring_type2_stsec_type2_dtsec: ADD: 2010-03-13 01:59:59 EST + P+0Y0M0DT0H0M1S = **2010-03-15 03:00:00 EDT**
-test_time_spring_type2_dtsec_type2_stsec: ADD: 2010-03-15 03:00:00 EDT + P-0Y0M0DT0H0M1S = **2010-03-15 01:59:59 EST**
+test_time_spring_type2_stsec_type2_dtsec: ADD: 2010-03-14 01:59:59 EST + P+0Y0M0DT0H0M1S = **2010-03-14 02:00:00 EST**
+test_time_spring_type2_dtsec_type2_stsec: ADD: 2010-03-14 03:00:00 EDT + P-0Y0M0DT0H0M1S = **2010-03-14 02:59:59 EDT**
diff --git a/ext/date/tests/DateTime_data-dates.inc b/ext/date/tests/DateTime_data-dates.inc
index be608dfcb..c6f04e16c 100644
--- a/ext/date/tests/DateTime_data-dates.inc
+++ b/ext/date/tests/DateTime_data-dates.inc
@@ -20,6 +20,7 @@ examine_diff('2007-02-07', '2000-02-07', 'P+7Y0M0DT0H0M0S', 2557);
echo "test_years_positive__7_by_1_day: ";
examine_diff('2007-02-08', '2000-02-07', 'P+7Y0M1DT0H0M0S', 2558);
+// NOTE: sub() produces different answer.
echo "test_years_positive__6_shy_1_day: ";
examine_diff('2007-02-06', '2000-02-07', 'P+6Y11M30DT0H0M0S', 2556);
@@ -48,6 +49,7 @@ examine_diff('2000-02-07', '2007-02-07', 'P-7Y0M0DT0H0M0S', 2557);
echo "test_years_negative__7_by_1_day: ";
examine_diff('2000-02-07', '2007-02-08', 'P-7Y0M1DT0H0M0S', 2558);
+// NOTE: sub() produces different answer.
echo "test_years_negative__6_shy_1_day: ";
examine_diff('2000-02-07', '2007-02-06', 'P-6Y11M28DT0H0M0S', 2556);
diff --git a/ext/date/tests/DateTime_data-february.inc b/ext/date/tests/DateTime_data-february.inc
index 8c31ef69a..cc9d85df0 100644
--- a/ext/date/tests/DateTime_data-february.inc
+++ b/ext/date/tests/DateTime_data-february.inc
@@ -71,15 +71,19 @@ examine_diff('2010-03-01', '2010-01-01', 'P+0Y2M0DT0H0M0S', 59);
echo "test_bug_49081__20: ";
examine_diff('2010-03-01', '2010-01-31', 'P+0Y0M29DT0H0M0S', 29);
+// NOTE: sub() produces different answer.
echo "test_bug_49081__21: ";
examine_diff('2010-03-27', '2010-01-31', 'P+0Y1M24DT0H0M0S', 55);
+// NOTE: sub() produces different answer.
echo "test_bug_49081__22: ";
examine_diff('2010-03-28', '2010-01-31', 'P+0Y1M25DT0H0M0S', 56);
+// NOTE: sub() produces different answer.
echo "test_bug_49081__23: ";
examine_diff('2010-03-29', '2010-01-31', 'P+0Y1M26DT0H0M0S', 57);
+// NOTE: sub() produces different answer.
echo "test_bug_49081__24: ";
examine_diff('2010-03-30', '2010-01-31', 'P+0Y1M27DT0H0M0S', 58);
@@ -168,18 +172,23 @@ examine_diff('2010-01-27', '2010-02-28', 'P-0Y1M1DT0H0M0S', 32);
echo "test_bug_49081_negative__19: ";
examine_diff('2010-01-01', '2010-03-01', 'P-0Y2M0DT0H0M0S', 59);
+// NOTE: sub() produces different answer.
echo "test_bug_49081_negative__20: ";
examine_diff('2010-01-31', '2010-03-01', 'P-0Y1M1DT0H0M0S', 29);
+// NOTE: sub() produces different answer.
echo "test_bug_49081_negative__21: ";
examine_diff('2010-01-31', '2010-03-27', 'P-0Y1M27DT0H0M0S', 55);
+// NOTE: sub() produces different answer.
echo "test_bug_49081_negative__22: ";
examine_diff('2010-01-31', '2010-03-28', 'P-0Y1M28DT0H0M0S', 56);
+// NOTE: sub() produces different answer.
echo "test_bug_49081_negative__23: ";
examine_diff('2010-01-31', '2010-03-29', 'P-0Y1M29DT0H0M0S', 57);
+// NOTE: sub() produces different answer.
echo "test_bug_49081_negative__24: ";
examine_diff('2010-01-31', '2010-03-30', 'P-0Y1M30DT0H0M0S', 58);
diff --git a/ext/date/tests/DateTime_data-spring-type2-type2.inc b/ext/date/tests/DateTime_data-spring-type2-type2.inc
index 3556b207b..d9e07c313 100644
--- a/ext/date/tests/DateTime_data-spring-type2-type2.inc
+++ b/ext/date/tests/DateTime_data-spring-type2-type2.inc
@@ -99,11 +99,11 @@ $start = new DateTime('2010-03-15 18:57:55 EDT'); // sp post, zt2
examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0);
echo "test_time_spring_type2_stsec_type2_dtsec: ";
-$end = new DateTime('2010-03-15 03:00:00 EDT'); // dtsec, zt2
-$start = new DateTime('2010-03-13 01:59:59 EST'); // stsec, zt2
+$end = new DateTime('2010-03-14 03:00:00 EDT'); // dtsec, zt2
+$start = new DateTime('2010-03-14 01:59:59 EST'); // stsec, zt2
examine_diff($end, $start, 'P+0Y0M0DT0H0M1S', 0);
echo "test_time_spring_type2_dtsec_type2_stsec: ";
-$end = new DateTime('2010-03-15 01:59:59 EST'); // stsec, zt2
-$start = new DateTime('2010-03-13 03:00:00 EDT'); // dtsec, zt2
+$end = new DateTime('2010-03-14 01:59:59 EST'); // stsec, zt2
+$start = new DateTime('2010-03-14 03:00:00 EDT'); // dtsec, zt2
examine_diff($end, $start, 'P-0Y0M0DT0H0M1S', 0);
diff --git a/ext/date/tests/DateTime_data-spring-type2-type3.inc b/ext/date/tests/DateTime_data-spring-type2-type3.inc
index b06825837..d66fc5177 100644
--- a/ext/date/tests/DateTime_data-spring-type2-type3.inc
+++ b/ext/date/tests/DateTime_data-spring-type2-type3.inc
@@ -99,11 +99,11 @@ $start = new DateTime('2010-03-15 18:57:55 EDT'); // sp post, zt2
examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0);
echo "test_time_spring_type2_stsec_type3_dtsec: ";
-$end = new DateTime('2010-03-15 03:00:00'); // dtsec, zt3
-$start = new DateTime('2010-03-13 01:59:59 EST'); // stsec, zt2
+$end = new DateTime('2010-03-14 03:00:00'); // dtsec, zt3
+$start = new DateTime('2010-03-14 01:59:59 EST'); // stsec, zt2
examine_diff($end, $start, 'P+0Y0M0DT0H0M1S', 0);
echo "test_time_spring_type2_dtsec_type3_stsec: ";
-$end = new DateTime('2010-03-15 01:59:59'); // stsec, zt3
-$start = new DateTime('2010-03-13 03:00:00 EDT'); // dtsec, zt2
+$end = new DateTime('2010-03-14 01:59:59'); // stsec, zt3
+$start = new DateTime('2010-03-14 03:00:00 EDT'); // dtsec, zt2
examine_diff($end, $start, 'P-0Y0M0DT0H0M1S', 0);
diff --git a/ext/date/tests/DateTime_data-spring-type3-type2.inc b/ext/date/tests/DateTime_data-spring-type3-type2.inc
index 244cd5881..92211f4b1 100644
--- a/ext/date/tests/DateTime_data-spring-type3-type2.inc
+++ b/ext/date/tests/DateTime_data-spring-type3-type2.inc
@@ -99,11 +99,11 @@ $start = new DateTime('2010-03-15 18:57:55'); // sp post, zt3
examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0);
echo "test_time_spring_type3_stsec_type2_dtsec: ";
-$end = new DateTime('2010-03-15 03:00:00 EDT'); // dtsec, zt2
-$start = new DateTime('2010-03-13 01:59:59'); // stsec, zt3
+$end = new DateTime('2010-03-14 03:00:00 EDT'); // dtsec, zt2
+$start = new DateTime('2010-03-14 01:59:59'); // stsec, zt3
examine_diff($end, $start, 'P+0Y0M0DT0H0M1S', 0);
echo "test_time_spring_type3_dtsec_type2_stsec: ";
-$end = new DateTime('2010-03-15 01:59:59 EST'); // stsec, zt2
-$start = new DateTime('2010-03-13 03:00:00'); // dtsec, zt3
+$end = new DateTime('2010-03-14 01:59:59 EST'); // stsec, zt2
+$start = new DateTime('2010-03-14 03:00:00'); // dtsec, zt3
examine_diff($end, $start, 'P-0Y0M0DT0H0M1S', 0);
diff --git a/ext/date/tests/DateTime_data-spring-type3-type3.inc b/ext/date/tests/DateTime_data-spring-type3-type3.inc
index d87373c5a..de1dee12e 100644
--- a/ext/date/tests/DateTime_data-spring-type3-type3.inc
+++ b/ext/date/tests/DateTime_data-spring-type3-type3.inc
@@ -99,11 +99,11 @@ $start = new DateTime('2010-03-15 18:57:55'); // sp post, zt3
examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0);
echo "test_time_spring_type3_stsec_type3_dtsec: ";
-$end = new DateTime('2010-03-15 03:00:00'); // dtsec, zt3
-$start = new DateTime('2010-03-13 01:59:59'); // stsec, zt3
+$end = new DateTime('2010-03-14 03:00:00'); // dtsec, zt3
+$start = new DateTime('2010-03-14 01:59:59'); // stsec, zt3
examine_diff($end, $start, 'P+0Y0M0DT0H0M1S', 0);
echo "test_time_spring_type3_dtsec_type3_stsec: ";
-$end = new DateTime('2010-03-15 01:59:59'); // stsec, zt3
-$start = new DateTime('2010-03-13 03:00:00'); // dtsec, zt3
+$end = new DateTime('2010-03-14 01:59:59'); // stsec, zt3
+$start = new DateTime('2010-03-14 03:00:00'); // dtsec, zt3
examine_diff($end, $start, 'P-0Y0M0DT0H0M1S', 0);
diff --git a/ext/date/tests/DateTime_days-spring-type2-type2.phpt b/ext/date/tests/DateTime_days-spring-type2-type2.phpt
index 3f9c35352..3e702ace0 100644
--- a/ext/date/tests/DateTime_days-spring-type2-type2.phpt
+++ b/ext/date/tests/DateTime_days-spring-type2-type2.phpt
@@ -27,5 +27,5 @@ test_time_spring_type2_post_type2_prev: DAYS: **2**
test_time_spring_type2_post_type2_st: DAYS: **1**
test_time_spring_type2_post_type2_dt: DAYS: **1**
test_time_spring_type2_post_type2_post: DAYS: **0**
-test_time_spring_type2_stsec_type2_dtsec: DAYS: **0**
+test_time_spring_type2_stsec_type2_dtsec: DAYS: **0**
test_time_spring_type2_dtsec_type2_stsec: DAYS: **0**
diff --git a/ext/date/tests/DateTime_days-spring-type2-type3.phpt b/ext/date/tests/DateTime_days-spring-type2-type3.phpt
index 77ac5fdb6..0e23ac3e2 100644
--- a/ext/date/tests/DateTime_days-spring-type2-type3.phpt
+++ b/ext/date/tests/DateTime_days-spring-type2-type3.phpt
@@ -27,5 +27,5 @@ test_time_spring_type2_post_type3_prev: DAYS: **2**
test_time_spring_type2_post_type3_st: DAYS: **1**
test_time_spring_type2_post_type3_dt: DAYS: **1**
test_time_spring_type2_post_type3_post: DAYS: **0**
-test_time_spring_type2_stsec_type3_dtsec: DAYS: **0**
+test_time_spring_type2_stsec_type3_dtsec: DAYS: **0**
test_time_spring_type2_dtsec_type3_stsec: DAYS: **0**
diff --git a/ext/date/tests/DateTime_days-spring-type3-type2.phpt b/ext/date/tests/DateTime_days-spring-type3-type2.phpt
index 09aa8d9c1..4fb9ba76d 100644
--- a/ext/date/tests/DateTime_days-spring-type3-type2.phpt
+++ b/ext/date/tests/DateTime_days-spring-type3-type2.phpt
@@ -27,5 +27,5 @@ test_time_spring_type3_post_type2_prev: DAYS: **2**
test_time_spring_type3_post_type2_st: DAYS: **1**
test_time_spring_type3_post_type2_dt: DAYS: **1**
test_time_spring_type3_post_type2_post: DAYS: **0**
-test_time_spring_type3_stsec_type2_dtsec: DAYS: **0**
+test_time_spring_type3_stsec_type2_dtsec: DAYS: **0**
test_time_spring_type3_dtsec_type2_stsec: DAYS: **0**
diff --git a/ext/date/tests/DateTime_days-spring-type3-type3.phpt b/ext/date/tests/DateTime_days-spring-type3-type3.phpt
index f947329de..df44925fb 100644
--- a/ext/date/tests/DateTime_days-spring-type3-type3.phpt
+++ b/ext/date/tests/DateTime_days-spring-type3-type3.phpt
@@ -27,5 +27,5 @@ test_time_spring_type3_post_type3_prev: DAYS: **2**
test_time_spring_type3_post_type3_st: DAYS: **1**
test_time_spring_type3_post_type3_dt: DAYS: **1**
test_time_spring_type3_post_type3_post: DAYS: **0**
-test_time_spring_type3_stsec_type3_dtsec: DAYS: **0**
+test_time_spring_type3_stsec_type3_dtsec: DAYS: **0**
test_time_spring_type3_dtsec_type3_stsec: DAYS: **0**
diff --git a/ext/date/tests/DateTime_diff-fall-type2-type2.phpt b/ext/date/tests/DateTime_diff-fall-type2-type2.phpt
index 3e7cf7dbf..d655637ac 100644
--- a/ext/date/tests/DateTime_diff-fall-type2-type2.phpt
+++ b/ext/date/tests/DateTime_diff-fall-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::diff() -- fall type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -18,7 +16,7 @@ test_time_fall_type2_prev_type2_dt: DIFF: 2010-11-07 00:10:20 EDT - 2010-11-06 1
test_time_fall_type2_prev_type2_redodt: DIFF: 2010-11-07 01:12:33 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT6H34M5S**
test_time_fall_type2_prev_type2_redost: DIFF: 2010-11-07 01:14:44 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT7H36M16S**
test_time_fall_type2_prev_type2_st: DIFF: 2010-11-07 03:16:55 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT9H38M27S**
-test_time_fall_type2_prev_type2_post: DIFF: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT1H21M31S**
+test_time_fall_type2_prev_type2_post: DIFF: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT2H21M31S**
test_time_fall_type2_dt_type2_prev: DIFF: 2010-11-06 18:38:28 EDT - 2010-11-07 00:10:20 EDT = **P-0Y0M0DT5H31M52S**
test_time_fall_type2_dt_type2_dt: DIFF: 2010-11-07 00:15:35 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT0H5M15S**
test_time_fall_type2_dt_type2_redodt: DIFF: 2010-11-07 01:12:33 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT1H2M13S**
@@ -43,7 +41,7 @@ test_time_fall_type2_st_type2_redodt: DIFF: 2010-11-07 01:12:33 EDT - 2010-11-07
test_time_fall_type2_st_type2_redost: DIFF: 2010-11-07 01:14:44 EST - 2010-11-07 03:16:55 EST = **P-0Y0M0DT2H2M11S**
test_time_fall_type2_st_type2_st: DIFF: 2010-11-07 05:19:56 EST - 2010-11-07 03:16:55 EST = **P+0Y0M0DT2H3M1S**
test_time_fall_type2_st_type2_post: DIFF: 2010-11-08 19:59:59 EST - 2010-11-07 03:16:55 EST = **P+0Y0M1DT16H43M4S**
-test_time_fall_type2_post_type2_prev: DIFF: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT1H21M31S**
+test_time_fall_type2_post_type2_prev: DIFF: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT2H21M31S**
test_time_fall_type2_post_type2_dt: DIFF: 2010-11-07 00:10:20 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT20H49M39S**
test_time_fall_type2_post_type2_redodt: DIFF: 2010-11-07 01:12:33 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT19H47M26S**
test_time_fall_type2_post_type2_redost: DIFF: 2010-11-07 01:14:44 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT18H45M15S**
diff --git a/ext/date/tests/DateTime_diff-spring-type2-type2.phpt b/ext/date/tests/DateTime_diff-spring-type2-type2.phpt
index 4c590cd99..730cfd11e 100644
--- a/ext/date/tests/DateTime_diff-spring-type2-type2.phpt
+++ b/ext/date/tests/DateTime_diff-spring-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::diff() -- spring type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -16,7 +14,7 @@ require 'DateTime_data-spring-type2-type2.inc';
test_time_spring_type2_prev_type2_prev: DIFF: 2010-03-13 18:38:28 EST - 2010-02-11 02:18:48 EST = **P+0Y1M2DT16H19M40S**
test_time_spring_type2_prev_type2_st: DIFF: 2010-03-14 00:10:20 EST - 2010-03-13 18:38:28 EST = **P+0Y0M0DT5H31M52S**
test_time_spring_type2_prev_type2_dt: DIFF: 2010-03-14 03:16:55 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M0DT7H38M27S**
-test_time_spring_type2_prev_type2_post: DIFF: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT1H21M31S**
+test_time_spring_type2_prev_type2_post: DIFF: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT0H21M31S**
test_time_spring_type2_st_type2_prev: DIFF: 2010-03-13 18:38:28 EST - 2010-03-14 00:10:20 EST = **P-0Y0M0DT5H31M52S**
test_time_spring_type2_st_type2_st: DIFF: 2010-03-14 00:15:35 EST - 2010-03-14 00:10:20 EST = **P+0Y0M0DT0H5M15S**
test_time_spring_type2_st_type2_dt: DIFF: 2010-03-14 03:16:55 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M0DT2H6M35S**
@@ -25,9 +23,9 @@ test_time_spring_type2_dt_type2_prev: DIFF: 2010-03-13 18:38:28 EST - 2010-03-14
test_time_spring_type2_dt_type2_st: DIFF: 2010-03-14 00:10:20 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT2H6M35S**
test_time_spring_type2_dt_type2_dt: DIFF: 2010-03-14 05:19:56 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M0DT2H3M1S**
test_time_spring_type2_dt_type2_post: DIFF: 2010-03-15 19:59:59 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M1DT16H43M4S**
-test_time_spring_type2_post_type2_prev: DIFF: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT1H21M31S**
+test_time_spring_type2_post_type2_prev: DIFF: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT0H21M31S**
test_time_spring_type2_post_type2_st: DIFF: 2010-03-14 00:10:20 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT18H49M39S**
test_time_spring_type2_post_type2_dt: DIFF: 2010-03-14 03:16:55 EDT - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT16H43M4S**
test_time_spring_type2_post_type2_post: DIFF: 2010-03-15 19:59:59 EDT - 2010-03-15 18:57:55 EDT = **P+0Y0M0DT1H2M4S**
-test_time_spring_type2_stsec_type2_dtsec: DIFF: 2010-03-15 03:00:00 EDT - 2010-03-13 01:59:59 EST = **P+0Y0M0DT0H0M1S**
-test_time_spring_type2_dtsec_type2_stsec: DIFF: 2010-03-15 01:59:59 EST - 2010-03-15 03:00:00 EDT = **P-0Y0M0DT0H0M1S**
+test_time_spring_type2_stsec_type2_dtsec: DIFF: 2010-03-14 03:00:00 EDT - 2010-03-14 01:59:59 EST = **P+0Y0M0DT0H0M1S**
+test_time_spring_type2_dtsec_type2_stsec: DIFF: 2010-03-14 01:59:59 EST - 2010-03-14 03:00:00 EDT = **P-0Y0M0DT0H0M1S**
diff --git a/ext/date/tests/DateTime_sub-dates.phpt b/ext/date/tests/DateTime_sub-dates.phpt
index 36ca25c16..26f49ba83 100644
--- a/ext/date/tests/DateTime_sub-dates.phpt
+++ b/ext/date/tests/DateTime_sub-dates.phpt
@@ -14,7 +14,7 @@ require 'DateTime_data-dates.inc';
test__7: SUB: 2009-01-14 00:00:00 EST - P+0Y0M7DT0H0M0S = **2009-01-07 00:00:00 EST**
test_years_positive__7_by_0_day: SUB: 2007-02-07 00:00:00 EST - P+7Y0M0DT0H0M0S = **2000-02-07 00:00:00 EST**
test_years_positive__7_by_1_day: SUB: 2007-02-08 00:00:00 EST - P+7Y0M1DT0H0M0S = **2000-02-07 00:00:00 EST**
-test_years_positive__6_shy_1_day: SUB: 2007-02-06 00:00:00 EST - P+6Y11M30DT0H0M0S = **2000-02-07 00:00:00 EST**
+test_years_positive__6_shy_1_day: SUB: 2007-02-06 00:00:00 EST - P+6Y11M30DT0H0M0S = **2000-02-05 00:00:00 EST**
test_years_positive__7_by_1_month: SUB: 2007-03-07 00:00:00 EST - P+7Y1M0DT0H0M0S = **2000-02-07 00:00:00 EST**
test_years_positive__6_shy_1_month: SUB: 2007-01-07 00:00:00 EST - P+6Y11M0DT0H0M0S = **2000-02-07 00:00:00 EST**
test_years_positive__7_by_1_month_split_newyear: SUB: 2007-01-07 00:00:00 EST - P+7Y1M0DT0H0M0S = **1999-12-07 00:00:00 EST**
@@ -22,7 +22,7 @@ test_years_positive__6_shy_1_month_split_newyear: SUB: 2006-12-07 00:00:00 EST -
test_negative__7: SUB: 2009-01-07 00:00:00 EST - P-0Y0M7DT0H0M0S = **2009-01-14 00:00:00 EST**
test_years_negative__7_by_0_day: SUB: 2000-02-07 00:00:00 EST - P-7Y0M0DT0H0M0S = **2007-02-07 00:00:00 EST**
test_years_negative__7_by_1_day: SUB: 2000-02-07 00:00:00 EST - P-7Y0M1DT0H0M0S = **2007-02-08 00:00:00 EST**
-test_years_negative__6_shy_1_day: SUB: 2000-02-07 00:00:00 EST - P-6Y11M28DT0H0M0S = **2007-02-06 00:00:00 EST**
+test_years_negative__6_shy_1_day: SUB: 2000-02-07 00:00:00 EST - P-6Y11M28DT0H0M0S = **2007-02-04 00:00:00 EST**
test_years_negative__7_by_1_month: SUB: 2000-02-07 00:00:00 EST - P-7Y1M0DT0H0M0S = **2007-03-07 00:00:00 EST**
test_years_negative__6_shy_1_month: SUB: 2000-02-07 00:00:00 EST - P-6Y11M0DT0H0M0S = **2007-01-07 00:00:00 EST**
test_years_negative__7_by_1_month_split_newyear: SUB: 1999-12-07 00:00:00 EST - P-7Y1M0DT0H0M0S = **2007-01-07 00:00:00 EST**
diff --git a/ext/date/tests/DateTime_sub-fall-type2-type2.phpt b/ext/date/tests/DateTime_sub-fall-type2-type2.phpt
index 3138e1cd8..e133b1f4d 100644
--- a/ext/date/tests/DateTime_sub-fall-type2-type2.phpt
+++ b/ext/date/tests/DateTime_sub-fall-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::sub() -- fall type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -16,38 +14,38 @@ require 'DateTime_data-fall-type2-type2.inc';
test_time_fall_type2_prev_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P+0Y1M2DT16H19M40S = **2010-10-04 02:18:48 EDT**
test_time_fall_type2_prev_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P+0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT**
test_time_fall_type2_prev_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P+0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_prev_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_prev_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT**
-test_time_fall_type2_prev_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT**
+test_time_fall_type2_prev_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT7H36M16S = **2010-11-06 17:38:28 EST**
+test_time_fall_type2_prev_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT9H38M27S = **2010-11-06 17:38:28 EST**
+test_time_fall_type2_prev_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EST**
test_time_fall_type2_dt_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT**
test_time_fall_type2_dt_type2_dt: SUB: 2010-11-07 00:15:35 EDT - P+0Y0M0DT0H5M15S = **2010-11-07 00:10:20 EDT**
test_time_fall_type2_dt_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P+0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_dt_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_dt_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT**
-test_time_fall_type2_dt_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT**
+test_time_fall_type2_dt_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT2H4M24S = **2010-11-06 23:10:20 EST**
+test_time_fall_type2_dt_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT4H6M35S = **2010-11-06 23:10:20 EST**
+test_time_fall_type2_dt_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT20H49M39S = **2010-11-06 23:10:20 EST**
test_time_fall_type2_redodt_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT**
test_time_fall_type2_redodt_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT**
test_time_fall_type2_redodt_type2_redodt: SUB: 2010-11-07 01:15:35 EDT - P+0Y0M0DT0H3M2S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_redodt_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_redodt_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_redodt_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT**
-test_time_fall_type2_redost_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_redost_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_redost_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST**
+test_time_fall_type2_redodt_type2_redost: SUB: 2010-11-07 01:14:44 EST - P+0Y0M0DT1H2M11S = **2010-11-07 00:12:33 EST**
+test_time_fall_type2_redodt_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT3H4M22S = **2010-11-07 00:12:33 EST**
+test_time_fall_type2_redodt_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT19H47M26S = **2010-11-07 00:12:33 EST**
+test_time_fall_type2_redost_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT7H36M16S = **2010-11-07 02:14:44 EDT**
+test_time_fall_type2_redost_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M0DT2H4M24S = **2010-11-07 02:14:44 EDT**
+test_time_fall_type2_redost_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M0DT1H2M11S = **2010-11-07 02:14:44 EDT**
test_time_fall_type2_redost_type2_redost: SUB: 2010-11-07 01:16:54 EST - P+0Y0M0DT0H2M10S = **2010-11-07 01:14:44 EST**
test_time_fall_type2_redost_type2_st: SUB: 2010-11-07 03:16:55 EST - P+0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST**
test_time_fall_type2_redost_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST**
-test_time_fall_type2_st_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_st_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_st_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST**
+test_time_fall_type2_st_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M0DT9H38M27S = **2010-11-07 04:16:55 EDT**
+test_time_fall_type2_st_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M0DT4H6M35S = **2010-11-07 04:16:55 EDT**
+test_time_fall_type2_st_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M0DT3H4M22S = **2010-11-07 04:16:55 EDT**
test_time_fall_type2_st_type2_redost: SUB: 2010-11-07 01:14:44 EST - P-0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST**
test_time_fall_type2_st_type2_st: SUB: 2010-11-07 05:19:56 EST - P+0Y0M0DT2H3M1S = **2010-11-07 03:16:55 EST**
test_time_fall_type2_st_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST**
-test_time_fall_type2_post_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_post_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST**
-test_time_fall_type2_post_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST**
+test_time_fall_type2_post_type2_prev: SUB: 2010-11-06 18:38:28 EDT - P-0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EDT**
+test_time_fall_type2_post_type2_dt: SUB: 2010-11-07 00:10:20 EDT - P-0Y0M1DT20H49M39S = **2010-11-08 20:59:59 EDT**
+test_time_fall_type2_post_type2_redodt: SUB: 2010-11-07 01:12:33 EDT - P-0Y0M1DT19H47M26S = **2010-11-08 20:59:59 EDT**
test_time_fall_type2_post_type2_redost: SUB: 2010-11-07 01:14:44 EST - P-0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST**
test_time_fall_type2_post_type2_st: SUB: 2010-11-07 03:16:55 EST - P-0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST**
test_time_fall_type2_post_type2_post: SUB: 2010-11-08 19:59:59 EST - P+0Y0M0DT1H2M4S = **2010-11-08 18:57:55 EST**
-test_time_fall_type2_dtsec_type2_stsec: SUB: 2010-11-07 01:00:00 EST - P+0Y0M0DT0H0M1S = **2010-11-07 01:59:59 EDT**
-test_time_fall_type2_stsec_type2_dtsec: SUB: 2010-11-07 01:59:59 EDT - P-0Y0M0DT0H0M1S = **2010-11-07 01:00:00 EST**
+test_time_fall_type2_dtsec_type2_stsec: SUB: 2010-11-07 01:00:00 EST - P+0Y0M0DT0H0M1S = **2010-11-07 00:59:59 EST**
+test_time_fall_type2_stsec_type2_dtsec: SUB: 2010-11-07 01:59:59 EDT - P-0Y0M0DT0H0M1S = **2010-11-07 02:00:00 EDT**
diff --git a/ext/date/tests/DateTime_sub-february.phpt b/ext/date/tests/DateTime_sub-february.phpt
index 89cba4bde..23c8da447 100644
--- a/ext/date/tests/DateTime_sub-february.phpt
+++ b/ext/date/tests/DateTime_sub-february.phpt
@@ -31,10 +31,10 @@ test_bug_49081__17: SUB: 2010-02-28 00:00:00 EST - P+0Y1M0DT0H0M0S = **2010-01-2
test_bug_49081__18: SUB: 2010-02-28 00:00:00 EST - P+0Y1M1DT0H0M0S = **2010-01-27 00:00:00 EST**
test_bug_49081__19: SUB: 2010-03-01 00:00:00 EST - P+0Y2M0DT0H0M0S = **2010-01-01 00:00:00 EST**
test_bug_49081__20: SUB: 2010-03-01 00:00:00 EST - P+0Y0M29DT0H0M0S = **2010-01-31 00:00:00 EST**
-test_bug_49081__21: SUB: 2010-03-27 00:00:00 EDT - P+0Y1M24DT0H0M0S = **2010-01-31 00:00:00 EST**
-test_bug_49081__22: SUB: 2010-03-28 00:00:00 EDT - P+0Y1M25DT0H0M0S = **2010-01-31 00:00:00 EST**
-test_bug_49081__23: SUB: 2010-03-29 00:00:00 EDT - P+0Y1M26DT0H0M0S = **2010-01-31 00:00:00 EST**
-test_bug_49081__24: SUB: 2010-03-30 00:00:00 EDT - P+0Y1M27DT0H0M0S = **2010-01-31 00:00:00 EST**
+test_bug_49081__21: SUB: 2010-03-27 00:00:00 EDT - P+0Y1M24DT0H0M0S = **2010-02-03 00:00:00 EST**
+test_bug_49081__22: SUB: 2010-03-28 00:00:00 EDT - P+0Y1M25DT0H0M0S = **2010-02-03 00:00:00 EST**
+test_bug_49081__23: SUB: 2010-03-29 00:00:00 EDT - P+0Y1M26DT0H0M0S = **2010-02-03 00:00:00 EST**
+test_bug_49081__24: SUB: 2010-03-30 00:00:00 EDT - P+0Y1M27DT0H0M0S = **2010-02-03 00:00:00 EST**
test_bug_49081__25: SUB: 2010-03-31 00:00:00 EDT - P+0Y2M0DT0H0M0S = **2010-01-31 00:00:00 EST**
test_bug_49081__26: SUB: 2010-03-31 00:00:00 EDT - P+0Y2M1DT0H0M0S = **2010-01-30 00:00:00 EST**
test_bug_49081__27: SUB: 2009-01-31 00:00:00 EST - P+0Y0M30DT0H0M0S = **2009-01-01 00:00:00 EST**
@@ -62,11 +62,11 @@ test_bug_49081_negative__16: SUB: 2010-01-29 00:00:00 EST - P-0Y0M30DT0H0M0S = *
test_bug_49081_negative__17: SUB: 2010-01-28 00:00:00 EST - P-0Y1M0DT0H0M0S = **2010-02-28 00:00:00 EST**
test_bug_49081_negative__18: SUB: 2010-01-27 00:00:00 EST - P-0Y1M1DT0H0M0S = **2010-02-28 00:00:00 EST**
test_bug_49081_negative__19: SUB: 2010-01-01 00:00:00 EST - P-0Y2M0DT0H0M0S = **2010-03-01 00:00:00 EST**
-test_bug_49081_negative__20: SUB: 2010-01-31 00:00:00 EST - P-0Y1M1DT0H0M0S = **2010-03-01 00:00:00 EST**
-test_bug_49081_negative__21: SUB: 2010-01-31 00:00:00 EST - P-0Y1M27DT0H0M0S = **2010-03-27 00:00:00 EDT**
-test_bug_49081_negative__22: SUB: 2010-01-31 00:00:00 EST - P-0Y1M28DT0H0M0S = **2010-03-28 00:00:00 EDT**
-test_bug_49081_negative__23: SUB: 2010-01-31 00:00:00 EST - P-0Y1M29DT0H0M0S = **2010-03-29 00:00:00 EDT**
-test_bug_49081_negative__24: SUB: 2010-01-31 00:00:00 EST - P-0Y1M30DT0H0M0S = **2010-03-30 00:00:00 EDT**
+test_bug_49081_negative__20: SUB: 2010-01-31 00:00:00 EST - P-0Y1M1DT0H0M0S = **2010-03-04 00:00:00 EST**
+test_bug_49081_negative__21: SUB: 2010-01-31 00:00:00 EST - P-0Y1M27DT0H0M0S = **2010-03-30 00:00:00 EDT**
+test_bug_49081_negative__22: SUB: 2010-01-31 00:00:00 EST - P-0Y1M28DT0H0M0S = **2010-03-31 00:00:00 EDT**
+test_bug_49081_negative__23: SUB: 2010-01-31 00:00:00 EST - P-0Y1M29DT0H0M0S = **2010-04-01 00:00:00 EDT**
+test_bug_49081_negative__24: SUB: 2010-01-31 00:00:00 EST - P-0Y1M30DT0H0M0S = **2010-04-02 00:00:00 EDT**
test_bug_49081_negative__25: SUB: 2010-01-31 00:00:00 EST - P-0Y2M0DT0H0M0S = **2010-03-31 00:00:00 EDT**
test_bug_49081_negative__26: SUB: 2010-01-30 00:00:00 EST - P-0Y2M1DT0H0M0S = **2010-03-31 00:00:00 EDT**
test_bug_49081_negative__27: SUB: 2009-01-01 00:00:00 EST - P-0Y0M30DT0H0M0S = **2009-01-31 00:00:00 EST**
diff --git a/ext/date/tests/DateTime_sub-spring-type2-type2.phpt b/ext/date/tests/DateTime_sub-spring-type2-type2.phpt
index 2b1817d79..925f1411e 100644
--- a/ext/date/tests/DateTime_sub-spring-type2-type2.phpt
+++ b/ext/date/tests/DateTime_sub-spring-type2-type2.phpt
@@ -2,8 +2,6 @@
DateTime::sub() -- spring type2 type2
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Various bugs exist
--FILE--
<?php
@@ -15,19 +13,19 @@ require 'DateTime_data-spring-type2-type2.inc';
--EXPECT--
test_time_spring_type2_prev_type2_prev: SUB: 2010-03-13 18:38:28 EST - P+0Y1M2DT16H19M40S = **2010-02-11 02:18:48 EST**
test_time_spring_type2_prev_type2_st: SUB: 2010-03-14 00:10:20 EST - P+0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST**
-test_time_spring_type2_prev_type2_dt: SUB: 2010-03-14 03:16:55 EDT - P+0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST**
-test_time_spring_type2_prev_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST**
+test_time_spring_type2_prev_type2_dt: SUB: 2010-03-14 03:16:55 EDT - P+0Y0M0DT7H38M27S = **2010-03-13 19:38:28 EDT**
+test_time_spring_type2_prev_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EDT**
test_time_spring_type2_st_type2_prev: SUB: 2010-03-13 18:38:28 EST - P-0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST**
test_time_spring_type2_st_type2_st: SUB: 2010-03-14 00:15:35 EST - P+0Y0M0DT0H5M15S = **2010-03-14 00:10:20 EST**
-test_time_spring_type2_st_type2_dt: SUB: 2010-03-14 03:16:55 EDT - P+0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST**
-test_time_spring_type2_st_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST**
-test_time_spring_type2_dt_type2_prev: SUB: 2010-03-13 18:38:28 EST - P-0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT**
-test_time_spring_type2_dt_type2_st: SUB: 2010-03-14 00:10:20 EST - P-0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT**
+test_time_spring_type2_st_type2_dt: SUB: 2010-03-14 03:16:55 EDT - P+0Y0M0DT2H6M35S = **2010-03-14 01:10:20 EDT**
+test_time_spring_type2_st_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M1DT18H49M39S = **2010-03-14 01:10:20 EDT**
+test_time_spring_type2_dt_type2_prev: SUB: 2010-03-13 18:38:28 EST - P-0Y0M0DT7H38M27S = **2010-03-14 02:16:55 EST**
+test_time_spring_type2_dt_type2_st: SUB: 2010-03-14 00:10:20 EST - P-0Y0M0DT2H6M35S = **2010-03-14 02:16:55 EST**
test_time_spring_type2_dt_type2_dt: SUB: 2010-03-14 05:19:56 EDT - P+0Y0M0DT2H3M1S = **2010-03-14 03:16:55 EDT**
test_time_spring_type2_dt_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT**
-test_time_spring_type2_post_type2_prev: SUB: 2010-03-13 18:38:28 EST - P-0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT**
-test_time_spring_type2_post_type2_st: SUB: 2010-03-14 00:10:20 EST - P-0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT**
+test_time_spring_type2_post_type2_prev: SUB: 2010-03-13 18:38:28 EST - P-0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EST**
+test_time_spring_type2_post_type2_st: SUB: 2010-03-14 00:10:20 EST - P-0Y0M1DT18H49M39S = **2010-03-15 18:59:59 EST**
test_time_spring_type2_post_type2_dt: SUB: 2010-03-14 03:16:55 EDT - P-0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT**
test_time_spring_type2_post_type2_post: SUB: 2010-03-15 19:59:59 EDT - P+0Y0M0DT1H2M4S = **2010-03-15 18:57:55 EDT**
-test_time_spring_type2_stsec_type2_dtsec: SUB: 2010-03-15 03:00:00 EDT - P+0Y0M0DT0H0M1S = **2010-03-13 01:59:59 EST**
-test_time_spring_type2_dtsec_type2_stsec: SUB: 2010-03-15 01:59:59 EST - P-0Y0M0DT0H0M1S = **2010-03-15 03:00:00 EDT**
+test_time_spring_type2_stsec_type2_dtsec: SUB: 2010-03-14 03:00:00 EDT - P+0Y0M0DT0H0M1S = **2010-03-14 02:59:59 EDT**
+test_time_spring_type2_dtsec_type2_stsec: SUB: 2010-03-14 01:59:59 EST - P-0Y0M0DT0H0M1S = **2010-03-14 02:00:00 EST**
diff --git a/ext/date/tests/bug13142.phpt b/ext/date/tests/bug13142.phpt
index 60fc7e7f6..5254142ba 100644
--- a/ext/date/tests/bug13142.phpt
+++ b/ext/date/tests/bug13142.phpt
@@ -4,6 +4,9 @@ Bug #13142 (strtotime handling of "M d H:i:s Y" format)
date.timezone=US/Eastern
--SKIPIF--
<?php
+if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
+ die("skip. set TZ env is not supported at runtime.");
+}
if (!@putenv("TZ=US/Eastern") || getenv("TZ") != 'US/Eastern') {
die("skip unable to change TZ enviroment variable\n");
}
diff --git a/ext/date/tests/bug27780.phpt b/ext/date/tests/bug27780.phpt
index bd3bc949b..af35b8fbf 100644
--- a/ext/date/tests/bug27780.phpt
+++ b/ext/date/tests/bug27780.phpt
@@ -1,5 +1,10 @@
--TEST--
Bug #27780 (strtotime(+1 xxx) returns a wrong date/time)
+--SKIPIF--
+<?php
+if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
+ die("skip. Not the same TZ on windows.");
+}
--FILE--
<?php
$timezones = array (
diff --git a/ext/date/tests/bug28088.phpt b/ext/date/tests/bug28088.phpt
index 95866e00b..c31013938 100644
--- a/ext/date/tests/bug28088.phpt
+++ b/ext/date/tests/bug28088.phpt
@@ -1,9 +1,9 @@
--TEST--
Bug #28088 (strtotime() cannot convert 00 hours")
+--INI--
+date.timezone=UTC
--FILE--
<?php
-putenv("TZ=GMT");
-
echo "The following line rightly shows the correct date time:\n";
echo gmdate("m/d/y Hi", strtotime("04/04/04 2345")), "\n";
diff --git a/ext/date/tests/bug32555.phpt b/ext/date/tests/bug32555.phpt
index a99d3e289..fca34ffa1 100644
--- a/ext/date/tests/bug32555.phpt
+++ b/ext/date/tests/bug32555.phpt
@@ -1,10 +1,13 @@
--TEST--
Bug #32555 (strtotime("tomorrow") can return false)
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') die('skip strftime uses system TZ');
+?>
--INI--
date.timezone=US/Eastern
--FILE--
<?php
-
$stamp = 1112427000;
print strftime('%c %Z',strtotime('now',$stamp)) ."\n";
print strftime('%c %Z',strtotime('tomorrow',$stamp)) ."\n";
diff --git a/ext/date/tests/bug33415-2.phpt b/ext/date/tests/bug33415-2.phpt
index 9ea537a9f..424be76fc 100644
--- a/ext/date/tests/bug33415-2.phpt
+++ b/ext/date/tests/bug33415-2.phpt
@@ -2,10 +2,10 @@
Bug #33415 [2] (Possibly invalid non-one-hour DST or timezone shifts)
--FILE--
<?php
+date_default_timezone_set('Africa/Bujumbura');
print "TZ=Africa/Bujumbura - *Note*: Unexpected, as does not appear to
have a DST or timezone transition.\n";
-putenv("TZ=Africa/Bujumbura");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Wednesday", $tStamp);
@@ -13,7 +13,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Wednesday 00:00:00\n\n";
print "TZ=Asia/Thimbu - Is it OK for this to be 0:30 AM? yes\n";
-putenv("TZ=Asia/Thimbu");
+date_default_timezone_set('Asia/Thimbu');
$tStamp = mktime (17, 17, 17, 1, 6476, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -22,7 +22,7 @@ print "wanted=Thursday 00:30:00\n\n";
print "TZ=Indian/Cocos - Is it OK for this to be 6:30 AM? Note: does not
appear to have a DST or timezone transition.\n";
-putenv("TZ=Indian/Cocos");
+date_default_timezone_set('Indian/Cocos');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -31,7 +31,7 @@ print "wanted=Thursday 00:00:00\n\n";
print "TZ=Africa/Lubumbashi - Is it OK for this to be 2 AM? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Africa/Lubumbashi");
+date_default_timezone_set('Africa/Lubumbashi');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Saturday", $tStamp);
@@ -39,7 +39,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Saturday 00:00:00\n\n";
print "TZ=Asia/Kashgar - Is it OK for this to be 3 AM? yes\n";
-putenv("TZ=Asia/Kashgar");
+date_default_timezone_set('Asia/Kashgar');
$tStamp = mktime (17, 17, 17, 1, 3767, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -48,7 +48,7 @@ print "wanted=Thursday 03:00:00\n\n";
print "TZ=Indian/Christmas - Is it OK for this to be 7 AM? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Indian/Christmas");
+date_default_timezone_set('Indian/Christmas');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Sunday", $tStamp);
@@ -56,7 +56,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday 00:00:00\n\n";
print "TZ=America/Santo_Domingo - Is it OK for this to be 0:30 AM? yes\n";
-putenv("TZ=America/Santo_Domingo");
+date_default_timezone_set('America/Santo_Domingo');
$tStamp = mktime (17, 17, 17, 1, 291, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Sunday", $tStamp);
@@ -65,7 +65,7 @@ print "wanted=Sunday 00:30:00\n\n";
print "TZ=Pacific/Truk - Is it OK for this to be 10 AM? Note: does not
appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Truk");
+date_default_timezone_set('Pacific/Truk');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Tuesday", $tStamp);
@@ -74,7 +74,7 @@ print "wanted=Tuesday 00:00:00\n\n";
print "TZ=Pacific/Ponape - Is it OK for this to be 11 AM? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Ponape");
+date_default_timezone_set('Pacific/Ponape');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Monday", $tStamp);
@@ -82,7 +82,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Monday 00:00:00\n\n";
print "TZ=America/Scoresbysund - Is it OK for this to be 2 AM? yes\n";
-putenv("TZ=America/Scoresbysund");
+date_default_timezone_set('America/Scoresbysund');
$tStamp = mktime (17, 17, 17, 1, 4099, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Sunday", $tStamp);
@@ -90,7 +90,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday 02:00:00\n\n";
print "TZ=America/Guyana - Is it OK for this to be 0:45 AM? yes\n";
-putenv("TZ=America/Guyana");
+date_default_timezone_set('America/Guyana');
$tStamp = mktime (17, 17, 17, 1, 2031, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -98,7 +98,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Thursday 00:45:00\n\n";
print "TZ=Asia/Tehran - Is it OK for this to be 0:30 AM? yes\n";
-putenv("TZ=Asia/Tehran");
+date_default_timezone_set('Asia/Tehran');
$tStamp = mktime (17, 17, 17, 1, 2855, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Tuesday", $tStamp);
@@ -107,7 +107,7 @@ print "wanted=Tuesday 00:30:00\n\n";
print "TZ=Pacific/Tarawa - Is it OK for this to be Midday? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Tarawa");
+date_default_timezone_set('Pacific/Tarawa');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Monday", $tStamp);
@@ -115,7 +115,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Monday 00:00:00\n\n";
print "TZ=Africa/Monrovia - Is it OK for this to be 00:44:30 AM? yes\n";
-putenv("TZ=Africa/Monrovia");
+date_default_timezone_set('Africa/Monrovia');
$tStamp = mktime (17, 17, 17, 1, 845, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Monday", $tStamp);
@@ -123,7 +123,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Monday 00:44:30\n\n";
print "TZ=Asia/Katmandu - Is it OK for this to 0:15 AM?. yes\n";
-putenv("TZ=Asia/Katmandu");
+date_default_timezone_set('Asia/Katmandu');
$tStamp = mktime (17, 17, 17, 1, 5838, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Wednesday", $tStamp);
@@ -131,7 +131,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Wednesday 00:15:00\n\n";
print "TZ=Pacific/Nauru - Is it OK for this to be 0:30? yes\n";
-putenv("TZ=Pacific/Nauru");
+date_default_timezone_set('Pacific/Nauru');
$tStamp = mktime (17, 17, 17, 1, 3401, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Tuesday", $tStamp);
@@ -139,7 +139,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Tuesday 00:30:00\n\n";
print "TZ=Pacific/Niue - Is it OK for this to be 0:30 AM? yes\n";
-putenv("TZ=Pacific/Niue");
+date_default_timezone_set('Pacific/Niue');
$tStamp = mktime (17, 17, 17, 1, 3189, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Sunday", $tStamp);
@@ -148,7 +148,7 @@ print "wanted=Sunday 00:30:00\n\n";
print "TZ=Pacific/Port_Moresby - Is it OK for this to be 10 AM? No DST
or timezone transition.\n";
-putenv("TZ=Pacific/Port_Moresby");
+date_default_timezone_set('Pacific/Port_Moresby');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -156,7 +156,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Thursday 00:00:00\n\n";
print "TZ=America/Miquelon - Is it OK for this to be 1 AM ? yes\n";
-putenv("TZ=America/Miquelon");
+date_default_timezone_set('America/Miquelon');
$tStamp = mktime (17, 17, 17, 1, 3767, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Thursday", $tStamp);
@@ -165,7 +165,7 @@ print "wanted=Thursday 01:00:00\n\n";
print "TZ=Pacific/Palau - Is it OK for this to be 9 AM? No DST or
timezone transition.\n";
-putenv("TZ=Pacific/Palau");
+date_default_timezone_set('Pacific/Palau');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Saturday", $tStamp);
@@ -174,7 +174,7 @@ print "wanted=Saturday 00:00:00\n\n";
print "TZ=Pacific/Funafuti - Is it OK for this to be midday? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Funafuti");
+date_default_timezone_set('Pacific/Funafuti');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Wednesday", $tStamp);
@@ -183,7 +183,7 @@ print "wanted=Wednesday 00:00:00\n\n";
print "TZ=Pacific/Wake - Is it OK for this to be midday? Note: does not
appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Wake");
+date_default_timezone_set('Pacific/Wake');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Tuesday", $tStamp);
@@ -192,7 +192,7 @@ print "wanted=Tuesday 00:00:00\n\n";
print "TZ=Pacific/Wallis - Is it OK for this to be midday? Note: does
not appear to have a DST or timezone transition.\n";
-putenv("TZ=Pacific/Wallis");
+date_default_timezone_set('Pacific/Wallis');
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Tuesday", $tStamp);
@@ -200,7 +200,7 @@ print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Tuesday 00:00:00\n\n";
print "TZ=America/Paramaribo - Is it OK for this to be 0:30 AM? yes\n";
-putenv("TZ=America/Paramaribo");
+date_default_timezone_set('America/Paramaribo');
$tStamp = mktime (17, 17, 17, 1, 5381, 1970);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("next Monday", $tStamp);
diff --git a/ext/date/tests/bug33532.phpt b/ext/date/tests/bug33532.phpt
index 286ceb4ce..148630855 100644
--- a/ext/date/tests/bug33532.phpt
+++ b/ext/date/tests/bug33532.phpt
@@ -3,6 +3,10 @@ Bug #33532 (Different output for strftime() and date())
--INI--
error_reporting=2047
date.timezone=UTC
+--SKIPIF--
+<?php
+if(PHP_OS == 'Darwin' || defined('PHP_WINDOWS_VERSION_MAJOR')) die("skip strftime uses system TZ on Darwin and Windows");
+?>
--FILE--
<?php
@@ -18,6 +22,7 @@ print "datestr " . date ("H:i:s A F j Y T", $tStamp) . "\n";
print "\nSetting TZ\n";
date_default_timezone_set('Australia/Sydney');
+putenv("TZ=Australia/Sydney");
$input = "10:00:00 AM July 1 2005";
print "input " . $input . "\n";
$tStamp = strtotime($input);
diff --git a/ext/date/tests/bug48476.phpt b/ext/date/tests/bug48476.phpt
new file mode 100644
index 000000000..2daa59487
--- /dev/null
+++ b/ext/date/tests/bug48476.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Bug #48476 (cloning extended DateTime class without calling parent::__constr crashed PHP)
+--FILE--
+<?php
+class MyDateTime extends DateTime {
+ public function __construct() { }
+}
+class MyDateTimeZone extends DateTimeZone {
+ public function __construct() { }
+}
+
+$o = new MyDateTime;
+var_dump($o->format("d"));
+$x = clone $o;
+
+var_dump($x->format("d"));
+
+clone $o;
+
+
+var_dump(timezone_location_get(clone new MyDateTimezone));
+?>
+--EXPECTF--
+Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in %sbug48476.php on line 10
+bool(false)
+
+Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in %sbug48476.php on line 13
+bool(false)
+
+Warning: timezone_location_get(): The DateTimeZone object has not been correctly initialized by its constructor in %sbug48476.php on line 18
+bool(false)
+
+
diff --git a/ext/date/tests/bug48678.phpt b/ext/date/tests/bug48678.phpt
index 896693463..e2cb724f7 100644
--- a/ext/date/tests/bug48678.phpt
+++ b/ext/date/tests/bug48678.phpt
@@ -1,12 +1,12 @@
--TEST--
-Bug #48678 DateInterval segfaults when unserialising
+Bug #48678 (DateInterval segfaults when unserialising)
--FILE--
<?php
-$x = new dateinterval("P3Y6M4DT12H30M5S");
+$x = new DateInterval("P3Y6M4DT12H30M5S");
print_r($x);
$y = unserialize(serialize($x));
print_r($y);
---EXPECT--
+--EXPECTF--
DateInterval Object
(
[y] => 3
@@ -16,7 +16,7 @@ DateInterval Object
[i] => 30
[s] => 5
[invert] => 0
- [days] =>
+ [days] =>%s
)
DateInterval Object
(
@@ -27,5 +27,5 @@ DateInterval Object
[i] => 30
[s] => 5
[invert] => 0
- [days] =>
+ [days] =>%s
)
diff --git a/ext/date/tests/bug50392.phpt b/ext/date/tests/bug50392.phpt
index 4fa506ef5..9b1002317 100644
--- a/ext/date/tests/bug50392.phpt
+++ b/ext/date/tests/bug50392.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #50392 date_create_from_format enforces 6 digits for 'u' format character
+Bug #50392 (date_create_from_format enforces 6 digits for 'u' format character)
--FILE--
<?php
date_default_timezone_set('Europe/Bratislava');
diff --git a/ext/date/tests/bug51096.phpt b/ext/date/tests/bug51096.phpt
index 31503bc7a..df31313a7 100644
--- a/ext/date/tests/bug51096.phpt
+++ b/ext/date/tests/bug51096.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #51096: Test for "first day" vs "first day of".
+Bug #51096 (Test for "first day" vs "first day of")
--FILE--
<?php
$tests = array(
diff --git a/ext/date/tests/bug51866.phpt b/ext/date/tests/bug51866.phpt
new file mode 100644
index 000000000..8d765b02f
--- /dev/null
+++ b/ext/date/tests/bug51866.phpt
@@ -0,0 +1,161 @@
+--TEST--
+Bug #51866 (Lenient parsing with parseFromFormat)
+--FILE--
+<?php
+date_default_timezone_set('UTC');
+
+$tests = array(
+ array( 'Y-m-d', '2001-11-29 13:20:01' ),
+ array( 'Y-m-d+', '2001-11-29 13:20:01' ),
+ array( 'Y-m-d +', '2001-11-29 13:20:01' ),
+ array( 'Y-m-d+', '2001-11-29' ),
+ array( 'Y-m-d +', '2001-11-29' ),
+ array( 'Y-m-d +', '2001-11-29 ' ),
+);
+foreach( $tests as $test )
+{
+ list($format, $str) = $test;
+ var_dump($format, $str);
+ $d = DateTime::createFromFormat($format, $str);
+ var_dump($d);
+ var_dump(DateTime::getLastErrors());
+
+ echo "\n\n";
+}
+--EXPECTF--
+string(5) "Y-m-d"
+string(19) "2001-11-29 13:20:01"
+bool(false)
+array(4) {
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(1)
+ ["errors"]=>
+ array(1) {
+ [10]=>
+ string(13) "Trailing data"
+ }
+}
+
+
+string(6) "Y-m-d+"
+string(19) "2001-11-29 13:20:01"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2001-11-29 %d:%d:%d"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(%d) "%s"
+}
+array(4) {
+ ["warning_count"]=>
+ int(1)
+ ["warnings"]=>
+ array(1) {
+ [10]=>
+ string(13) "Trailing data"
+ }
+ ["error_count"]=>
+ int(0)
+ ["errors"]=>
+ array(0) {
+ }
+}
+
+
+string(7) "Y-m-d +"
+string(19) "2001-11-29 13:20:01"
+object(DateTime)#3 (3) {
+ ["date"]=>
+ string(19) "2001-11-29 %d:%d:%d"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(%d) "%s"
+}
+array(4) {
+ ["warning_count"]=>
+ int(1)
+ ["warnings"]=>
+ array(1) {
+ [11]=>
+ string(13) "Trailing data"
+ }
+ ["error_count"]=>
+ int(0)
+ ["errors"]=>
+ array(0) {
+ }
+}
+
+
+string(6) "Y-m-d+"
+string(10) "2001-11-29"
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2001-11-29 %d:%d:%d"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(%d) "%s"
+}
+array(4) {
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(0)
+ ["errors"]=>
+ array(0) {
+ }
+}
+
+
+string(7) "Y-m-d +"
+string(10) "2001-11-29"
+bool(false)
+array(4) {
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(1)
+ ["errors"]=>
+ array(1) {
+ [10]=>
+ string(12) "Data missing"
+ }
+}
+
+
+string(7) "Y-m-d +"
+string(11) "2001-11-29 "
+object(DateTime)#2 (3) {
+ ["date"]=>
+ string(19) "2001-11-29 %d:%d:%d"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(%d) "%s"
+}
+array(4) {
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(0)
+ ["errors"]=>
+ array(0) {
+ }
+}
diff --git a/ext/date/tests/bug51994.phpt b/ext/date/tests/bug51994.phpt
index fb0fe46d8..2c456ba6e 100644
--- a/ext/date/tests/bug51994.phpt
+++ b/ext/date/tests/bug51994.phpt
@@ -1,12 +1,9 @@
--TEST--
Bug #51994 (date_parse_from_format is parsing invalid date using 'yz' format)
---XFAIL--
-Bug #51994 isn't fixed yet
--FILE--
<?php
$trans_date = '10153'; // 152nd day of year 2010 -> 03.06.2010
$a_date = date_parse_from_format('yz', $trans_date);
-
var_dump($a_date);
?>
--EXPECTF--
diff --git a/ext/date/tests/bug52062-64bit.phpt b/ext/date/tests/bug52062-64bit.phpt
new file mode 100644
index 000000000..e4a2a524f
--- /dev/null
+++ b/ext/date/tests/bug52062-64bit.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (64 bit)
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE == 4) die('skip 64 bit only');
+?>
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$d = new DateTime('@100000000000');
+var_dump($d->format('Y-m-d H:i:s U'));
+var_dump($d->getTimestamp());
+
+$d->setTimestamp(100000000000);
+var_dump($d->format('Y-m-d H:i:s U'));
+var_dump($d->getTimestamp());
+
+$i = new DateInterval('PT100000000000S');
+var_dump($i->format('%s'));
+?>
+--EXPECT--
+string(32) "5138-11-16 09:46:40 100000000000"
+int(100000000000)
+string(32) "5138-11-16 09:46:40 100000000000"
+int(100000000000)
+string(12) "100000000000"
diff --git a/ext/date/tests/bug52062.phpt b/ext/date/tests/bug52062.phpt
new file mode 100644
index 000000000..d3e1c9abf
--- /dev/null
+++ b/ext/date/tests/bug52062.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (32 bit)
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE == 8) die('skip 32-bit only');
+?>
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$d = new DateTime('@100000000000');
+var_dump($d->format('Y-m-d H:i:s U'));
+var_dump($d->getTimestamp());
+
+$d->setTimestamp(100000000000);
+var_dump($d->format('Y-m-d H:i:s U'));
+var_dump($d->getTimestamp());
+
+$i = new DateInterval('PT100000000000S');
+var_dump($i->format('%s'));
+?>
+--EXPECT--
+string(32) "5138-11-16 09:46:40 100000000000"
+int(100000000000)
+string(32) "5138-11-16 09:46:40 100000000000"
+int(100000000000)
+string(12) "100000000000"
diff --git a/ext/date/tests/bug52113.phpt b/ext/date/tests/bug52113.phpt
new file mode 100644
index 000000000..a7d9339d1
--- /dev/null
+++ b/ext/date/tests/bug52113.phpt
@@ -0,0 +1,102 @@
+--TEST--
+Bug #52113 (Seg fault while creating (by unserialization) DatePeriod)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$start = new DateTime('2003-01-02 08:00:00');
+$end = new DateTime('2003-01-02 12:00:00');
+$diff = $start->diff($end);
+$p = new DatePeriod($start, $diff, 2);
+$diff_s = serialize($diff);
+var_dump($diff, $diff_s);
+var_export($diff);
+
+$diff_un = unserialize($diff_s);
+$p = new DatePeriod($start, $diff_un, 2);
+var_dump($diff_un, $p);
+
+$unser = DateInterval::__set_state(array(
+ 'y' => 7,
+ 'm' => 6,
+ 'd' => 5,
+ 'h' => 4,
+ 'i' => 3,
+ 's' => 2,
+ 'invert' => 1,
+ 'days' => 2400,
+));
+
+$p = new DatePeriod($start, $diff_un, 2);
+var_dump($unser, $p);
+
+?>
+--EXPECT--
+object(DateInterval)#3 (8) {
+ ["y"]=>
+ int(0)
+ ["m"]=>
+ int(0)
+ ["d"]=>
+ int(0)
+ ["h"]=>
+ int(4)
+ ["i"]=>
+ int(0)
+ ["s"]=>
+ int(0)
+ ["invert"]=>
+ int(0)
+ ["days"]=>
+ int(0)
+}
+string(128) "O:12:"DateInterval":8:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:6:"invert";i:0;s:4:"days";i:0;}"
+DateInterval::__set_state(array(
+ 'y' => 0,
+ 'm' => 0,
+ 'd' => 0,
+ 'h' => 4,
+ 'i' => 0,
+ 's' => 0,
+ 'invert' => 0,
+ 'days' => 0,
+))object(DateInterval)#5 (8) {
+ ["y"]=>
+ int(0)
+ ["m"]=>
+ int(0)
+ ["d"]=>
+ int(0)
+ ["h"]=>
+ int(4)
+ ["i"]=>
+ int(0)
+ ["s"]=>
+ int(0)
+ ["invert"]=>
+ int(0)
+ ["days"]=>
+ int(0)
+}
+object(DatePeriod)#6 (0) {
+}
+object(DateInterval)#4 (8) {
+ ["y"]=>
+ int(7)
+ ["m"]=>
+ int(6)
+ ["d"]=>
+ int(5)
+ ["h"]=>
+ int(4)
+ ["i"]=>
+ int(3)
+ ["s"]=>
+ int(2)
+ ["invert"]=>
+ int(1)
+ ["days"]=>
+ int(2400)
+}
+object(DatePeriod)#7 (0) {
+}
diff --git a/ext/date/tests/bug53437.phpt b/ext/date/tests/bug53437.phpt
new file mode 100644
index 000000000..f08986653
--- /dev/null
+++ b/ext/date/tests/bug53437.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Bug #53437 (Crash when using unserialized DatePeriod instance)
+--XFAIL--
+Bug #53437 Not fixed yet
+--FILE--
+<?php
+$dp = new DatePeriod(new DateTime('2010-01-01 UTC'), new DateInterval('P1D'), 2);
+
+echo "Original:\r\n";
+foreach($dp as $dt) {
+ echo $dt->format('Y-m-d H:i:s')."\r\n";
+}
+echo "\r\n";
+var_dump($dp);
+
+$ser = serialize($dp); // $ser is: O:10:"DatePeriod":0:{}
+
+// Create dangerous instance
+$dpu = unserialize($ser); // $dpu has invalid values???
+var_dump($dpu);
+
+echo "Unserialized:\r\n";
+// ???which leads to CRASH:
+foreach($dpu as $dt) {
+ echo $dt->format('Y-m-d H:i:s')."\r\n";
+}
+?>
+--EXPECT--
diff --git a/ext/date/tests/bug53502.phpt b/ext/date/tests/bug53502.phpt
new file mode 100644
index 000000000..6cfa5e07f
--- /dev/null
+++ b/ext/date/tests/bug53502.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #53502 (strtotime with timezone memory leak)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+for ($i = 0; $i < 1000; $i++) {
+ strtotime('Monday 00:00 Europe/Paris'); // Memory leak
+}
+echo "Nothing, test only makes sense through valgrind.\n";
+?>
+--EXPECT--
+Nothing, test only makes sense through valgrind.
diff --git a/ext/date/tests/bug54597.phpt b/ext/date/tests/bug54597.phpt
new file mode 100644
index 000000000..d196adf12
--- /dev/null
+++ b/ext/date/tests/bug54597.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Bug #54597 (incorrect years for DateTime objects created with 4-digit years)
+--INI--
+date.timezone=Europe/London
+--FILE--
+<?php
+$tz = new DateTimeZone("Europe/Amsterdam");
+$dateObject = new DateTime( 'January 0099', $tz );
+echo $dateObject->format( 'Y' ), "\n";
+$dateObject = new DateTime( 'January 1, 0099', $tz );
+echo $dateObject->format( 'Y' ), "\n";
+$dateObject = new DateTime( '0099-01', $tz );
+echo $dateObject->format( 'Y' ), "\n";
+?>
+--EXPECT--
+0099
+0099
+0099
diff --git a/ext/date/tests/bug54851.phpt b/ext/date/tests/bug54851.phpt
new file mode 100644
index 000000000..84d18ba5a
--- /dev/null
+++ b/ext/date/tests/bug54851.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Bug #54851 (DateTime::createFromFormat() doesn't interpret "D")
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$date = new DateTime("2011-05-17T22:14:12");
+$date2 = DateTime::createFromFormat("D H i s", $date->format("D"). ' 0 00 00');
+echo $date->format("r"), "\n";
+echo $date2->format("r"), "\n";
+var_dump($date->format("D") == $date2->format("D"));
+
+// Verify that our implementation works regardless of position
+$datePre = DateTime::createFromFormat("!D d M Y", "Fri 17 may 2011");
+$datePost = DateTime::createFromFormat("!d M Y D", "17 may 2011 Fri");
+echo $datePre->format("r"), "\n";
+echo $datePost->format("r"), "\n";
+var_dump($datePre->format("Y-m-d") == $datePost->format("Y-m-d"));
+
+// Verify that our implementation is the same as for the constructor and
+// strtotime
+$date1 = new DateTime("Tuesday");
+$date2 = DateTime::createFromFormat("D H i s", "Tuesday 0 00 00");
+echo $date1->format('r'), "\n";
+echo $date2->format('r'), "\n";
+var_dump($date1->format('D') == $date2->format('D'));
+
+// - when the day is not the same as the day on the original date:
+$date1 = DateTime::createFromFormat("!D d M Y", "Fri 19 November 2011");
+$date2 = new DateTime("Fri 19 November 2011");
+echo $date1->format('r'), "\n";
+echo $date2->format('r'), "\n";
+var_dump($date1->format('Y-m-d') == $date2->format('Y-m-d'));
+
+// - when the day *is* the same as the day on the original date:
+$date1 = DateTime::createFromFormat("!D d M Y", "Sat 19 November 2011");
+$date2 = new DateTime("Sat 19 November 2011");
+echo $date1->format('r'), "\n";
+echo $date2->format('r'), "\n";
+var_dump($date1->format('Y-m-d') == $date2->format('Y-m-d'));
+?>
+--EXPECTF--
+Tue, 17 May 2011 22:14:12 +0000
+Tue, %d %s %d 00:00:00 +0000
+bool(true)
+Fri, 20 May 2011 00:00:00 +0000
+Fri, 20 May 2011 00:00:00 +0000
+bool(true)
+Tue, %d %s %d 00:00:00 +0000
+Tue, %d %s %d 00:00:00 +0000
+bool(true)
+Fri, 25 Nov 2011 00:00:00 +0000
+Fri, 25 Nov 2011 00:00:00 +0000
+bool(true)
+Sat, 19 Nov 2011 00:00:00 +0000
+Sat, 19 Nov 2011 00:00:00 +0000
+bool(true)
diff --git a/ext/date/tests/bug55253.phpt b/ext/date/tests/bug55253.phpt
index 3c0efc469..5751cc112 100755
--- a/ext/date/tests/bug55253.phpt
+++ b/ext/date/tests/bug55253.phpt
@@ -1,9 +1,7 @@
--TEST--
-DateTime::add() and sub() result -1 hour on objects with time zone type 2
+Bug #55253 (DateTime::add() and sub() result -1 hour on objects with time zone type 2)
--CREDITS--
Daniel Convissor <danielc@php.net>
---XFAIL--
-Bug 55253 exists
--FILE--
<?php
diff --git a/ext/date/tests/bug60236.phpt b/ext/date/tests/bug60236.phpt
new file mode 100644
index 000000000..faa0e160c
--- /dev/null
+++ b/ext/date/tests/bug60236.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #60236 (TLA timezone dates are not converted properly from timestamp)
+--INI--
+date.timezone=America/New_York
+--FILE--
+<?php
+$t = new DateTime('2010-07-06 18:38:28 EDT');
+$ts = $t->format('U');
+var_dump($ts);
+$t->setTimestamp($ts);
+var_dump($t);
+?>
+--EXPECT--
+string(10) "1278455908"
+object(DateTime)#1 (3) {
+ ["date"]=>
+ string(19) "2010-07-06 18:38:28"
+ ["timezone_type"]=>
+ int(2)
+ ["timezone"]=>
+ string(3) "EDT"
+}
diff --git a/ext/date/tests/date.phpt b/ext/date/tests/date.phpt
index ccdb3cda9..12bc9f0fc 100644
--- a/ext/date/tests/date.phpt
+++ b/ext/date/tests/date.phpt
@@ -3,13 +3,13 @@ date() function
--FILE--
<?php
$tmp = "cr";
-putenv ("TZ=GMT0");
+date_default_timezone_set('UTC');
for($a = 0;$a < strlen($tmp); $a++){
echo $tmp[$a], ': ', date($tmp[$a], 1043324459)."\n";
}
-putenv ("TZ=MET");
+date_default_timezone_set("MET");
for($a = 0;$a < strlen($tmp); $a++){
echo $tmp[$a], ': ', date($tmp[$a], 1043324459)."\n";
diff --git a/ext/date/tests/date_default_timezone_set-1.phpt b/ext/date/tests/date_default_timezone_set-1.phpt
index c6a6daf7a..bca8789e7 100644
--- a/ext/date/tests/date_default_timezone_set-1.phpt
+++ b/ext/date/tests/date_default_timezone_set-1.phpt
@@ -1,5 +1,9 @@
--TEST--
date_default_timezone_set() function [1]
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') die('skip diff TZ detection on windows.');
+?>
--INI--
date.timezone=
--FILE--
diff --git a/ext/date/tests/gmstrftime_variation22.phpt b/ext/date/tests/gmstrftime_variation22.phpt
index 198941871..d9abdce17 100644
--- a/ext/date/tests/gmstrftime_variation22.phpt
+++ b/ext/date/tests/gmstrftime_variation22.phpt
@@ -5,8 +5,8 @@ Test gmstrftime() function : usage variation - Checking Preferred date and time
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
die("skip Test is not valid for Windows");
}
-if (!setlocale(LC_ALL, "en_US.utf8", "en_US")) {
- die("skip Locale en_US or en_US.utf8 is required to run this test");
+if (!setlocale(LC_TIME, "POSIX")) {
+ die("skip Locale POSIX is required to run this test");
}
?>
--FILE--
@@ -21,7 +21,8 @@ echo "*** Testing gmstrftime() : usage variation ***\n";
// Initialise function arguments not being substituted (if any)
$timestamp = gmmktime(8, 8, 8, 8, 8, 2008);
-setlocale(LC_ALL, "en_US.utf8", "en_US");
+setlocale(LC_TIME, "POSIX");
+putenv("LC_TIME=POSIX");
date_default_timezone_set("Asia/Calcutta");
//array of values to iterate over
@@ -46,13 +47,13 @@ foreach($inputs as $key =>$value) {
--Preferred date and time representation--
string(2) "%c"
-string(31) "Fri 08 Aug 2008 08:08:08 AM GMT"
+string(24) "Fri Aug 8 08:08:08 2008"
--Preferred date representation--
string(2) "%x"
-string(10) "08/08/2008"
+string(8) "08/08/08"
--Preferred time representation--
string(2) "%X"
-string(11) "08:08:08 AM"
+string(8) "08:08:08"
===DONE===
diff --git a/ext/date/tests/mktime-2.phpt b/ext/date/tests/mktime-2.phpt
index aa259b577..931f63755 100644
--- a/ext/date/tests/mktime-2.phpt
+++ b/ext/date/tests/mktime-2.phpt
@@ -5,13 +5,13 @@ error_reporting=2047
--FILE--
<?php
$timezones = array(
- 'GMT0',
+ 'UTC',
'Europe/London'
);
foreach($timezones as $timezone)
{
- putenv('TZ='.$timezone);
+ date_default_timezone_set($timezone);
/* status of daylight saving time unknown */
var_dump(mktime(0, 0, 0, 1, 1, 2002));
diff --git a/ext/date/tests/rfc-datetime_and_daylight_saving_time-type1.phpt b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type1.phpt
new file mode 100644
index 000000000..c29760891
--- /dev/null
+++ b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type1.phpt
@@ -0,0 +1,380 @@
+--TEST--
+RFC: DateTime and Daylight Saving Time Transitions (zone type 1)
+--CREDITS--
+Daniel Convissor <danielc@php.net>
+--FILE--
+<?php
+
+date_default_timezone_set('America/New_York');
+$date_format = 'Y-m-d H:i:s e';
+$interval_format = 'P%dDT%hH';
+
+/*
+ * Forward Transitions, diff().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00 -0400');
+$start = new DateTime('2010-03-14 01:59:59 -0500');
+echo 'fd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00 -0400');
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+echo 'fd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 -0400');
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+echo 'fd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 -0500');
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+echo 'fd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 -0500');
+$start = new DateTime('2010-03-13 01:30:00 -0500');
+echo 'fd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 -0400');
+$start = new DateTime('2010-03-13 03:30:00 -0500');
+echo 'fd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 -0400');
+$start = new DateTime('2010-03-13 02:30:00 -0500');
+echo 'fd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, add().
+ */
+
+$start = new DateTime('2010-03-14 01:59:59 -0500');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fa1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fa3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 -0500');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fa4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 01:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 02:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, sub().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00 -0400');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 -0400');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 -0500');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 03:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 02:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, diff().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 -0500');
+$start = new DateTime('2010-11-07 01:59:59 -0400');
+echo 'bd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00 -0500');
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+echo 'bd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 -0500');
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+echo 'bd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 -0500');
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+echo 'bd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0500');
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+echo 'bd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0400');
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+echo 'bd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0400');
+$start = new DateTime('2010-11-06 01:30:00 -0400');
+echo 'bd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0500');
+$start = new DateTime('2010-11-06 01:30:00 -0400');
+echo 'bd8 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, add().
+ */
+
+$start = new DateTime('2010-11-07 01:59:59 -0400');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'ba1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'ba3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'ba4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'ba5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'ba6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba7 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00 -0400');
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'ba8 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 -0400');
+$interval_spec = 'PT25H';
+$interval = new DateInterval($interval_spec);
+echo 'ba9 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 03:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba10 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 02:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba11 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, sub().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 -0500');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'bs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 -0500');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'bs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 -0500');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'bs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0500');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'bs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0400');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'bs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0400');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 -0500');
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'bs8 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs9 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 -0500');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs10 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+?>
+--EXPECT--
+fd1 2010-03-14 03:00:00 -04:00 - 2010-03-14 01:59:59 -05:00 = PT0H0M1S
+fd2 2010-03-14 04:30:00 -04:00 - 2010-03-13 04:30:00 -05:00 = P0DT23H
+fd3 2010-03-14 03:30:00 -04:00 - 2010-03-13 04:30:00 -05:00 = P0DT22H
+fd4 2010-03-14 01:30:00 -05:00 - 2010-03-13 04:30:00 -05:00 = P0DT21H
+fd5 2010-03-14 01:30:00 -05:00 - 2010-03-13 01:30:00 -05:00 = P1DT0H
+fd6 2010-03-14 03:30:00 -04:00 - 2010-03-13 03:30:00 -05:00 = P0DT23H
+fd7 2010-03-14 03:30:00 -04:00 - 2010-03-13 02:30:00 -05:00 = P1DT0H
+
+fa1 2010-03-14 01:59:59 -05:00 + PT1S = 2010-03-14 02:00:00 -05:00
+fa2 2010-03-13 04:30:00 -05:00 + P1D = 2010-03-14 04:30:00 -05:00
+fa3 2010-03-13 04:30:00 -05:00 + PT22H = 2010-03-14 02:30:00 -05:00
+fa4 2010-03-13 04:30:00 -05:00 + PT21H = 2010-03-14 01:30:00 -05:00
+fa5 2010-03-13 01:30:00 -05:00 + P1D = 2010-03-14 01:30:00 -05:00
+fa6 2010-03-13 02:30:00 -05:00 + P1D = 2010-03-14 02:30:00 -05:00
+
+fs1 2010-03-14 03:00:00 -04:00 - PT1S = 2010-03-14 02:59:59 -04:00
+fs2 2010-03-14 04:30:00 -04:00 - P1D = 2010-03-13 04:30:00 -04:00
+fs3 2010-03-14 03:30:00 -04:00 - PT22H = 2010-03-13 05:30:00 -04:00
+fs4 2010-03-14 01:30:00 -05:00 - PT21H = 2010-03-13 04:30:00 -05:00
+fs5 2010-03-14 01:30:00 -05:00 - P1D = 2010-03-13 01:30:00 -05:00
+fs6 2010-03-15 03:30:00 -04:00 - P1D = 2010-03-14 03:30:00 -04:00
+fs7 2010-03-15 02:30:00 -04:00 - P1D = 2010-03-14 02:30:00 -04:00
+
+bd1 2010-11-07 01:00:00 -05:00 - 2010-11-07 01:59:59 -04:00 = PT0H0M1S
+bd2 2010-11-07 04:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P1DT1H
+bd3 2010-11-07 03:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P1DT0H
+bd4 2010-11-07 02:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P0DT23H
+bd5 2010-11-07 01:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P0DT22H
+bd6 2010-11-07 01:30:00 -04:00 - 2010-11-06 04:30:00 -04:00 = P0DT21H
+bd7 2010-11-07 01:30:00 -04:00 - 2010-11-06 01:30:00 -04:00 = P1DT0H
+bd8 2010-11-07 01:30:00 -05:00 - 2010-11-06 01:30:00 -04:00 = P1DT1H
+
+ba1 2010-11-07 01:59:59 -04:00 + PT1S = 2010-11-07 02:00:00 -04:00
+ba2 2010-11-06 04:30:00 -04:00 + P1D = 2010-11-07 04:30:00 -04:00
+ba3 2010-11-06 04:30:00 -04:00 + PT24H = 2010-11-07 04:30:00 -04:00
+ba4 2010-11-06 04:30:00 -04:00 + PT23H = 2010-11-07 03:30:00 -04:00
+ba5 2010-11-06 04:30:00 -04:00 + PT22H = 2010-11-07 02:30:00 -04:00
+ba6 2010-11-06 04:30:00 -04:00 + PT21H = 2010-11-07 01:30:00 -04:00
+ba7 2010-11-06 01:30:00 -04:00 + P1D = 2010-11-07 01:30:00 -04:00
+ba8 2010-11-06 01:30:00 -04:00 + P1DT1H = 2010-11-07 02:30:00 -04:00
+ba9 2010-11-06 04:30:00 -04:00 + PT25H = 2010-11-07 05:30:00 -04:00
+ba10 2010-11-06 03:30:00 -04:00 + P1D = 2010-11-07 03:30:00 -04:00
+ba11 2010-11-06 02:30:00 -04:00 + P1D = 2010-11-07 02:30:00 -04:00
+
+bs1 2010-11-07 01:00:00 -05:00 - PT1S = 2010-11-07 00:59:59 -05:00
+bs2 2010-11-07 04:30:00 -05:00 - P1D = 2010-11-06 04:30:00 -05:00
+bs3 2010-11-07 03:30:00 -05:00 - PT24H = 2010-11-06 03:30:00 -05:00
+bs4 2010-11-07 02:30:00 -05:00 - PT23H = 2010-11-06 03:30:00 -05:00
+bs5 2010-11-07 01:30:00 -05:00 - PT22H = 2010-11-06 03:30:00 -05:00
+bs6 2010-11-07 01:30:00 -04:00 - PT21H = 2010-11-06 04:30:00 -04:00
+bs7 2010-11-07 01:30:00 -04:00 - P1D = 2010-11-06 01:30:00 -04:00
+bs8 2010-11-07 01:30:00 -05:00 - P1DT1H = 2010-11-06 00:30:00 -05:00
+bs9 2010-11-07 03:30:00 -05:00 - P1D = 2010-11-06 03:30:00 -05:00
+bs10 2010-11-07 02:30:00 -05:00 - P1D = 2010-11-06 02:30:00 -05:00
diff --git a/ext/date/tests/rfc-datetime_and_daylight_saving_time-type2.phpt b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type2.phpt
new file mode 100644
index 000000000..72585125e
--- /dev/null
+++ b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type2.phpt
@@ -0,0 +1,380 @@
+--TEST--
+RFC: DateTime and Daylight Saving Time Transitions (zone type 2)
+--CREDITS--
+Daniel Convissor <danielc@php.net>
+--FILE--
+<?php
+
+date_default_timezone_set('America/New_York');
+$date_format = 'Y-m-d H:i:s T e';
+$interval_format = 'P%dDT%hH';
+
+/*
+ * Forward Transitions, diff().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00 EDT');
+$start = new DateTime('2010-03-14 01:59:59 EST');
+echo 'fd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00 EDT');
+$start = new DateTime('2010-03-13 04:30:00 EST');
+echo 'fd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 EDT');
+$start = new DateTime('2010-03-13 04:30:00 EST');
+echo 'fd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 EST');
+$start = new DateTime('2010-03-13 04:30:00 EST');
+echo 'fd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 EST');
+$start = new DateTime('2010-03-13 01:30:00 EST');
+echo 'fd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 EDT');
+$start = new DateTime('2010-03-13 03:30:00 EST');
+echo 'fd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 EDT');
+$start = new DateTime('2010-03-13 02:30:00 EST');
+echo 'fd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, add().
+ */
+
+$start = new DateTime('2010-03-14 01:59:59 EST');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fa1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 EST');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fa3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00 EST');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fa4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 01:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 02:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, sub().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00 EDT');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00 EDT');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 EST');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 03:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 02:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, diff().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 EST');
+$start = new DateTime('2010-11-07 01:59:59 EDT');
+echo 'bd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00 EST');
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+echo 'bd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 EST');
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+echo 'bd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 EST');
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+echo 'bd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+echo 'bd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+echo 'bd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$start = new DateTime('2010-11-06 01:30:00 EDT');
+echo 'bd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$start = new DateTime('2010-11-06 01:30:00 EDT');
+echo 'bd8 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, add().
+ */
+
+$start = new DateTime('2010-11-07 01:59:59 EDT');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'ba1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'ba3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'ba4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'ba5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'ba6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba7 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00 EDT');
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'ba8 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00 EDT');
+$interval_spec = 'PT25H';
+$interval = new DateInterval($interval_spec);
+echo 'ba9 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 03:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba10 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 02:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba11 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, sub().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 EST');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'bs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 EST');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'bs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 EST');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'bs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'bs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'bs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'bs8 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs9 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00 EST');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs10 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+?>
+--EXPECT--
+fd1 2010-03-14 03:00:00 EDT EDT - 2010-03-14 01:59:59 EST EST = PT0H0M1S
+fd2 2010-03-14 04:30:00 EDT EDT - 2010-03-13 04:30:00 EST EST = P0DT23H
+fd3 2010-03-14 03:30:00 EDT EDT - 2010-03-13 04:30:00 EST EST = P0DT22H
+fd4 2010-03-14 01:30:00 EST EST - 2010-03-13 04:30:00 EST EST = P0DT21H
+fd5 2010-03-14 01:30:00 EST EST - 2010-03-13 01:30:00 EST EST = P1DT0H
+fd6 2010-03-14 03:30:00 EDT EDT - 2010-03-13 03:30:00 EST EST = P0DT23H
+fd7 2010-03-14 03:30:00 EDT EDT - 2010-03-13 02:30:00 EST EST = P1DT0H
+
+fa1 2010-03-14 01:59:59 EST EST + PT1S = 2010-03-14 02:00:00 EST EST
+fa2 2010-03-13 04:30:00 EST EST + P1D = 2010-03-14 04:30:00 EST EST
+fa3 2010-03-13 04:30:00 EST EST + PT22H = 2010-03-14 02:30:00 EST EST
+fa4 2010-03-13 04:30:00 EST EST + PT21H = 2010-03-14 01:30:00 EST EST
+fa5 2010-03-13 01:30:00 EST EST + P1D = 2010-03-14 01:30:00 EST EST
+fa6 2010-03-13 02:30:00 EST EST + P1D = 2010-03-14 02:30:00 EST EST
+
+fs1 2010-03-14 03:00:00 EDT EDT - PT1S = 2010-03-14 02:59:59 EDT EDT
+fs2 2010-03-14 04:30:00 EDT EDT - P1D = 2010-03-13 04:30:00 EDT EDT
+fs3 2010-03-14 03:30:00 EDT EDT - PT22H = 2010-03-13 05:30:00 EDT EDT
+fs4 2010-03-14 01:30:00 EST EST - PT21H = 2010-03-13 04:30:00 EST EST
+fs5 2010-03-14 01:30:00 EST EST - P1D = 2010-03-13 01:30:00 EST EST
+fs6 2010-03-15 03:30:00 EDT EDT - P1D = 2010-03-14 03:30:00 EDT EDT
+fs7 2010-03-15 02:30:00 EDT EDT - P1D = 2010-03-14 02:30:00 EDT EDT
+
+bd1 2010-11-07 01:00:00 EST EST - 2010-11-07 01:59:59 EDT EDT = PT0H0M1S
+bd2 2010-11-07 04:30:00 EST EST - 2010-11-06 04:30:00 EDT EDT = P1DT1H
+bd3 2010-11-07 03:30:00 EST EST - 2010-11-06 04:30:00 EDT EDT = P1DT0H
+bd4 2010-11-07 02:30:00 EST EST - 2010-11-06 04:30:00 EDT EDT = P0DT23H
+bd5 2010-11-07 01:30:00 EST EST - 2010-11-06 04:30:00 EDT EDT = P0DT22H
+bd6 2010-11-07 01:30:00 EDT EDT - 2010-11-06 04:30:00 EDT EDT = P0DT21H
+bd7 2010-11-07 01:30:00 EDT EDT - 2010-11-06 01:30:00 EDT EDT = P1DT0H
+bd8 2010-11-07 01:30:00 EST EST - 2010-11-06 01:30:00 EDT EDT = P1DT1H
+
+ba1 2010-11-07 01:59:59 EDT EDT + PT1S = 2010-11-07 02:00:00 EDT EDT
+ba2 2010-11-06 04:30:00 EDT EDT + P1D = 2010-11-07 04:30:00 EDT EDT
+ba3 2010-11-06 04:30:00 EDT EDT + PT24H = 2010-11-07 04:30:00 EDT EDT
+ba4 2010-11-06 04:30:00 EDT EDT + PT23H = 2010-11-07 03:30:00 EDT EDT
+ba5 2010-11-06 04:30:00 EDT EDT + PT22H = 2010-11-07 02:30:00 EDT EDT
+ba6 2010-11-06 04:30:00 EDT EDT + PT21H = 2010-11-07 01:30:00 EDT EDT
+ba7 2010-11-06 01:30:00 EDT EDT + P1D = 2010-11-07 01:30:00 EDT EDT
+ba8 2010-11-06 01:30:00 EDT EDT + P1DT1H = 2010-11-07 02:30:00 EDT EDT
+ba9 2010-11-06 04:30:00 EDT EDT + PT25H = 2010-11-07 05:30:00 EDT EDT
+ba10 2010-11-06 03:30:00 EDT EDT + P1D = 2010-11-07 03:30:00 EDT EDT
+ba11 2010-11-06 02:30:00 EDT EDT + P1D = 2010-11-07 02:30:00 EDT EDT
+
+bs1 2010-11-07 01:00:00 EST EST - PT1S = 2010-11-07 00:59:59 EST EST
+bs2 2010-11-07 04:30:00 EST EST - P1D = 2010-11-06 04:30:00 EST EST
+bs3 2010-11-07 03:30:00 EST EST - PT24H = 2010-11-06 03:30:00 EST EST
+bs4 2010-11-07 02:30:00 EST EST - PT23H = 2010-11-06 03:30:00 EST EST
+bs5 2010-11-07 01:30:00 EST EST - PT22H = 2010-11-06 03:30:00 EST EST
+bs6 2010-11-07 01:30:00 EDT EDT - PT21H = 2010-11-06 04:30:00 EDT EDT
+bs7 2010-11-07 01:30:00 EDT EDT - P1D = 2010-11-06 01:30:00 EDT EDT
+bs8 2010-11-07 01:30:00 EST EST - P1DT1H = 2010-11-06 00:30:00 EST EST
+bs9 2010-11-07 03:30:00 EST EST - P1D = 2010-11-06 03:30:00 EST EST
+bs10 2010-11-07 02:30:00 EST EST - P1D = 2010-11-06 02:30:00 EST EST
diff --git a/ext/date/tests/rfc-datetime_and_daylight_saving_time-type3.phpt b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type3.phpt
new file mode 100644
index 000000000..855fe4ef6
--- /dev/null
+++ b/ext/date/tests/rfc-datetime_and_daylight_saving_time-type3.phpt
@@ -0,0 +1,399 @@
+--TEST--
+RFC: DateTime and Daylight Saving Time Transitions (zone type 3)
+--CREDITS--
+Daniel Convissor <danielc@php.net>
+--XFAIL--
+RFC not implemented yet
+--FILE--
+<?php
+
+date_default_timezone_set('America/New_York');
+$date_format = 'Y-m-d H:i:s T e';
+$interval_format = 'P%dDT%hH';
+
+/*
+ * Forward Transitions, diff().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00');
+$start = new DateTime('2010-03-14 01:59:59');
+echo 'fd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00');
+$start = new DateTime('2010-03-13 04:30:00');
+echo 'fd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00');
+$start = new DateTime('2010-03-13 04:30:00');
+echo 'fd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00');
+$start = new DateTime('2010-03-13 04:30:00');
+echo 'fd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00');
+$start = new DateTime('2010-03-13 01:30:00');
+echo 'fd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00');
+$start = new DateTime('2010-03-13 03:30:00');
+echo 'fd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00');
+$start = new DateTime('2010-03-13 02:30:00');
+echo 'fd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, add().
+ */
+
+$start = new DateTime('2010-03-14 01:59:59');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fa1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fa3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 04:30:00');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fa4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 01:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-03-13 02:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fa6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Forward Transitions, sub().
+ */
+
+$end = new DateTime('2010-03-14 03:00:00');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 04:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 03:30:00');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-14 01:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 03:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-03-15 02:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+
+/*
+ * For backward transitions, must create objects with zone type 2
+ * where specifying Daylight or Standard time is required
+ * then converting them to zone type 3.
+ */
+
+$tz = new DateTimeZone('America/New_York');
+
+/*
+ * Backward Transitions, diff().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 EST');
+$end->setTimeZone($tz);
+$start = new DateTime('2010-11-07 01:59:59');
+echo 'bd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00');
+$start = new DateTime('2010-11-06 04:30:00');
+echo 'bd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00');
+$start = new DateTime('2010-11-06 04:30:00');
+echo 'bd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00');
+$start = new DateTime('2010-11-06 04:30:00');
+echo 'bd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$end->setTimeZone($tz);
+$start = new DateTime('2010-11-06 04:30:00');
+echo 'bd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$end->setTimeZone($tz);
+$start = new DateTime('2010-11-06 04:30:00');
+echo 'bd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00');
+$start = new DateTime('2010-11-06 01:30:00');
+echo 'bd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$end->setTimeZone($tz);
+$start = new DateTime('2010-11-06 01:30:00');
+echo 'bd8 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
+ . ' = ' . $start->diff($end)->format($interval_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, add().
+ */
+
+$start = new DateTime('2010-11-07 01:59:59');
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'ba1 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba2 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'ba3 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'ba4 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'ba5 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'ba6 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba7 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 01:30:00');
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'ba8 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 04:30:00');
+$interval_spec = 'PT25H';
+$interval = new DateInterval($interval_spec);
+echo 'ba9 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 03:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba10 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+$start = new DateTime('2010-11-06 02:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'ba11 ' . $start->format($date_format) . " + $interval_spec = "
+ . $start->add($interval)->format($date_format) . "\n";
+
+echo "\n";
+
+/*
+ * Backward Transitions, sub().
+ */
+
+$end = new DateTime('2010-11-07 01:00:00 EST');
+$end->setTimeZone($tz);
+$interval_spec = 'PT1S';
+$interval = new DateInterval($interval_spec);
+echo 'bs1 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 04:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs2 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00');
+$interval_spec = 'PT24H';
+$interval = new DateInterval($interval_spec);
+echo 'bs3 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00');
+$interval_spec = 'PT23H';
+$interval = new DateInterval($interval_spec);
+echo 'bs4 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$end->setTimeZone($tz);
+$interval_spec = 'PT22H';
+$interval = new DateInterval($interval_spec);
+echo 'bs5 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EDT');
+$end->setTimeZone($tz);
+$interval_spec = 'PT21H';
+$interval = new DateInterval($interval_spec);
+echo 'bs6 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs7 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 01:30:00 EST');
+$end->setTimeZone($tz);
+$interval_spec = 'P1DT1H';
+$interval = new DateInterval($interval_spec);
+echo 'bs8 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 03:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs9 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+$end = new DateTime('2010-11-07 02:30:00');
+$interval_spec = 'P1D';
+$interval = new DateInterval($interval_spec);
+echo 'bs10 ' . $end->format($date_format) . " - $interval_spec = "
+ . $end->sub($interval)->format($date_format) . "\n";
+
+?>
+--EXPECT--
+fd1 2010-03-14 03:00:00 EDT America/New_York - 2010-03-14 01:59:59 EST America/New_York = PT0H0M1S
+fd2 2010-03-14 04:30:00 EDT America/New_York - 2010-03-13 04:30:00 EST America/New_York = P1DT0H
+fd3 2010-03-14 03:30:00 EDT America/New_York - 2010-03-13 04:30:00 EST America/New_York = P0DT22H
+fd4 2010-03-14 01:30:00 EST America/New_York - 2010-03-13 04:30:00 EST America/New_York = P0DT21H
+fd5 2010-03-14 01:30:00 EST America/New_York - 2010-03-13 01:30:00 EST America/New_York = P1DT0H
+fd6 2010-03-14 03:30:00 EDT America/New_York - 2010-03-13 03:30:00 EST America/New_York = P1DT0H
+fd7 2010-03-14 03:30:00 EDT America/New_York - 2010-03-13 02:30:00 EST America/New_York = P1DT1H
+
+fa1 2010-03-14 01:59:59 EST America/New_York + PT1S = 2010-03-14 03:00:00 EDT America/New_York
+fa2 2010-03-13 04:30:00 EST America/New_York + P1D = 2010-03-14 04:30:00 EDT America/New_York
+fa3 2010-03-13 04:30:00 EST America/New_York + PT22H = 2010-03-14 03:30:00 EDT America/New_York
+fa4 2010-03-13 04:30:00 EST America/New_York + PT21H = 2010-03-14 01:30:00 EST America/New_York
+fa5 2010-03-13 01:30:00 EST America/New_York + P1D = 2010-03-14 01:30:00 EST America/New_York
+fa6 2010-03-13 02:30:00 EST America/New_York + P1D = 2010-03-14 03:30:00 EDT America/New_York
+
+fs1 2010-03-14 03:00:00 EDT America/New_York - PT1S = 2010-03-14 01:59:59 EST America/New_York
+fs2 2010-03-14 04:30:00 EDT America/New_York - P1D = 2010-03-13 04:30:00 EST America/New_York
+fs3 2010-03-14 03:30:00 EDT America/New_York - PT22H = 2010-03-13 04:30:00 EST America/New_York
+fs4 2010-03-14 01:30:00 EST America/New_York - PT21H = 2010-03-13 04:30:00 EST America/New_York
+fs5 2010-03-14 01:30:00 EST America/New_York - P1D = 2010-03-13 01:30:00 EST America/New_York
+fs6 2010-03-15 03:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York
+fs7 2010-03-15 03:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York
+
+bd1 2010-11-07 01:00:00 EST America/New_York - 2010-11-07 01:59:59 EDT America/New_York = PT0H0M1S
+bd2 2010-11-07 04:30:00 EST America/New_York - 2010-11-06 04:30:00 EDT America/New_York = P1DT0H
+bd3 2010-11-07 03:30:00 EST America/New_York - 2010-11-06 04:30:00 EDT America/New_York = P0DT24H
+bd4 2010-11-07 02:30:00 EST America/New_York - 2010-11-06 04:30:00 EDT America/New_York = P0DT23H
+bd5 2010-11-07 01:30:00 EST America/New_York - 2010-11-06 04:30:00 EDT America/New_York = P0DT22H
+bd6 2010-11-07 01:30:00 EDT America/New_York - 2010-11-06 04:30:00 EDT America/New_York = P0DT21H
+bd7 2010-11-07 01:30:00 EDT America/New_York - 2010-11-06 01:30:00 EDT America/New_York = P1DT0H
+bd8 2010-11-07 01:30:00 EST America/New_York - 2010-11-06 01:30:00 EDT America/New_York = P1DT1H
+
+ba1 2010-11-07 01:59:59 EDT America/New_York + PT1S = 2010-11-07 01:00:00 EST America/New_York
+ba2 2010-11-06 04:30:00 EDT America/New_York + P1D = 2010-11-07 04:30:00 EST America/New_York
+ba3 2010-11-06 04:30:00 EDT America/New_York + PT24H = 2010-11-07 03:30:00 EST America/New_York
+ba4 2010-11-06 04:30:00 EDT America/New_York + PT23H = 2010-11-07 02:30:00 EST America/New_York
+ba5 2010-11-06 04:30:00 EDT America/New_York + PT22H = 2010-11-07 01:30:00 EST America/New_York
+ba6 2010-11-06 04:30:00 EDT America/New_York + PT21H = 2010-11-07 01:30:00 EDT America/New_York
+ba7 2010-11-06 01:30:00 EDT America/New_York + P1D = 2010-11-07 01:30:00 EDT America/New_York
+ba8 2010-11-06 01:30:00 EDT America/New_York + P1DT1H = 2010-11-07 01:30:00 EST America/New_York
+ba9 2010-11-06 04:30:00 EDT America/New_York + PT25H = 2010-11-07 04:30:00 EST America/New_York
+ba10 2010-11-06 03:30:00 EDT America/New_York + P1D = 2010-11-07 03:30:00 EST America/New_York
+ba11 2010-11-06 02:30:00 EDT America/New_York + P1D = 2010-11-07 02:30:00 EST America/New_York
+
+bs1 2010-11-07 01:00:00 EST America/New_York - PT1S = 2010-11-07 01:59:59 EDT America/New_York
+bs2 2010-11-07 04:30:00 EST America/New_York - P1D = 2010-11-06 04:30:00 EDT America/New_York
+bs3 2010-11-07 03:30:00 EST America/New_York - PT24H = 2010-11-06 04:30:00 EDT America/New_York
+bs4 2010-11-07 02:30:00 EST America/New_York - PT23H = 2010-11-06 04:30:00 EDT America/New_York
+bs5 2010-11-07 01:30:00 EST America/New_York - PT22H = 2010-11-06 04:30:00 EDT America/New_York
+bs6 2010-11-07 01:30:00 EDT America/New_York - PT21H = 2010-11-06 04:30:00 EDT America/New_York
+bs7 2010-11-07 01:30:00 EDT America/New_York - P1D = 2010-11-06 01:30:00 EDT America/New_York
+bs8 2010-11-07 01:30:00 EST America/New_York - P1DT1H = 2010-11-06 00:30:00 EDT America/New_York
+bs9 2010-11-07 03:30:00 EST America/New_York - P1D = 2010-11-06 03:30:00 EDT America/New_York
+bs10 2010-11-07 02:30:00 EST America/New_York - P1D = 2010-11-06 02:30:00 EDT America/New_York
diff --git a/ext/date/tests/strftime_variation22.phpt b/ext/date/tests/strftime_variation22.phpt
index 151a7d206..7b72ca51e 100644
--- a/ext/date/tests/strftime_variation22.phpt
+++ b/ext/date/tests/strftime_variation22.phpt
@@ -5,8 +5,8 @@ Test strftime() function : usage variation - Checking Preferred date and time re
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
die("skip Test is not valid for Windows");
}
-if(!setlocale(LC_ALL, "en_US.utf8", "en_US")) {
- die("skip Locale en_US.utf8 or en_US is needed by test and is not available");
+if(!setlocale(LC_ALL, "POSIX")) {
+ die("skip Locale POSIX is needed by test and is not available");
}
?>
--FILE--
@@ -20,7 +20,8 @@ if(!setlocale(LC_ALL, "en_US.utf8", "en_US")) {
echo "*** Testing strftime() : usage variation ***\n";
// Initialise function arguments not being substituted (if any)
-setlocale(LC_ALL, "en_US.utf8", "en_US");
+setlocale(LC_ALL, "POSIX");
+putenv("LC_ALL=POSIX");
date_default_timezone_set("Asia/Calcutta");
$timestamp = mktime(8, 8, 8, 8, 8, 2008);
@@ -46,13 +47,13 @@ foreach($inputs as $key =>$value) {
--Preferred date and time representation--
string(2) "%c"
-string(31) "Fri 08 Aug 2008 08:08:08 AM IST"
+string(24) "Fri Aug 8 08:08:08 2008"
--Preferred date representation--
string(2) "%x"
-string(10) "08/08/2008"
+string(8) "08/08/08"
--Preferred time representation--
string(2) "%X"
-string(11) "08:08:08 AM"
+string(8) "08:08:08"
===DONE===
diff --git a/ext/date/tests/timezone-configuration.phpt b/ext/date/tests/timezone-configuration.phpt
index efd248977..c70d6456d 100644
--- a/ext/date/tests/timezone-configuration.phpt
+++ b/ext/date/tests/timezone-configuration.phpt
@@ -4,10 +4,10 @@ timezone configuration [1]
date.timezone=GMT
--FILE--
<?php
- putenv('TZ=Europe/Oslo');
+ date_default_timezone_set('Europe/Oslo');
echo strtotime("2005-06-18 22:15:44"), "\n";
- putenv('TZ=Europe/London');
+ date_default_timezone_set('Europe/London');
echo strtotime("2005-06-18 22:15:44"), "\n";
date_default_timezone_set('Europe/Oslo');
diff --git a/ext/dba/dba.c b/ext/dba/dba.c
index 558c82c8c..90ccbf34e 100644
--- a/ext/dba/dba.c
+++ b/ext/dba/dba.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: dba.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_cdb.c b/ext/dba/dba_cdb.c
index 5a736d4eb..66e87ee1a 100644
--- a/ext/dba/dba_cdb.c
+++ b/ext/dba/dba_cdb.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_cdb.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_cdb.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_db1.c b/ext/dba/dba_db1.c
index d94ba159f..c8f08821b 100755
--- a/ext/dba/dba_db1.c
+++ b/ext/dba/dba_db1.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_db1.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_db1.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_db2.c b/ext/dba/dba_db2.c
index 4077fc3b9..8bb15ba03 100644
--- a/ext/dba/dba_db2.c
+++ b/ext/dba/dba_db2.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_db2.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_db2.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c
index c0a052cf2..710070ae2 100644
--- a/ext/dba/dba_db3.c
+++ b/ext/dba/dba_db3.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_db3.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_db3.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c
index 4cc4d6eb7..29dfba560 100644
--- a/ext/dba/dba_db4.c
+++ b/ext/dba/dba_db4.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_db4.c 312540 2011-06-27 22:58:59Z sixd $ */
+/* $Id: dba_db4.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_dbm.c b/ext/dba/dba_dbm.c
index 26116206e..7ad92989e 100644
--- a/ext/dba/dba_dbm.c
+++ b/ext/dba/dba_dbm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_dbm.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_dbm.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_flatfile.c b/ext/dba/dba_flatfile.c
index 51d3b6e29..8103de2cd 100644
--- a/ext/dba/dba_flatfile.c
+++ b/ext/dba/dba_flatfile.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_flatfile.c 309341 2011-03-17 11:43:05Z felipe $ */
+/* $Id: dba_flatfile.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_gdbm.c b/ext/dba/dba_gdbm.c
index 6aabddd16..f11f5ae68 100644
--- a/ext/dba/dba_gdbm.c
+++ b/ext/dba/dba_gdbm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_gdbm.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_gdbm.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_inifile.c b/ext/dba/dba_inifile.c
index 233ebf8c6..1dec89b00 100644
--- a/ext/dba/dba_inifile.c
+++ b/ext/dba/dba_inifile.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_inifile.c 309341 2011-03-17 11:43:05Z felipe $ */
+/* $Id: dba_inifile.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_ndbm.c b/ext/dba/dba_ndbm.c
index 771af5eb9..56bd51769 100644
--- a/ext/dba/dba_ndbm.c
+++ b/ext/dba/dba_ndbm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_ndbm.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_ndbm.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/dba_qdbm.c b/ext/dba/dba_qdbm.c
index 21bd70717..a24361e60 100755
--- a/ext/dba/dba_qdbm.c
+++ b/ext/dba/dba_qdbm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_qdbm.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dba_qdbm.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dba/php_dba.h b/ext/dba/php_dba.h
index e2a566992..2cbeea390 100644
--- a/ext/dba/php_dba.h
+++ b/ext/dba/php_dba.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dba.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_dba.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_DBA_H
#define PHP_DBA_H
diff --git a/ext/dom/attr.c b/ext/dom/attr.c
index ddec8f967..8ff544c24 100644
--- a/ext/dom/attr.c
+++ b/ext/dom/attr.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: attr.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: attr.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/cdatasection.c b/ext/dom/cdatasection.c
index c21fa3396..18f137d82 100644
--- a/ext/dom/cdatasection.c
+++ b/ext/dom/cdatasection.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cdatasection.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: cdatasection.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c
index 6a6109462..eb4092541 100644
--- a/ext/dom/characterdata.c
+++ b/ext/dom/characterdata.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: characterdata.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: characterdata.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/comment.c b/ext/dom/comment.c
index ae874e8cc..5146fef52 100644
--- a/ext/dom/comment.c
+++ b/ext/dom/comment.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: comment.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: comment.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/document.c b/ext/dom/document.c
index b06b38910..4d8a4dfdd 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: document.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: document.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/documentfragment.c b/ext/dom/documentfragment.c
index 42dde4108..5ec2d7672 100644
--- a/ext/dom/documentfragment.c
+++ b/ext/dom/documentfragment.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: documentfragment.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: documentfragment.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/documenttype.c b/ext/dom/documenttype.c
index 0fa76efec..8f583e547 100644
--- a/ext/dom/documenttype.c
+++ b/ext/dom/documenttype.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: documenttype.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: documenttype.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/dom_ce.h b/ext/dom/dom_ce.h
index ea0d4966b..a343d5a96 100644
--- a/ext/dom/dom_ce.h
+++ b/ext/dom/dom_ce.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_ce.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dom_ce.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef DOM_CE_H
#define DOM_CE_H
diff --git a/ext/dom/dom_fe.h b/ext/dom/dom_fe.h
index 6ef27b611..8e831be6d 100644
--- a/ext/dom/dom_fe.h
+++ b/ext/dom/dom_fe.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_fe.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dom_fe.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef DOM_FE_H
#define DOM_FE_H
diff --git a/ext/dom/dom_iterators.c b/ext/dom/dom_iterators.c
index b7b7fcd0a..971d1928b 100644
--- a/ext/dom/dom_iterators.c
+++ b/ext/dom/dom_iterators.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_iterators.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dom_iterators.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/dom_properties.h b/ext/dom/dom_properties.h
index ca2fae021..2f642a589 100644
--- a/ext/dom/dom_properties.h
+++ b/ext/dom/dom_properties.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_properties.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dom_properties.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef DOM_PROPERTIES_H
#define DOM_PROPERTIES_H
diff --git a/ext/dom/domconfiguration.c b/ext/dom/domconfiguration.c
index de3de6adc..37be948b1 100644
--- a/ext/dom/domconfiguration.c
+++ b/ext/dom/domconfiguration.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domconfiguration.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domconfiguration.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domerror.c b/ext/dom/domerror.c
index 481cce916..f4ac4cfe1 100644
--- a/ext/dom/domerror.c
+++ b/ext/dom/domerror.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domerror.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domerror.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domerrorhandler.c b/ext/dom/domerrorhandler.c
index 73a8ef50d..c22405b02 100644
--- a/ext/dom/domerrorhandler.c
+++ b/ext/dom/domerrorhandler.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domerrorhandler.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domerrorhandler.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domexception.c b/ext/dom/domexception.c
index 18ac78b39..0f9b367ab 100644
--- a/ext/dom/domexception.c
+++ b/ext/dom/domexception.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domexception.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domexception.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domimplementation.c b/ext/dom/domimplementation.c
index 28bd39c21..0f99d5177 100644
--- a/ext/dom/domimplementation.c
+++ b/ext/dom/domimplementation.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domimplementation.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domimplementation.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domimplementationlist.c b/ext/dom/domimplementationlist.c
index e1cc1f22a..2f91e68a2 100644
--- a/ext/dom/domimplementationlist.c
+++ b/ext/dom/domimplementationlist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domimplementationlist.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: domimplementationlist.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domimplementationsource.c b/ext/dom/domimplementationsource.c
index b23185c37..af5c3a858 100644
--- a/ext/dom/domimplementationsource.c
+++ b/ext/dom/domimplementationsource.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domimplementationsource.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domimplementationsource.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domlocator.c b/ext/dom/domlocator.c
index b240c41af..7cb64bf3d 100644
--- a/ext/dom/domlocator.c
+++ b/ext/dom/domlocator.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domlocator.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domlocator.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/domstringlist.c b/ext/dom/domstringlist.c
index b2639ab6c..dd815e9b9 100644
--- a/ext/dom/domstringlist.c
+++ b/ext/dom/domstringlist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domstringlist.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: domstringlist.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/element.c b/ext/dom/element.c
index 512e37a54..57a174f97 100644
--- a/ext/dom/element.c
+++ b/ext/dom/element.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: element.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: element.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/entity.c b/ext/dom/entity.c
index 48abaeb9c..c4888e1cc 100644
--- a/ext/dom/entity.c
+++ b/ext/dom/entity.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: entity.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: entity.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/entityreference.c b/ext/dom/entityreference.c
index 2e8c4b538..8e3799e2b 100644
--- a/ext/dom/entityreference.c
+++ b/ext/dom/entityreference.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: entityreference.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: entityreference.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/namednodemap.c b/ext/dom/namednodemap.c
index 30dff986c..6eda92209 100644
--- a/ext/dom/namednodemap.c
+++ b/ext/dom/namednodemap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: namednodemap.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: namednodemap.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/namelist.c b/ext/dom/namelist.c
index b731ae99a..73f5332f7 100644
--- a/ext/dom/namelist.c
+++ b/ext/dom/namelist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: namelist.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: namelist.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/node.c b/ext/dom/node.c
index a2c9c280a..b7a1ba7c9 100644
--- a/ext/dom/node.c
+++ b/ext/dom/node.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: node.c 314493 2011-08-08 12:29:32Z iliaa $ */
+/* $Id: node.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c
index a31b32aa5..1667e6a4d 100644
--- a/ext/dom/nodelist.c
+++ b/ext/dom/nodelist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: nodelist.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: nodelist.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/notation.c b/ext/dom/notation.c
index 6951cc443..18c56e27a 100644
--- a/ext/dom/notation.c
+++ b/ext/dom/notation.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: notation.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: notation.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 4e921de0e..7f6c68716 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.c 314493 2011-08-08 12:29:32Z iliaa $ */
+/* $Id: php_dom.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/php_dom.h b/ext/dom/php_dom.h
index b9b295e4b..b68d1f5d8 100644
--- a/ext/dom/php_dom.h
+++ b/ext/dom/php_dom.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_dom.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_DOM_H
#define PHP_DOM_H
diff --git a/ext/dom/processinginstruction.c b/ext/dom/processinginstruction.c
index 955f59fc3..199674687 100644
--- a/ext/dom/processinginstruction.c
+++ b/ext/dom/processinginstruction.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: processinginstruction.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: processinginstruction.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/string_extend.c b/ext/dom/string_extend.c
index 9b8de142c..ee7f79717 100644
--- a/ext/dom/string_extend.c
+++ b/ext/dom/string_extend.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string_extend.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: string_extend.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt b/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt
index 85749210b..7c5f8901e 100644
--- a/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt
+++ b/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt
@@ -23,3 +23,9 @@ var_dump($result);
?>
--EXPECTF--
+Warning: DOMDocument::relaxNGValidate(): I/O warning : failed to load external entity "%s/foo.rng" in %s on line %d
+
+Warning: DOMDocument::relaxNGValidate(): xmlRelaxNGParse: could not load %s/foo.rng in %s on line %d
+
+Warning: DOMDocument::relaxNGValidate(): Invalid RelaxNG in %s on line %d
+bool(false)
diff --git a/ext/dom/tests/dom_xinclude.phpt b/ext/dom/tests/dom_xinclude.phpt
index 686a9e81a..5d8906e31 100644
--- a/ext/dom/tests/dom_xinclude.phpt
+++ b/ext/dom/tests/dom_xinclude.phpt
@@ -10,10 +10,14 @@ in_array('compress.zlib', stream_get_wrappers()) or die('skip compress.zlib wrap
$dom = new domdocument;
$data = file_get_contents(dirname(__FILE__)."/xinclude.xml");
-$data = str_replace('compress.zlib://ext/dom/tests/','compress.zlib://'.dirname(__FILE__).'/', $data);
+$reldir = str_replace(getcwd(),".",dirname(__FILE__));
+if (DIRECTORY_SEPARATOR == '\\') {
+ $reldir = str_replace('\\',"/", $reldir);
+}
+$data = str_replace('compress.zlib://ext/dom/tests/','compress.zlib://'.$reldir."/", $data);
-$dom->loadXML($data);
+$dom->loadXML($data);
$dom->xinclude();
print $dom->saveXML()."\n";
foreach ($dom->documentElement->childNodes as $node) {
diff --git a/ext/dom/text.c b/ext/dom/text.c
index 4e761dc36..18383b42c 100644
--- a/ext/dom/text.c
+++ b/ext/dom/text.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: text.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: text.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/typeinfo.c b/ext/dom/typeinfo.c
index 839e7ecd5..847cff4fd 100644
--- a/ext/dom/typeinfo.c
+++ b/ext/dom/typeinfo.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: typeinfo.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: typeinfo.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/userdatahandler.c b/ext/dom/userdatahandler.c
index 0f1b82f4d..214ec1beb 100644
--- a/ext/dom/userdatahandler.c
+++ b/ext/dom/userdatahandler.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: userdatahandler.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: userdatahandler.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h
index 8f93ed7ec..818aed14a 100644
--- a/ext/dom/xml_common.h
+++ b/ext/dom/xml_common.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xml_common.h 314493 2011-08-08 12:29:32Z iliaa $ */
+/* $Id: xml_common.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_XML_COMMON_H
#define PHP_XML_COMMON_H
diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c
index 6b650577b..6a784d121 100644
--- a/ext/dom/xpath.c
+++ b/ext/dom/xpath.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xpath.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: xpath.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c
index 7b2fb7db6..1333bafe6 100755
--- a/ext/enchant/enchant.c
+++ b/ext/enchant/enchant.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
| Ilia Alshanetsky <ilia@prohost.org> |
+----------------------------------------------------------------------+
- $Id: enchant.c 313665 2011-07-25 11:42:53Z felipe $
+ $Id: enchant.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
@@ -326,7 +326,7 @@ PHP_MINFO_FUNCTION(enchant)
#elif defined(HAVE_ENCHANT_BROKER_SET_PARAM)
php_info_print_table_row(2, "Libenchant Version", "1.5.0 or later");
#endif
- php_info_print_table_row(2, "Revision", "$Revision: 313665 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
php_info_print_table_end();
php_info_print_table_start();
diff --git a/ext/enchant/php_enchant.h b/ext/enchant/php_enchant.h
index 162862664..8f7ba58c3 100644
--- a/ext/enchant/php_enchant.h
+++ b/ext/enchant/php_enchant.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 4 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -15,7 +15,7 @@
| Author: Pierre-Alain Joye <paj@pearfr.org> |
+----------------------------------------------------------------------+
- $Id: php_enchant.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_enchant.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_ENCHANT_H
diff --git a/ext/ereg/ereg.c b/ext/ereg/ereg.c
index 12f85dca9..a4fa7bf0f 100644
--- a/ext/ereg/ereg.c
+++ b/ext/ereg/ereg.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Jaakko Hyvätti <jaakko@hyvatti.iki.fi> |
+----------------------------------------------------------------------+
*/
-/* $Id: ereg.c 314398 2011-08-07 05:08:08Z rasmus $ */
+/* $Id: ereg.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdio.h>
#include <ctype.h>
@@ -475,6 +475,7 @@ PHPAPI char *php_ereg_replace(const char *pattern, const char *replace, const ch
buf_len = 1 + buf_len + 2 * new_l;
nbuf = emalloc(buf_len);
strncpy(nbuf, buf, buf_len-1);
+ nbuf[buf_len - 1] = '\0';
efree(buf);
buf = nbuf;
}
@@ -486,7 +487,7 @@ PHPAPI char *php_ereg_replace(const char *pattern, const char *replace, const ch
walkbuf = &buf[tmp + subs[0].rm_so];
walk = replace;
while (*walk) {
- if ('\\' == *walk && isdigit(walk[1]) && walk[1] - '0' <= (int)re.re_nsub) {
+ if ('\\' == *walk && isdigit((unsigned char)walk[1]) && ((unsigned char)walk[1]) - '0' <= (int)re.re_nsub) {
if (subs[walk[1] - '0'].rm_so > -1 && subs[walk[1] - '0'].rm_eo > -1
/* this next case shouldn't happen. it does. */
&& subs[walk[1] - '0'].rm_so <= subs[walk[1] - '0'].rm_eo) {
diff --git a/ext/ereg/php_ereg.h b/ext/ereg/php_ereg.h
index fd3974904..7cba2ce51 100644
--- a/ext/ereg/php_ereg.h
+++ b/ext/ereg/php_ereg.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
*/
-/* $Id: php_ereg.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ereg.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef EREG_H
#define EREG_H
diff --git a/ext/ereg/php_regex.h b/ext/ereg/php_regex.h
index 7172589e8..6da5214e7 100644
--- a/ext/ereg/php_regex.h
+++ b/ext/ereg/php_regex.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_regex.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_regex.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_REGEX_H
#define PHP_REGEX_H
diff --git a/ext/ereg/regex/regerror.c b/ext/ereg/regex/regerror.c
index 1c66d4114..7bf741967 100644
--- a/ext/ereg/regex/regerror.c
+++ b/ext/ereg/regex/regerror.c
@@ -82,10 +82,12 @@ size_t errbuf_size)
break;
if (errcode&REG_ITOA) {
- if (r->code >= 0)
- (void) strncpy(convbuf, r->name, 50);
- else
+ if (r->code >= 0) {
+ (void) strncpy(convbuf, r->name, sizeof(convbuf) - 1);
+ convbuf[sizeof(convbuf) - 1] = '\0';
+ } else {
snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
+ }
assert(strlen(convbuf) < sizeof(convbuf));
s = convbuf;
} else
diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index e2cf9f78c..f767b25ea 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: exif.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: exif.c 321634 2012-01-01 13:15:04Z felipe $ */
/* ToDos
*
@@ -148,7 +148,7 @@ const zend_function_entry exif_functions[] = {
};
/* }}} */
-#define EXIF_VERSION "1.4 $Id: exif.c 314376 2011-08-06 14:47:44Z felipe $"
+#define EXIF_VERSION "1.4 $Id: exif.c 321634 2012-01-01 13:15:04Z felipe $"
/* {{{ PHP_MINFO_FUNCTION
*/
@@ -2874,11 +2874,11 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha
offset_val = php_ifd_get32u(dir_entry+8, ImageInfo->motorola_intel);
/* If its bigger than 4 bytes, the dir entry contains an offset. */
value_ptr = offset_base+offset_val;
- if (offset_val+byte_count > IFDlength || value_ptr < dir_entry) {
+ if (byte_count > IFDlength || offset_val > IFDlength-byte_count || value_ptr < dir_entry) {
/* It is important to check for IMAGE_FILETYPE_TIFF
* JPEG does not use absolute pointers instead its pointers are
* relative to the start of the TIFF header in APP1 section. */
- if (offset_val+byte_count>ImageInfo->FileSize || (ImageInfo->FileType!=IMAGE_FILETYPE_TIFF_II && ImageInfo->FileType!=IMAGE_FILETYPE_TIFF_MM && ImageInfo->FileType!=IMAGE_FILETYPE_JPEG)) {
+ if (byte_count > ImageInfo->FileSize || offset_val>ImageInfo->FileSize-byte_count || (ImageInfo->FileType!=IMAGE_FILETYPE_TIFF_II && ImageInfo->FileType!=IMAGE_FILETYPE_TIFF_MM && ImageInfo->FileType!=IMAGE_FILETYPE_JPEG)) {
if (value_ptr < dir_entry) {
/* we can read this if offset_val > 0 */
/* some files have their values in other parts of the file */
diff --git a/ext/exif/php_exif.h b/ext/exif/php_exif.h
index ab351bd79..58f934a51 100644
--- a/ext/exif/php_exif.h
+++ b/ext/exif/php_exif.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_exif.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_exif.h 321634 2012-01-01 13:15:04Z felipe $ */
#if HAVE_EXIF
extern zend_module_entry exif_module_entry;
diff --git a/ext/exif/tests/bug60150.jpg b/ext/exif/tests/bug60150.jpg
new file mode 100644
index 000000000..2d7d1659c
--- /dev/null
+++ b/ext/exif/tests/bug60150.jpg
Binary files differ
diff --git a/ext/exif/tests/bug60150.phpt b/ext/exif/tests/bug60150.phpt
new file mode 100755
index 000000000..63cf0a9da
--- /dev/null
+++ b/ext/exif/tests/bug60150.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #60150 (Integer overflow during the parsing of invalid exif header)
+--SKIPIF--
+<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
+--INI--
+output_handler=
+zlib.output_compression=0
+--FILE--
+<?php
+$infile = dirname(__FILE__).'/bug60150.jpg';
+var_dump(exif_read_data($infile));
+?>
+===DONE===
+--EXPECTF--
+Warning: exif_read_data(bug60150.jpg): Process tag(x9003=DateTimeOri): Illegal pointer offset(x%x + x%x = x%x > x%x) in %s on line %d
+
+Warning: exif_read_data(bug60150.jpg): Error reading from file: got=x%x(=%d) != itemlen-%d=x%x(=%d) in %s on line %d
+
+Warning: exif_read_data(bug60150.jpg): Invalid JPEG file in %s on line %d
+bool(false)
+===DONE===
diff --git a/ext/fileinfo/fileinfo.c b/ext/fileinfo/fileinfo.c
index 95eca4c0b..2b3f5f774 100644
--- a/ext/fileinfo/fileinfo.c
+++ b/ext/fileinfo/fileinfo.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fileinfo.c 314584 2011-08-09 05:11:19Z laruence $ */
+/* $Id: fileinfo.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -290,6 +290,16 @@ PHP_FUNCTION(finfo_open)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ls", &options, &file, &file_len) == FAILURE) {
RETURN_FALSE;
}
+
+ if (object) {
+ struct finfo_object *finfo_obj = (struct finfo_object*)zend_object_store_get_object(object TSRMLS_CC);
+
+ if (finfo_obj->ptr) {
+ magic_close(finfo_obj->ptr->magic);
+ efree(finfo_obj->ptr);
+ finfo_obj->ptr = NULL;
+ }
+ }
if (file_len == 0) {
file = NULL;
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index a834c0039..3b99ce5dc 100644
--- a/ext/fileinfo/libmagic.patch
+++ b/ext/fileinfo/libmagic.patch
@@ -1,6 +1,6 @@
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
---- libmagic.orig/apprentice.c 2009-03-18 15:19:23.000000000 +0000
-+++ libmagic/apprentice.c 2010-01-28 11:02:24.000000000 +0000
+--- libmagic.orig/apprentice.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/apprentice.c 2011-09-15 23:29:29.000000000 +0800
@@ -29,6 +29,8 @@
* apprentice - make one pass through /etc/magic, learning its secrets.
*/
@@ -10,12 +10,20 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
#include "file.h"
#ifndef lint
-@@ -38,17 +40,24 @@
+@@ -38,17 +40,32 @@
#include "magic.h"
#include "patchlevel.h"
#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
+
++#if defined(__hpux) && !defined(HAVE_STRTOULL)
++#if SIZEOF_LONG == 8
++# define strtoull strtoul
++#else
++# define strtoull __strtoull
++#endif
++#endif
++
+#ifdef PHP_WIN32
+#include "win32/unistd.h"
+#if _MSC_VER <= 1300
@@ -39,7 +47,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
#define EATAB {while (isascii((unsigned char) *l) && \
isspace((unsigned char) *l)) ++l;}
-@@ -116,12 +125,10 @@
+@@ -116,12 +133,10 @@
private int parse_strength(struct magic_set *, struct magic_entry *, const char *);
private int parse_apple(struct magic_set *, struct magic_entry *, const char *);
@@ -52,7 +60,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
private struct {
const char *name;
size_t len;
-@@ -135,38 +142,7 @@
+@@ -135,38 +150,7 @@
{ NULL, 0, NULL }
};
@@ -92,7 +100,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
static const struct type_tbl_s {
const char name[16];
-@@ -222,6 +198,10 @@
+@@ -222,6 +206,10 @@
# undef XX_NULL
};
@@ -103,7 +111,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
private int
get_type(const char *l, const char **t)
{
-@@ -279,15 +259,17 @@
+@@ -279,15 +267,17 @@
if (rv != 0)
return -1;
rv = apprentice_compile(ms, &magic, &nmagic, fn);
@@ -126,7 +134,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
if (rv != 0)
return -1;
}
-@@ -299,11 +281,7 @@
+@@ -299,11 +289,7 @@
return -1;
}
@@ -139,7 +147,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
ml->magic = magic;
ml->nmagic = nmagic;
-@@ -315,7 +293,6 @@
+@@ -315,7 +301,6 @@
mlist->prev = ml;
return 0;
@@ -147,7 +155,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
protected void
-@@ -324,22 +301,18 @@
+@@ -324,22 +309,18 @@
if (p == NULL)
return;
switch (type) {
@@ -176,7 +184,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
default:
abort();
}
-@@ -357,20 +330,17 @@
+@@ -357,20 +338,17 @@
if (fn == NULL)
fn = getenv("MAGIC");
@@ -205,7 +213,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
mlist->next = mlist->prev = mlist;
while (fn) {
-@@ -384,13 +354,13 @@
+@@ -384,13 +362,13 @@
fn = p;
}
if (errs == -1) {
@@ -222,7 +230,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return mlist;
}
-@@ -523,6 +493,7 @@
+@@ -523,6 +501,7 @@
abort();
}
@@ -230,7 +238,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
/*
* Magic entries with no description get a bonus because they depend
* on subsequent magic entries to print something.
-@@ -538,8 +509,8 @@
+@@ -538,8 +517,8 @@
private int
apprentice_sort(const void *a, const void *b)
{
@@ -241,7 +249,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
size_t sa = apprentice_magic_strength(ma->mp);
size_t sb = apprentice_magic_strength(mb->mp);
if (sa == sb)
-@@ -617,34 +588,51 @@
+@@ -617,34 +596,51 @@
load_1(struct magic_set *ms, int action, const char *fn, int *errs,
struct magic_entry **marray, uint32_t *marraycount)
{
@@ -303,7 +311,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
memcmp(bang[i].name, line + 2,
bang[i].len) == 0)
break;
-@@ -670,12 +658,11 @@
+@@ -670,12 +666,11 @@
}
continue;
}
@@ -318,7 +326,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
}
}
-@@ -690,7 +677,6 @@
+@@ -690,7 +685,6 @@
int errs = 0;
struct magic_entry *marray;
uint32_t marraycount, i, mentrycount = 0, starttest;
@@ -326,7 +334,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
char subfn[MAXPATHLEN];
struct stat st;
DIR *dir;
-@@ -698,12 +684,8 @@
+@@ -698,12 +692,8 @@
ms->flags |= MAGIC_CHECK; /* Enable checks for parsed files */
@@ -341,7 +349,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
marraycount = 0;
/* print silly verbose header for USG compat. */
-@@ -713,14 +695,14 @@
+@@ -713,14 +703,14 @@
/* load directory or file */
/* FIXME: Read file names and sort them to prevent
non-determinism. See Debian bug #488562. */
@@ -358,7 +366,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
load_1(ms, action, subfn, &errs,
&marray, &marraycount);
}
-@@ -790,12 +772,7 @@
+@@ -790,12 +780,7 @@
for (i = 0; i < marraycount; i++)
mentrycount += marray[i].cont_count;
@@ -372,7 +380,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
mentrycount = 0;
for (i = 0; i < marraycount; i++) {
-@@ -805,8 +782,8 @@
+@@ -805,8 +790,8 @@
}
out:
for (i = 0; i < marraycount; i++)
@@ -383,7 +391,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
if (errs) {
*magicp = NULL;
*nmagicp = 0;
-@@ -1081,11 +1058,7 @@
+@@ -1081,11 +1066,7 @@
if (me->cont_count == me->max_count) {
struct magic *nm;
size_t cnt = me->max_count + ALLOC_CHUNK;
@@ -396,7 +404,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
me->mp = m = nm;
me->max_count = cnt;
}
-@@ -1097,23 +1070,13 @@
+@@ -1097,23 +1078,13 @@
struct magic_entry *mp;
maxmagic += ALLOC_INCR;
@@ -423,7 +431,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
me->mp = m;
me->max_count = ALLOC_CHUNK;
} else
-@@ -1264,7 +1227,7 @@
+@@ -1264,7 +1235,7 @@
m->mask_op = 0;
if (*l == '~') {
@@ -432,7 +440,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->mask_op |= FILE_OPINVERSE;
else if (ms->flags & MAGIC_CHECK)
file_magwarn(ms, "'~' invalid for string types");
-@@ -1274,7 +1237,7 @@
+@@ -1274,7 +1245,7 @@
m->str_flags = 0;
m->num_mask = 0;
if ((op = get_op(*l)) != -1) {
@@ -441,7 +449,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
uint64_t val;
++l;
m->mask_op |= op;
-@@ -1423,11 +1386,6 @@
+@@ -1423,11 +1394,6 @@
if (check_format(ms, m) == -1)
return -1;
}
@@ -453,7 +461,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->mimetype[0] = '\0'; /* initialise MIME type to none */
if (m->cont_level == 0)
++(*nmentryp); /* make room for next */
-@@ -2053,56 +2011,68 @@
+@@ -2053,56 +2019,68 @@
/*
* handle a compiled file.
@@ -545,7 +553,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
ptr = (uint32_t *)(void *)*magicp;
if (*ptr != MAGICNO) {
if (swap4(*ptr) != MAGICNO) {
-@@ -2110,42 +2080,65 @@
+@@ -2110,42 +2088,65 @@
goto error1;
}
needsbyteswap = 1;
@@ -626,7 +634,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return -1;
}
-@@ -2159,41 +2152,50 @@
+@@ -2159,41 +2160,50 @@
apprentice_compile(struct magic_set *ms, struct magic **magicp,
uint32_t *nmagicp, const char *fn)
{
@@ -688,7 +696,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
return rv;
}
-@@ -2206,6 +2208,7 @@
+@@ -2206,6 +2216,7 @@
{
const char *p, *q;
char *buf;
@@ -696,7 +704,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
if (strip) {
if ((p = strrchr(fn, '/')) != NULL)
-@@ -2227,14 +2230,14 @@
+@@ -2227,14 +2238,14 @@
q++;
/* Compatibility with old code that looked in .mime */
if (ms->flags & MAGIC_MIME) {
@@ -715,7 +723,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
/* Compatibility with old code that looked in .mime */
if (strstr(p, ".mime") != NULL)
-@@ -2324,7 +2327,7 @@
+@@ -2324,7 +2335,7 @@
m->offset = swap4((uint32_t)m->offset);
m->in_offset = swap4((uint32_t)m->in_offset);
m->lineno = swap4((uint32_t)m->lineno);
@@ -725,8 +733,8 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->str_flags = swap4(m->str_flags);
}
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
---- libmagic.orig/ascmagic.c 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/ascmagic.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/ascmagic.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/ascmagic.c 2011-09-15 23:28:26.000000000 +0800
@@ -144,10 +144,8 @@
/* malloc size is a conservative overestimate; could be
improved, or at least realloced after conversion. */
@@ -750,8 +758,8 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
return rv;
}
diff -u libmagic.orig/cdf.c libmagic/cdf.c
---- libmagic.orig/cdf.c 2009-05-06 15:29:47.000000000 +0100
-+++ libmagic/cdf.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/cdf.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/cdf.c 2011-09-15 23:29:29.000000000 +0800
@@ -40,7 +40,17 @@
#include <err.h>
#endif
@@ -815,8 +823,8 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
break;
case CDF_CLIPBOARD:
diff -u libmagic.orig/cdf.h libmagic/cdf.h
---- libmagic.orig/cdf.h 2009-04-29 20:03:02.000000000 +0100
-+++ libmagic/cdf.h 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/cdf.h 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/cdf.h 2011-09-15 23:29:29.000000000 +0800
@@ -42,7 +42,11 @@
typedef struct {
@@ -844,8 +852,8 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
void cdf_swap_header(cdf_header_t *);
void cdf_unpack_header(cdf_header_t *, char *);
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
---- libmagic.orig/cdf_time.c 2009-03-10 11:44:29.000000000 +0000
-+++ libmagic/cdf_time.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/cdf_time.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/cdf_time.c 2011-10-19 22:51:40.000000000 +0800
@@ -96,7 +96,7 @@
}
@@ -866,6 +874,15 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
t /= CDF_TIME_PREC;
tm.tm_sec = t % 60;
+@@ -117,7 +117,7 @@
+ tm.tm_hour = t % 24;
+ t /= 24;
+
+- // XXX: Approx
++ /* XXX: Approx */
+ tm.tm_year = CDF_BASE_YEAR + (t / 365);
+
+ rdays = cdf_getdays(tm.tm_year);
@@ -143,7 +143,7 @@
}
@@ -894,8 +911,8 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
static const char *ref = "Sat Apr 23 01:30:00 1977";
char *p, *q;
diff -u libmagic.orig/compress.c libmagic/compress.c
---- libmagic.orig/compress.c 2009-03-23 14:21:51.000000000 +0000
-+++ libmagic/compress.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/compress.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/compress.c 2011-09-15 23:28:26.000000000 +0800
@@ -32,6 +32,7 @@
* uncompress(method, old, n, newch) - uncompress old into new,
* using method, return sizeof new
@@ -1040,8 +1057,8 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
}
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
diff -u libmagic.orig/file.h libmagic/file.h
---- libmagic.orig/file.h 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/file.h 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/file.h 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/file.h 2011-09-15 23:28:26.000000000 +0800
@@ -33,9 +33,7 @@
#ifndef __file_h__
#define __file_h__
@@ -1195,8 +1212,8 @@ diff -u libmagic.orig/file.h libmagic/file.h
#define QUICK
#endif
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
---- libmagic.orig/fsmagic.c 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/fsmagic.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/fsmagic.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/fsmagic.c 2011-09-15 23:28:26.000000000 +0800
@@ -60,29 +60,19 @@
#endif
#undef HAVE_MAJOR
@@ -1555,8 +1572,8 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
/*
diff -u libmagic.orig/funcs.c libmagic/funcs.c
---- libmagic.orig/funcs.c 2009-04-07 12:07:00.000000000 +0100
-+++ libmagic/funcs.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/funcs.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/funcs.c 2011-09-15 23:28:26.000000000 +0800
@@ -41,52 +41,36 @@
#if defined(HAVE_WCTYPE_H)
#include <wctype.h>
@@ -1785,8 +1802,8 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
ms->c.li[level].got_match = 0;
#ifdef ENABLE_CONDITIONALS
diff -u libmagic.orig/magic.c libmagic/magic.c
---- libmagic.orig/magic.c 2009-03-20 21:25:41.000000000 +0000
-+++ libmagic/magic.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/magic.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/magic.c 2011-09-15 23:29:29.000000000 +0800
@@ -34,14 +34,19 @@
#include "magic.h"
@@ -2130,8 +2147,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
public const char *
magic_error(struct magic_set *ms)
diff -u libmagic.orig/magic.h libmagic/magic.h
---- libmagic.orig/magic.h 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/magic.h 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/magic.h 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/magic.h 2011-09-15 23:28:26.000000000 +0800
@@ -70,6 +70,7 @@
void magic_close(magic_t);
@@ -2149,8 +2166,8 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
#ifdef __cplusplus
diff -u libmagic.orig/patchlevel.h libmagic/patchlevel.h
---- libmagic.orig/patchlevel.h 2009-05-06 21:32:48.000000000 +0100
-+++ libmagic/patchlevel.h 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/patchlevel.h 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/patchlevel.h 2011-09-15 23:28:26.000000000 +0800
@@ -3,23 +3,23 @@
/*
@@ -2188,18 +2205,26 @@ diff -u libmagic.orig/patchlevel.h libmagic/patchlevel.h
* Revision 1.69 2008/07/02 15:27:05 christos
* welcome to 4.25
diff -u libmagic.orig/print.c libmagic/print.c
---- libmagic.orig/print.c 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/print.c 2009-12-23 19:39:50.000000000 +0000
-@@ -29,6 +29,8 @@
+--- libmagic.orig/print.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/print.c 2011-09-15 23:29:29.000000000 +0800
+@@ -28,6 +28,8 @@
+ /*
* print.c - debugging printout routines
*/
-
++#define _GNU_SOURCE
+#include "php.h"
-+
+
#include "file.h"
- #ifndef lint
-@@ -45,157 +47,21 @@
+@@ -35,6 +37,7 @@
+ FILE_RCSID("@(#)$File: print.c,v 1.66 2009/02/03 20:27:51 christos Exp $")
+ #endif /* lint */
+
++#include <stdio.h>
+ #include <string.h>
+ #include <stdarg.h>
+ #include <stdlib.h>
+@@ -45,157 +48,21 @@
#define SZOF(a) (sizeof(a) / sizeof(a[0]))
@@ -2365,8 +2390,8 @@ diff -u libmagic.orig/print.c libmagic/print.c
protected const char *
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
---- libmagic.orig/readcdf.c 2009-05-06 21:48:22.000000000 +0100
-+++ libmagic/readcdf.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/readcdf.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/readcdf.c 2011-09-15 23:29:29.000000000 +0800
@@ -30,7 +30,11 @@
#endif
@@ -2413,8 +2438,8 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
if ((ec = strchr(c, '\n')) != NULL)
*ec = '\0';
diff -u libmagic.orig/readelf.c libmagic/readelf.c
---- libmagic.orig/readelf.c 2009-03-17 21:52:35.000000000 +0000
-+++ libmagic/readelf.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/readelf.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/readelf.c 2011-09-15 23:28:26.000000000 +0800
@@ -49,7 +49,7 @@
off_t, int *, int);
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t, int *,
@@ -2480,8 +2505,8 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c
case SHT_SUNW_cap:
{
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
---- libmagic.orig/softmagic.c 2009-03-27 22:42:49.000000000 +0000
-+++ libmagic/softmagic.c 2009-12-23 19:39:50.000000000 +0000
+--- libmagic.orig/softmagic.c 2011-09-15 23:28:13.000000000 +0800
++++ libmagic/softmagic.c 2011-09-15 23:29:29.000000000 +0800
@@ -41,6 +41,11 @@
#include <stdlib.h>
#include <time.h>
@@ -2662,7 +2687,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
}
-@@ -1672,6 +1645,66 @@
+@@ -1672,6 +1645,65 @@
return file_strncmp(a, b, len, flags);
}
@@ -2673,7 +2698,6 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+ char *t;
+
+ t = (char *) safe_emalloc(Z_STRLEN_P(pattern), 2, 5);
-+ memset(t, '\0', sizeof(t));
+
+ t[j++] = '~';
+
@@ -2729,7 +2753,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
private int
magiccheck(struct magic_set *ms, struct magic *m)
{
-@@ -1828,67 +1861,162 @@
+@@ -1828,67 +1860,162 @@
break;
}
case FILE_REGEX: {
@@ -2773,7 +2797,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+
+ convert_libmagic_pattern(pattern, options);
+
-+#if PHP_API_VERSION < 20100412
++#if (PHP_MAJOR_VERSION < 6)
+ if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
#else
- pmatch[0].rm_so = 0;
@@ -2800,7 +2824,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+ haystack = estrndup(ms->search.s, ms->search.s_len);
+
+ /* match v = 0, no match v = 1 */
-+#if PHP_API_VERSION < 20100412
++#if (PHP_MAJOR_VERSION < 6)
+ php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
+#else
+ php_pcre_match_impl(pce, IS_STRING, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
@@ -2944,7 +2968,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
default:
file_magerror(ms, "invalid type %d in magiccheck()", m->type);
return -1;
-@@ -1900,7 +2028,7 @@
+@@ -1900,7 +2027,7 @@
case 'x':
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "%llu == *any* = 1\n",
@@ -2953,7 +2977,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
matched = 1;
break;
-@@ -1908,7 +2036,7 @@
+@@ -1908,7 +2035,7 @@
matched = v != l;
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "%llu != %llu = %d\n",
@@ -2962,7 +2986,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
matched);
break;
-@@ -1916,7 +2044,7 @@
+@@ -1916,7 +2043,7 @@
matched = v == l;
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "%llu == %llu = %d\n",
@@ -2971,7 +2995,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
matched);
break;
-@@ -1925,14 +2053,14 @@
+@@ -1925,14 +2052,14 @@
matched = v > l;
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "%llu > %llu = %d\n",
@@ -2989,7 +3013,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
break;
-@@ -1941,14 +2069,14 @@
+@@ -1941,14 +2068,14 @@
matched = v < l;
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "%llu < %llu = %d\n",
@@ -3007,7 +3031,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
break;
-@@ -1956,16 +2084,16 @@
+@@ -1956,16 +2083,16 @@
matched = (v & l) == l;
if ((ms->flags & MAGIC_DEBUG) != 0)
(void) fprintf(stderr, "((%llx & %llx) == %llx) = %d\n",
diff --git a/ext/fileinfo/libmagic/apprentice.c b/ext/fileinfo/libmagic/apprentice.c
index eb1562e46..6844bf5d3 100644
--- a/ext/fileinfo/libmagic/apprentice.c
+++ b/ext/fileinfo/libmagic/apprentice.c
@@ -2070,11 +2070,11 @@ apprentice_map(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
}
mm = emalloc((size_t)st.sb.st_size);
+ ret = 1;
if (php_stream_read(stream, mm, (size_t)st.sb.st_size) != (size_t)st.sb.st_size) {
file_badread(ms);
goto error1;
}
- ret = 1;
php_stream_close(stream);
stream = NULL;
diff --git a/ext/fileinfo/libmagic/cdf_time.c b/ext/fileinfo/libmagic/cdf_time.c
index 36372966a..750c5986a 100644
--- a/ext/fileinfo/libmagic/cdf_time.c
+++ b/ext/fileinfo/libmagic/cdf_time.c
@@ -117,7 +117,7 @@ cdf_timestamp_to_timespec(struct timeval *ts, cdf_timestamp_t t)
tm.tm_hour = t % 24;
t /= 24;
- // XXX: Approx
+ /* XXX: Approx */
tm.tm_year = CDF_BASE_YEAR + (t / 365);
rdays = cdf_getdays(tm.tm_year);
diff --git a/ext/fileinfo/libmagic/print.c b/ext/fileinfo/libmagic/print.c
index fd10126b1..851045375 100644
--- a/ext/fileinfo/libmagic/print.c
+++ b/ext/fileinfo/libmagic/print.c
@@ -30,6 +30,7 @@
*/
#include "php.h"
+#include "main/snprintf.h"
#include "file.h"
diff --git a/ext/fileinfo/php_fileinfo.h b/ext/fileinfo/php_fileinfo.h
index fea0d53b0..532a87ce4 100644
--- a/ext/fileinfo/php_fileinfo.h
+++ b/ext/fileinfo/php_fileinfo.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_fileinfo.h 306943 2011-01-01 02:51:27Z felipe $ */
+/* $Id: php_fileinfo.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FILEINFO_H
#define PHP_FILEINFO_H
diff --git a/ext/fileinfo/tests/finfo_open_002.phpt b/ext/fileinfo/tests/finfo_open_002.phpt
new file mode 100644
index 000000000..cf4809f09
--- /dev/null
+++ b/ext/fileinfo/tests/finfo_open_002.phpt
@@ -0,0 +1,17 @@
+--TEST--
+FileInfo - Calling the constructor twice
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+
+$x = new finfo;
+$x->finfo();
+
+echo "done!\n";
+
+?>
+--EXPECTF--
+done!
+
+
diff --git a/ext/filter/callback_filter.c b/ext/filter/callback_filter.c
index 1a2ec3797..02bc73f52 100644
--- a/ext/filter/callback_filter.c
+++ b/ext/filter/callback_filter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: callback_filter.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: callback_filter.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_filter.h"
diff --git a/ext/filter/filter.c b/ext/filter/filter.c
index 5005c7607..a0e03dbb9 100644
--- a/ext/filter/filter.c
+++ b/ext/filter/filter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filter.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: filter.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -318,7 +318,7 @@ PHP_MINFO_FUNCTION(filter)
{
php_info_print_table_start();
php_info_print_table_row( 2, "Input Validation and Filtering", "enabled" );
- php_info_print_table_row( 2, "Revision", "$Revision: 313665 $");
+ php_info_print_table_row( 2, "Revision", "$Revision: 321634 $");
php_info_print_table_end();
DISPLAY_INI_ENTRIES();
diff --git a/ext/filter/filter_private.h b/ext/filter/filter_private.h
index 5f498273f..ccac304a6 100644
--- a/ext/filter/filter_private.h
+++ b/ext/filter/filter_private.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filter_private.h 307670 2011-01-23 09:46:06Z pajoye $ */
+/* $Id: filter_private.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef FILTER_PRIVATE_H
#define FILTER_PRIVATE_H
diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c
index 777a2157c..fa86f0f83 100644
--- a/ext/filter/logical_filters.c
+++ b/ext/filter/logical_filters.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: logical_filters.c 311403 2011-05-24 22:34:07Z felipe $ */
+/* $Id: logical_filters.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_filter.h"
#include "filter_private.h"
@@ -522,7 +522,7 @@ void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
* Feel free to use and redistribute this code. But please keep this copyright notice.
*
*/
- const char regexp[] = "/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD";
+ const char regexp[] = "/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD";
pcre *re = NULL;
pcre_extra *pcre_extra = NULL;
diff --git a/ext/filter/php_filter.h b/ext/filter/php_filter.h
index 011ff2757..06b00f8c3 100644
--- a/ext/filter/php_filter.h
+++ b/ext/filter/php_filter.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_filter.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_filter.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FILTER_H
#define PHP_FILTER_H
diff --git a/ext/filter/sanitizing_filters.c b/ext/filter/sanitizing_filters.c
index d67920852..3ed3bf176 100644
--- a/ext/filter/sanitizing_filters.c
+++ b/ext/filter/sanitizing_filters.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sanitizing_filters.c 309920 2011-04-03 16:30:31Z iliaa $ */
+/* $Id: sanitizing_filters.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_filter.h"
#include "filter_private.h"
diff --git a/ext/filter/tests/005.phpt b/ext/filter/tests/005.phpt
index f44379153..b3735f562 100644
--- a/ext/filter/tests/005.phpt
+++ b/ext/filter/tests/005.phpt
@@ -1,5 +1,7 @@
--TEST--
GET/REQUEST Test with fifa example data
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--INI--
filter.default=stripped
--GET--
diff --git a/ext/filter/tests/bug39763.phpt b/ext/filter/tests/bug39763.phpt
index 36ee41561..69d451bbd 100644
--- a/ext/filter/tests/bug39763.phpt
+++ b/ext/filter/tests/bug39763.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #39763 (filter applies magic_quotes twice in parse_str())
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--INI--
magic_quotes_gpc=1
filter.default=
@@ -14,4 +16,4 @@ echo $val . "\n";
--EXPECT--
Deprecated: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
\"probably a bug\"
-\"probably a bug\" \ No newline at end of file
+\"probably a bug\"
diff --git a/ext/filter/tests/bug44779.phpt b/ext/filter/tests/bug44779.phpt
index 33a4fe4ff..65a1e094e 100644
--- a/ext/filter/tests/bug44779.phpt
+++ b/ext/filter/tests/bug44779.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #44779 (filter returns NULL in CLI when it shouldn't)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
var_dump(filter_input(INPUT_SERVER, "PHP_SELF"));
diff --git a/ext/filter/tests/bug46973.phpt b/ext/filter/tests/bug46973.phpt
index 01a5118cf..eacacf5b3 100644
--- a/ext/filter/tests/bug46973.phpt
+++ b/ext/filter/tests/bug46973.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #46973 (IPv6 address filter rejects valid address)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
diff --git a/ext/filter/tests/bug47435.phpt b/ext/filter/tests/bug47435.phpt
index 42705fdc6..957a00194 100644
--- a/ext/filter/tests/bug47435.phpt
+++ b/ext/filter/tests/bug47435.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #47435 (FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE don't work with ipv6)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
var_dump(filter_var("FC00::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
diff --git a/ext/filter/tests/bug47745.phpt b/ext/filter/tests/bug47745.phpt
index a8656fd93..feb0c2b6d 100644
--- a/ext/filter/tests/bug47745.phpt
+++ b/ext/filter/tests/bug47745.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #47745 (FILTER_VALIDATE_INT doesn't allow minimum integer)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
$s = (string)(-PHP_INT_MAX-1);
diff --git a/ext/filter/tests/bug48762.phpt b/ext/filter/tests/bug48762.phpt
index 1737f0a75..195a61664 100644
--- a/ext/filter/tests/bug48762.phpt
+++ b/ext/filter/tests/bug48762.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #48762 (IPv6 address filter still rejects valid address)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
diff --git a/ext/filter/tests/bug50158.phpt b/ext/filter/tests/bug50158.phpt
index fbe2ca3af..72c31a720 100644
--- a/ext/filter/tests/bug50158.phpt
+++ b/ext/filter/tests/bug50158.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #50158 (FILTER_VALIDATE_EMAIL fails with valid addresses containing = or ?)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
diff --git a/ext/filter/tests/bug55478.phpt b/ext/filter/tests/bug55478.phpt
new file mode 100644
index 000000000..243d7078e
--- /dev/null
+++ b/ext/filter/tests/bug55478.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #55478 (FILTER_VALIDATE_EMAIL fails with internationalized domain name addresses containing >1 -)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+$email_address = "test@xn--example--7za.de"; // "example-ä.de"
+var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL));
+?>
+--EXPECT--
+string(24) "test@xn--example--7za.de"
diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c
index 37e809914..ed9bd6ad1 100644
--- a/ext/ftp/ftp.c
+++ b/ext/ftp/ftp.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ftp.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ftp.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1122,6 +1122,9 @@ ftp_putcmd(ftpbuf_t *ftp, const char *cmd, const char *args)
data = ftp->outbuf;
+ /* Clear the extra-lines buffer */
+ ftp->extra = NULL;
+
if (my_send(ftp, ftp->fd, data, size) != size) {
return 0;
}
diff --git a/ext/ftp/ftp.h b/ext/ftp/ftp.h
index 291391ef2..c9b2c8052 100644
--- a/ext/ftp/ftp.h
+++ b/ext/ftp/ftp.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ftp.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ftp.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef FTP_H
#define FTP_H
diff --git a/ext/ftp/php_ftp.c b/ext/ftp/php_ftp.c
index 3a1325f52..43495ef74 100644
--- a/ext/ftp/php_ftp.c
+++ b/ext/ftp/php_ftp.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ftp.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_ftp.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/ftp/php_ftp.h b/ext/ftp/php_ftp.h
index 65957f36a..d4caec11d 100644
--- a/ext/ftp/php_ftp.h
+++ b/ext/ftp/php_ftp.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ftp.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ftp.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef _INCLUDED_FTP_H
#define _INCLUDED_FTP_H
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index cc2ae4a16..378881d56 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: gd.c 321634 2012-01-01 13:15:04Z felipe $ */
/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
Cold Spring Harbor Labs. */
diff --git a/ext/gd/gd_ctx.c b/ext/gd/gd_ctx.c
index 47ad9f6e5..a82220111 100644
--- a/ext/gd/gd_ctx.c
+++ b/ext/gd/gd_ctx.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd_ctx.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: gd_ctx.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_gd.h"
diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c
index 0cc2e1d7d..fa75898dd 100644
--- a/ext/gd/libgd/gd.c
+++ b/ext/gd/libgd/gd.c
@@ -1894,19 +1894,14 @@ void gdImageFill(gdImagePtr im, int x, int y, int nc)
if (im->sx < 4) {
int ix = x, iy = y, c;
do {
- c = gdImageGetPixel(im, ix, iy);
- if (c != oc) {
- goto done;
- }
- gdImageSetPixel(im, ix, iy, nc);
- } while(ix++ < (im->sx -1));
- ix = x; iy = y + 1;
- do {
- c = gdImageGetPixel(im, ix, iy);
- if (c != oc) {
- goto done;
- }
- gdImageSetPixel(im, ix, iy, nc);
+ do {
+ c = gdImageGetPixel(im, ix, iy);
+ if (c != oc) {
+ goto done;
+ }
+ gdImageSetPixel(im, ix, iy, nc);
+ } while(ix++ < (im->sx -1));
+ ix = x;
} while(iy++ < (im->sy -1));
goto done;
}
diff --git a/ext/gd/php_gd.h b/ext/gd/php_gd.h
index f33c5bdcd..da4f40724 100644
--- a/ext/gd/php_gd.h
+++ b/ext/gd/php_gd.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_gd.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_gd.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_GD_H
#define PHP_GD_H
diff --git a/ext/gd/tests/bug60160.phpt b/ext/gd/tests/bug60160.phpt
new file mode 100644
index 000000000..af2df4182
--- /dev/null
+++ b/ext/gd/tests/bug60160.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60160 (imagefill does not work correctly for small images) @see bug51671
+--SKIPIF--
+<?php
+ if(!extension_loaded('gd')){ die('skip gd extension not available'); }
+?>
+--FILE--
+<?php
+$w = 3;
+$h = 50;
+$im = imagecreatetruecolor($w, $h);
+$white = imagecolorallocate($im, 255, 255, 255);
+imagefill($im, 0, 0, $white);
+
+for ($ix = 0; $ix < $w; $ix++) {
+ for ($iy = 0; $iy < $h; $iy++) {
+ if (($c = imagecolorat($im, $ix, $iy)) != $white) {
+ printf("Failed, ($ix, $iy) is %X\n", $c);
+ }
+ }
+}
+
+echo "OK\n";
+?>
+--EXPECTF--
+OK
diff --git a/ext/gd/tests/image_type_to_mime_type_variation3.phpt b/ext/gd/tests/image_type_to_mime_type_variation3.phpt
deleted file mode 100644
index 8383facb0..000000000
--- a/ext/gd/tests/image_type_to_mime_type_variation3.phpt
+++ /dev/null
@@ -1,76 +0,0 @@
---TEST--
-Test image_type_to_mime_type() function : usage variations - Pass equivalent imagetype constant integer values
---FILE--
-<?php
-/* Prototype : string image_type_to_mime_type(int imagetype)
- * Description: Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- * Source code: ext/standard/image.c
- */
-
-echo "*** Testing image_type_to_mime_type() : usage variations ***\n";
-
-//There are 17 imagetypes
-$number_of_imagetypes = 17;
-
-$iterator = 1;
-for($imagetype = 1; $imagetype<=$number_of_imagetypes; $imagetype++) {
- echo "\n-- Iteration $iterator --\n";
- var_dump( image_type_to_mime_type($imagetype) );
- $iterator++;
-}
-?>
-===DONE===
---EXPECTREGEX--
-\*\*\* Testing image_type_to_mime_type\(\) : usage variations \*\*\*
-
--- Iteration 1 --
-string\(9\) "image\/gif"
-
--- Iteration 2 --
-string\(10\) "image\/jpeg"
-
--- Iteration 3 --
-string\(9\) "image\/png"
-
--- Iteration 4 --
-string\(29\) "application\/x-shockwave-flash"
-
--- Iteration 5 --
-string\(9\) "image\/psd"
-
--- Iteration 6 --
-string\(14\) "image\/x-ms-bmp"
-
--- Iteration 7 --
-string\(10\) "image\/tiff"
-
--- Iteration 8 --
-string\(10\) "image\/tiff"
-
--- Iteration 9 --
-string\(24\) "application\/octet-stream"
-
--- Iteration 10 --
-string\(9\) "image\/jp2"
-
--- Iteration 11 --
-string\(24\) "application\/octet-stream"
-
--- Iteration 12 --
-string\(24\) "application\/octet-stream"
-
--- Iteration 13 --
-string\(2[49]\) "application\/(x-shockwave-flash|octet-stream)"
-
--- Iteration 14 --
-string\(9\) "image\/iff"
-
--- Iteration 15 --
-string\(18\) "image\/vnd.wap.wbmp"
-
--- Iteration 16 --
-string\(9\) "image\/xbm"
-
--- Iteration 17 --
-string\(24\) "image\/vnd.microsoft.icon"
-===DONE===
diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c
index d315ca46b..da61cc02e 100644
--- a/ext/gettext/gettext.c
+++ b/ext/gettext/gettext.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gettext.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: gettext.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/gettext/php_gettext.h b/ext/gettext/php_gettext.h
index 313cd1374..dd41cd25f 100644
--- a/ext/gettext/php_gettext.h
+++ b/ext/gettext/php_gettext.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_gettext.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_gettext.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_GETTEXT_H
#define PHP_GETTEXT_H
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c
index 1045d5abd..22e76d5c9 100644
--- a/ext/gmp/gmp.c
+++ b/ext/gmp/gmp.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/gmp/php_gmp.h b/ext/gmp/php_gmp.h
index b84b3b842..1e4bffe20 100644
--- a/ext/gmp/php_gmp.h
+++ b/ext/gmp/php_gmp.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/hash/hash.c b/ext/hash/hash.c
index ac1e07303..ae00e38a0 100644
--- a/ext/hash/hash.c
+++ b/ext/hash/hash.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: hash.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/hash/hash_adler32.c b/ext/hash/hash_adler32.c
index 4514eba7c..6c67484b0 100644
--- a/ext/hash/hash_adler32.c
+++ b/ext/hash/hash_adler32.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_adler32.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_adler32.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_adler32.h"
diff --git a/ext/hash/hash_crc32.c b/ext/hash/hash_crc32.c
index aa4c167ae..b9c0cd3f8 100644
--- a/ext/hash/hash_crc32.c
+++ b/ext/hash/hash_crc32.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_crc32.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_crc32.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_crc32.h"
diff --git a/ext/hash/hash_gost.c b/ext/hash/hash_gost.c
index e165275d2..54b2e0f7b 100644
--- a/ext/hash/hash_gost.c
+++ b/ext/hash/hash_gost.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_gost.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_gost.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_gost.h"
diff --git a/ext/hash/hash_haval.c b/ext/hash/hash_haval.c
index c327f811b..36e2ba4dc 100644
--- a/ext/hash/hash_haval.c
+++ b/ext/hash/hash_haval.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_haval.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_haval.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_haval.h"
diff --git a/ext/hash/hash_md.c b/ext/hash/hash_md.c
index f07b4b42b..7d3e94d60 100644
--- a/ext/hash/hash_md.c
+++ b/ext/hash/hash_md.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_md.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_md.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_md.h"
diff --git a/ext/hash/hash_ripemd.c b/ext/hash/hash_ripemd.c
index b418471d1..2e7d0cde5 100644
--- a/ext/hash/hash_ripemd.c
+++ b/ext/hash/hash_ripemd.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_ripemd.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_ripemd.c 321634 2012-01-01 13:15:04Z felipe $ */
/* Heavily borrowed from md5.c & sha1.c of PHP archival fame
Note that ripemd laughs in the face of logic and uses
diff --git a/ext/hash/hash_salsa.c b/ext/hash/hash_salsa.c
index 728f43392..076f18438 100644
--- a/ext/hash/hash_salsa.c
+++ b/ext/hash/hash_salsa.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_salsa.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_salsa.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_salsa.h"
diff --git a/ext/hash/hash_sha.c b/ext/hash/hash_sha.c
index e4ba1eb7f..13ddb82be 100644
--- a/ext/hash/hash_sha.c
+++ b/ext/hash/hash_sha.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_sha.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_sha.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_sha.h"
diff --git a/ext/hash/hash_snefru.c b/ext/hash/hash_snefru.c
index 0438605b6..0f94d9b7c 100644
--- a/ext/hash/hash_snefru.c
+++ b/ext/hash/hash_snefru.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_snefru.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_snefru.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_snefru.h"
diff --git a/ext/hash/hash_tiger.c b/ext/hash/hash_tiger.c
index 238960204..48c1f6c59 100644
--- a/ext/hash/hash_tiger.c
+++ b/ext/hash/hash_tiger.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_tiger.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_tiger.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
#include "php_hash_tiger.h"
diff --git a/ext/hash/hash_whirlpool.c b/ext/hash/hash_whirlpool.c
index f6dd2433f..cdafc483f 100644
--- a/ext/hash/hash_whirlpool.c
+++ b/ext/hash/hash_whirlpool.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_whirlpool.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: hash_whirlpool.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_hash.h"
diff --git a/ext/hash/php_hash.h b/ext/hash/php_hash.h
index 43b06f4b8..515feeb9a 100644
--- a/ext/hash/php_hash.h
+++ b/ext/hash/php_hash.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_H
#define PHP_HASH_H
diff --git a/ext/hash/php_hash_adler32.h b/ext/hash/php_hash_adler32.h
index f2ab2cec6..e0f08b090 100644
--- a/ext/hash/php_hash_adler32.h
+++ b/ext/hash/php_hash_adler32.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_adler32.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_adler32.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_ADLER32_H
#define PHP_HASH_ADLER32_H
diff --git a/ext/hash/php_hash_crc32.h b/ext/hash/php_hash_crc32.h
index e4083c375..6b97582c7 100644
--- a/ext/hash/php_hash_crc32.h
+++ b/ext/hash/php_hash_crc32.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_crc32.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_crc32.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_CRC32_H
#define PHP_HASH_CRC32_H
diff --git a/ext/hash/php_hash_crc32_tables.h b/ext/hash/php_hash_crc32_tables.h
index 1865180a4..9733634f1 100644
--- a/ext/hash/php_hash_crc32_tables.h
+++ b/ext/hash/php_hash_crc32_tables.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_crc32_tables.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_crc32_tables.h 321634 2012-01-01 13:15:04Z felipe $ */
static const php_hash_uint32 crc32_table[] = { 0x0,
0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
diff --git a/ext/hash/php_hash_gost.h b/ext/hash/php_hash_gost.h
index abe2f27f1..6b4a6a9f8 100644
--- a/ext/hash/php_hash_gost.h
+++ b/ext/hash/php_hash_gost.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_gost.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_gost.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_GOST_H
#define PHP_HASH_GOST_H
diff --git a/ext/hash/php_hash_haval.h b/ext/hash/php_hash_haval.h
index b02fe8f92..2e3db892d 100644
--- a/ext/hash/php_hash_haval.h
+++ b/ext/hash/php_hash_haval.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_haval.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_haval.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_HAVAL_H
#define PHP_HASH_HAVAL_H
diff --git a/ext/hash/php_hash_md.h b/ext/hash/php_hash_md.h
index 83cfba9e9..90bfe3d84 100644
--- a/ext/hash/php_hash_md.h
+++ b/ext/hash/php_hash_md.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_md.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_md.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_MD_H
#define PHP_HASH_MD_H
diff --git a/ext/hash/php_hash_ripemd.h b/ext/hash/php_hash_ripemd.h
index 77ae2c70c..2b8b2aa6a 100644
--- a/ext/hash/php_hash_ripemd.h
+++ b/ext/hash/php_hash_ripemd.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_ripemd.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_ripemd.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_RIPEMD_H
#define PHP_HASH_RIPEMD_H
diff --git a/ext/hash/php_hash_salsa.h b/ext/hash/php_hash_salsa.h
index 471775c33..33388a4bf 100644
--- a/ext/hash/php_hash_salsa.h
+++ b/ext/hash/php_hash_salsa.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_salsa.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_salsa.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_SALSA_H
#define PHP_HASH_SALSA_H
diff --git a/ext/hash/php_hash_sha.h b/ext/hash/php_hash_sha.h
index 260f70a6f..9b5a53f48 100644
--- a/ext/hash/php_hash_sha.h
+++ b/ext/hash/php_hash_sha.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_sha.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_sha.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_SHA_H
#define PHP_HASH_SHA_H
diff --git a/ext/hash/php_hash_snefru.h b/ext/hash/php_hash_snefru.h
index e013a5b76..a47ca78cf 100644
--- a/ext/hash/php_hash_snefru.h
+++ b/ext/hash/php_hash_snefru.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_snefru.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_snefru.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_SNEFRU_H
#define PHP_HASH_SNEFRU_H
diff --git a/ext/hash/php_hash_snefru_tables.h b/ext/hash/php_hash_snefru_tables.h
index 2e920f281..4b0a71c6c 100644
--- a/ext/hash/php_hash_snefru_tables.h
+++ b/ext/hash/php_hash_snefru_tables.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_snefru_tables.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_snefru_tables.h 321634 2012-01-01 13:15:04Z felipe $ */
static const php_hash_uint32 tables[16][256]= {
diff --git a/ext/hash/php_hash_tiger.h b/ext/hash/php_hash_tiger.h
index 20842fc44..f67152b4a 100644
--- a/ext/hash/php_hash_tiger.h
+++ b/ext/hash/php_hash_tiger.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_tiger.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_tiger.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_TIGER_H
#define PHP_HASH_TIGER_H
diff --git a/ext/hash/php_hash_tiger_tables.h b/ext/hash/php_hash_tiger_tables.h
index dffb8f167..0252804d2 100644
--- a/ext/hash/php_hash_tiger_tables.h
+++ b/ext/hash/php_hash_tiger_tables.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_tiger_tables.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_tiger_tables.h 321634 2012-01-01 13:15:04Z felipe $ */
#define t1 (table)
#define t2 (table+256)
diff --git a/ext/hash/php_hash_types.h b/ext/hash/php_hash_types.h
index a728f187d..e34cf0836 100644
--- a/ext/hash/php_hash_types.h
+++ b/ext/hash/php_hash_types.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_types.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_types.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_TYPES_H
#define PHP_HASH_TYPES_H
diff --git a/ext/hash/php_hash_whirlpool.h b/ext/hash/php_hash_whirlpool.h
index 773f502fa..46c3c57e1 100644
--- a/ext/hash/php_hash_whirlpool.h
+++ b/ext/hash/php_hash_whirlpool.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_whirlpool.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_whirlpool.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_WHIRLPOOL_H
#define PHP_HASH_WHIRLPOOL_H
diff --git a/ext/hash/php_hash_whirlpool_tables.h b/ext/hash/php_hash_whirlpool_tables.h
index 02a20e588..9cd9cbff2 100644
--- a/ext/hash/php_hash_whirlpool_tables.h
+++ b/ext/hash/php_hash_whirlpool_tables.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_whirlpool_tables.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_hash_whirlpool_tables.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HASH_WHIRLPOOL_TABLES_H
#define PHP_HASH_WHIRLPOOL_TABLES_H
diff --git a/ext/hash/tests/hash_copy_001.phpt b/ext/hash/tests/hash_copy_001.phpt
index ffc87c3a8..35d50a5cd 100644
--- a/ext/hash/tests/hash_copy_001.phpt
+++ b/ext/hash/tests/hash_copy_001.phpt
@@ -1,5 +1,7 @@
--TEST--
hash_copy() basic tests
+--SKIPIF--
+<?php extension_loaded('hash') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/hash/tests/hash_copy_002.phpt b/ext/hash/tests/hash_copy_002.phpt
index 77cbca426..aac4c3bdd 100644
--- a/ext/hash/tests/hash_copy_002.phpt
+++ b/ext/hash/tests/hash_copy_002.phpt
@@ -1,5 +1,7 @@
--TEST--
hash_copy() errors
+--SKIPIF--
+<?php extension_loaded('hash') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index ea27b1944..ecde19279 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: iconv.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: iconv.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/iconv/php_iconv.h b/ext/iconv/php_iconv.h
index 72266f666..11124d5d0 100644
--- a/ext/iconv/php_iconv.h
+++ b/ext/iconv/php_iconv.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Revision: 306939 $ */
+/* $Revision: 321634 $ */
#ifndef PHP_ICONV_H
#define PHP_ICONV_H
diff --git a/ext/iconv/tests/bug52941.phpt b/ext/iconv/tests/bug52941.phpt
index 753c9ada1..b336d40c4 100644
--- a/ext/iconv/tests/bug52941.phpt
+++ b/ext/iconv/tests/bug52941.phpt
@@ -28,14 +28,14 @@ var_dump($decoded['X-Foo']);
var_dump($decoded['X-Bar']);
var_dump($decoded['To']);
?>
---EXPECT--
+--EXPECTF--
string(17) "<foo@example.com>"
-string(29) "=?ks_c_5601-1987?B?UkU6odk=?="
-string(33) "=?ks_c_5601-1987?B?UkU6odk=?= Foo"
-string(32) "=?ks_c_5601-1987?B?UkU6odk=?=Foo"
+string(%d) "%s"
+string(%d) "%sFoo"
+string(%d) "%sFoo"
string(18) "<test@example.com>"
string(17) "<foo@example.com>"
-string(29) "=?ks_c_5601-1987?B?UkU6odk=?="
-string(33) "=?ks_c_5601-1987?B?UkU6odk=?= Foo"
-string(32) "=?ks_c_5601-1987?B?UkU6odk=?=Foo"
+string(%d) "%s"
+string(%d) "%sFoo"
+string(%d) "%sFoo"
string(18) "<test@example.com>"
diff --git a/ext/iconv/tests/iconv_stream_filter.phpt b/ext/iconv/tests/iconv_stream_filter.phpt
index 6a60bafeb..79f6ad517 100644
--- a/ext/iconv/tests/iconv_stream_filter.phpt
+++ b/ext/iconv/tests/iconv_stream_filter.phpt
@@ -22,7 +22,7 @@ fclose($fp);
$fp = fopen(dirname(__FILE__).'/iconv_stream_filter.txt', 'rb');
stream_filter_append($fp, 'string.rot13'); // this will make conversion fail.
stream_filter_append($fp, 'convert.iconv.ISO-2022-JP/EUC-JP');
-var_dump(bin2hex(fread($fp, 10)) != "a4b3a4f3a4cba4c1a4cf");
+var_dump(bin2hex(@fread($fp, 10)) != "a4b3a4f3a4cba4c1a4cf");
var_dump(bin2hex(fread($fp, 5)) != "69636f6e76");
var_dump(bin2hex(fread($fp, 1)) != "0a");
fclose($fp);
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 59ce0ce74..a0676e9a1 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -26,7 +26,7 @@
| PHP 4.0 updates: Zeev Suraski <zeev@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: php_imap.c 321634 2012-01-01 13:15:04Z felipe $ */
#define IMAP41
diff --git a/ext/imap/php_imap.h b/ext/imap/php_imap.h
index 5e9c029fc..d0bb9898f 100644
--- a/ext/imap/php_imap.h
+++ b/ext/imap/php_imap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -27,7 +27,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.h 307691 2011-01-24 03:52:00Z stas $ */
+/* $Id: php_imap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_IMAP_H
#define PHP_IMAP_H
diff --git a/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt b/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt
index 6598be0d2..54b43efae 100644
--- a/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt
+++ b/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt
@@ -1,8 +1,8 @@
--TEST--
imap_utf8_to_mutf7
--SKIPIF--
-<?php if (!extension_loaded("imap")) print "skip"; ?>
-<?php if (!function_exists("imap_utf8_to_mutf7")) print "skip"; ?>
+<?php if (!extension_loaded("imap")) print "skip imap extension not loaded"; ?>
+<?php if (!function_exists("imap_utf8_to_mutf7")) print "skip imap_utf8_to_mutf7() not available"; ?>
--FILE--
<?php
diff --git a/ext/interbase/ibase_blobs.c b/ext/interbase/ibase_blobs.c
index 92df8fe40..609781eab 100644
--- a/ext/interbase/ibase_blobs.c
+++ b/ext/interbase/ibase_blobs.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_blobs.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ibase_blobs.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/interbase/ibase_events.c b/ext/interbase/ibase_events.c
index a8fa86fa3..1a4975797 100644
--- a/ext/interbase/ibase_events.c
+++ b/ext/interbase/ibase_events.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_events.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ibase_events.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c
index b72721631..6fdac8650 100644
--- a/ext/interbase/ibase_query.c
+++ b/ext/interbase/ibase_query.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_query.c 313447 2011-07-19 20:25:51Z mariuz $ */
+/* $Id: ibase_query.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/interbase/ibase_service.c b/ext/interbase/ibase_service.c
index b02d2156c..e8817e8f1 100644
--- a/ext/interbase/ibase_service.c
+++ b/ext/interbase/ibase_service.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_service.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ibase_service.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index a1bed0157..183398fab 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c 313830 2011-07-28 10:39:19Z pajoye $ */
+/* $Id: interbase.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h
index 071d9447f..07b24bbf6 100755
--- a/ext/interbase/php_ibase_includes.h
+++ b/ext/interbase/php_ibase_includes.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ibase_includes.h 311341 2011-05-22 19:06:21Z felipe $ */
+/* $Id: php_ibase_includes.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_IBASE_INCLUDES_H
#define PHP_IBASE_INCLUDES_H
diff --git a/ext/interbase/php_ibase_udf.c b/ext/interbase/php_ibase_udf.c
index fac8bbe61..b90514601 100644
--- a/ext/interbase/php_ibase_udf.c
+++ b/ext/interbase/php_ibase_udf.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ibase_udf.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ibase_udf.c 321634 2012-01-01 13:15:04Z felipe $ */
/**
* This UDF library adds the ability to call PHP functions from SQL
diff --git a/ext/interbase/php_interbase.h b/ext/interbase/php_interbase.h
index a93fb9a7c..10bbd4d0a 100644
--- a/ext/interbase/php_interbase.h
+++ b/ext/interbase/php_interbase.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_interbase.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_interbase.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_INTERBASE_H
#define PHP_INTERBASE_H
diff --git a/ext/interbase/tests/003.phpt b/ext/interbase/tests/003.phpt
index 4be516701..bc4338ad4 100644
--- a/ext/interbase/tests/003.phpt
+++ b/ext/interbase/tests/003.phpt
@@ -3,7 +3,7 @@ InterBase: misc sql types (may take a while)
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
-<?php /* $Id: 003.phpt 160078 2004-05-30 16:20:25Z abies $ */
+<?php /* $Id: 003.phpt 321992 2012-01-10 05:26:20Z mariuz $ */
require("interbase.inc");
ibase_connect($test_base);
@@ -21,7 +21,7 @@ InterBase: misc sql types (may take a while)
v_numeric15_0 numeric(15,0),
v_double double precision,
v_float float,
- v_integer integer,
+ v_integer integer,
v_smallint smallint,
v_varchar varchar(10000)
)");
@@ -157,27 +157,27 @@ array(22) {
int(10)
["ID_10"]=>
int(11)
- ["FIELD_00"]=>
+ ["CONSTANT"]=>
int(12)
- ["FIELD_01"]=>
+ ["CONSTANT_01"]=>
int(13)
- ["FIELD_02"]=>
+ ["CONSTANT_02"]=>
int(14)
- ["FIELD_03"]=>
+ ["CONSTANT_03"]=>
int(15)
- ["FIELD_04"]=>
+ ["CONSTANT_04"]=>
int(16)
- ["FIELD_05"]=>
+ ["CONSTANT_05"]=>
int(17)
- ["FIELD_06"]=>
+ ["CONSTANT_06"]=>
int(18)
- ["FIELD_07"]=>
+ ["CONSTANT_07"]=>
int(19)
- ["FIELD_08"]=>
+ ["CONSTANT_08"]=>
int(20)
- ["FIELD_09"]=>
+ ["CONSTANT_09"]=>
int(21)
- ["FIELD_10"]=>
+ ["CONSTANT_10"]=>
int(22)
}
end of test
diff --git a/ext/interbase/tests/006.phpt b/ext/interbase/tests/006.phpt
index 2aeb0739d..331d2437f 100644
--- a/ext/interbase/tests/006.phpt
+++ b/ext/interbase/tests/006.phpt
@@ -3,7 +3,7 @@ InterBase: binding (may take a while)
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
-<?php /* $Id: 006.phpt 160078 2004-05-30 16:20:25Z abies $ */
+<?php /* $Id: 006.phpt 316521 2011-09-12 09:56:45Z mariuz $ */
require("interbase.inc");
@@ -210,7 +210,7 @@ InterBase: binding (may take a while)
out_result($res, "test6");
ibase_free_result($res);
- $res = ibase_execute($query, "5", 7.5);
+ $res = ibase_execute($query, "5", 7.499);
out_result($res, "test6");
ibase_free_result($res);
diff --git a/ext/interbase/tests/skipif.inc b/ext/interbase/tests/skipif.inc
index 78c0d5ca3..2430e7ca6 100755
--- a/ext/interbase/tests/skipif.inc
+++ b/ext/interbase/tests/skipif.inc
@@ -1,5 +1,9 @@
-<?php /* $Id: skipif.inc 155152 2004-04-01 16:25:51Z abies $ */
+<?php /* $Id: skipif.inc 317169 2011-09-22 22:07:02Z tyrael $ */
-if (!extension_loaded("interbase")) print "skip";
+if (!extension_loaded("interbase")) print "skip interbase extension not available";
+require("interbase.inc");
+if(!@ibase_connect($test_base)){
+ die("skip cannot connnect");
+}
?>
diff --git a/ext/intl/collator/collator_compare.c b/ext/intl/collator/collator_compare.c
index 840855661..4384558ac 100755
--- a/ext/intl/collator/collator_compare.c
+++ b/ext/intl/collator/collator_compare.c
@@ -58,6 +58,14 @@ PHP_FUNCTION( collator_compare )
/* Fetch the object. */
COLLATOR_METHOD_FETCH_OBJECT;
+ if (!co || !co->ucoll) {
+ intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) TSRMLS_CC );
+ intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ),
+ "Object not initialized", 0 TSRMLS_CC );
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Object not initialized");
+
+ RETURN_FALSE;
+ }
/*
* Compare given strings (converting them to UTF-16 first).
diff --git a/ext/intl/collator/collator_locale.c b/ext/intl/collator/collator_locale.c
index 331fed22f..b30b021ee 100755
--- a/ext/intl/collator/collator_locale.c
+++ b/ext/intl/collator/collator_locale.c
@@ -51,6 +51,15 @@ PHP_FUNCTION( collator_get_locale )
/* Fetch the object. */
COLLATOR_METHOD_FETCH_OBJECT;
+ if (!co || !co->ucoll) {
+ intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) TSRMLS_CC );
+ intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ),
+ "Object not initialized", 0 TSRMLS_CC );
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Object not initialized");
+
+ RETURN_FALSE;
+ }
+
/* Get locale by specified type. */
locale_name = (char*) ucol_getLocaleByType(
co->ucoll, type, COLLATOR_ERROR_CODE_P( co ) );
diff --git a/ext/intl/collator/collator_sort.c b/ext/intl/collator/collator_sort.c
index 929a9c09d..a871c90a8 100755
--- a/ext/intl/collator/collator_sort.c
+++ b/ext/intl/collator/collator_sort.c
@@ -73,6 +73,13 @@ static int collator_regular_compare_function(zval *result, zval *op1, zval *op2
/* Fetch collator object. */
co = (Collator_object *) zend_object_store_get_object( INTL_G(current_collator) TSRMLS_CC );
+ if (!co || !co->ucoll) {
+ intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) TSRMLS_CC );
+ intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ),
+ "Object not initialized", 0 TSRMLS_CC );
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Object not initialized");
+ }
+
/* Compare the strings using ICU. */
result->value.lval = ucol_strcoll(
co->ucoll,
@@ -387,6 +394,14 @@ PHP_FUNCTION( collator_sort_with_sort_keys )
/* Fetch the object. */
COLLATOR_METHOD_FETCH_OBJECT;
+ if (!co || !co->ucoll) {
+ intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) TSRMLS_CC );
+ intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ),
+ "Object not initialized", 0 TSRMLS_CC );
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Object not initialized");
+
+ RETURN_FALSE;
+ }
/*
* Sort specified array.
@@ -551,6 +566,14 @@ PHP_FUNCTION( collator_get_sort_key )
/* Fetch the object. */
COLLATOR_METHOD_FETCH_OBJECT;
+ if (!co || !co->ucoll) {
+ intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) TSRMLS_CC );
+ intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ),
+ "Object not initialized", 0 TSRMLS_CC );
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Object not initialized");
+
+ RETURN_FALSE;
+ }
/*
* Compare given strings (converting them to UTF-16 first).
diff --git a/ext/intl/formatter/formatter_attr.c b/ext/intl/formatter/formatter_attr.c
index b306bbede..448a9db72 100755
--- a/ext/intl/formatter/formatter_attr.c
+++ b/ext/intl/formatter/formatter_attr.c
@@ -77,11 +77,11 @@ PHP_FUNCTION( numfmt_get_attribute )
break;
case UNUM_ROUNDING_INCREMENT:
{
- double value = unum_getDoubleAttribute(FORMATTER_OBJECT(nfo), attribute);
- if(value == -1) {
+ double value_double = unum_getDoubleAttribute(FORMATTER_OBJECT(nfo), attribute);
+ if(value_double == -1) {
INTL_DATA_ERROR_CODE(nfo) = U_UNSUPPORTED_ERROR;
} else {
- RETVAL_DOUBLE(value);
+ RETVAL_DOUBLE(value_double);
}
}
break;
diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c
index bbfb65bbd..593b6e472 100755
--- a/ext/intl/locale/locale_methods.c
+++ b/ext/intl/locale/locale_methods.c
@@ -14,7 +14,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: locale_methods.c 307392 2011-01-12 00:29:59Z felipe $ */
+/* $Id: locale_methods.c 319676 2011-11-22 12:29:15Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -470,6 +470,7 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME
char* disp_loc_name = NULL;
int disp_loc_name_len = 0;
+ int free_loc_name = 0;
UChar* disp_name = NULL;
int32_t disp_name_len = 0;
@@ -517,17 +518,18 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME
if( mod_loc_name==NULL ){
mod_loc_name = estrdup( loc_name );
}
+
+ /* Check if disp_loc_name passed , if not use default locale */
+ if( !disp_loc_name){
+ disp_loc_name = estrdup(INTL_G(default_locale));
+ free_loc_name = 1;
+ }
/* Get the disp_value for the given locale */
do{
disp_name = erealloc( disp_name , buflen );
disp_name_len = buflen;
- /* Check if disp_loc_name passed , if not use default locale */
- if( !disp_loc_name){
- disp_loc_name = estrdup(INTL_G(default_locale));
- }
-
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
buflen = uloc_getDisplayLanguage ( mod_loc_name , disp_loc_name , disp_name , disp_name_len , &status);
} else if( strcmp(tag_name , LOC_SCRIPT_TAG)==0 ){
@@ -557,6 +559,10 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
RETURN_FALSE;
}
} while( buflen > disp_name_len );
@@ -564,6 +570,10 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
/* Convert display locale name from UTF-16 to UTF-8. */
intl_convert_utf16_to_utf8( &utf8value, &utf8value_len, disp_name, buflen, &status );
efree( disp_name );
diff --git a/ext/intl/tests/bug60192-compare.phpt b/ext/intl/tests/bug60192-compare.phpt
new file mode 100644
index 000000000..0fd24cce8
--- /dev/null
+++ b/ext/intl/tests/bug60192-compare.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Bug #60192 (SegFault when Collator not constructed properly)
+--SKIPIF--
+<?php
+ if (!extension_loaded('intl')) { die('skip intl extension not available'); }
+?>
+--FILE--
+<?php
+class Collator2 extends Collator{
+ public function __construct() {
+ // ommitting parent::__construct($someLocale);
+ }
+}
+
+$c = new Collator2();
+$a = $c->compare('h', 'H');
+--EXPECTF--
+
+Catchable fatal error: Collator::compare(): Object not initialized in %s on line %d
diff --git a/ext/intl/tests/bug60192-getlocale.phpt b/ext/intl/tests/bug60192-getlocale.phpt
new file mode 100644
index 000000000..50e3ec35e
--- /dev/null
+++ b/ext/intl/tests/bug60192-getlocale.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #60192 (SegFault when Collator not constructed properly)
+--SKIPIF--
+<?php
+ if (!extension_loaded('intl')) { die('skip intl extension not available'); }
+?>
+--FILE--
+<?php
+
+class Collator2 extends Collator{
+ public function __construct() {
+ // ommitting parent::__construct($someLocale);
+ }
+}
+
+$c = new Collator2();
+$c->getLocale(Locale::ACTUAL_LOCALE);
+--EXPECTF--
+
+Catchable fatal error: Collator::getLocale(): Object not initialized in %s on line %d
diff --git a/ext/intl/tests/bug60192-getsortkey.phpt b/ext/intl/tests/bug60192-getsortkey.phpt
new file mode 100644
index 000000000..39755ae8f
--- /dev/null
+++ b/ext/intl/tests/bug60192-getsortkey.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #60192 (SegFault when Collator not constructed properly)
+--SKIPIF--
+<?php
+ if (!extension_loaded('intl')) { die('skip intl extension not available'); }
+?>
+--FILE--
+<?php
+
+class Collator2 extends Collator{
+ public function __construct() {
+ // ommitting parent::__construct($someLocale);
+ }
+}
+
+$c = new Collator2();
+$c->getSortKey('h');
+--EXPECTF--
+
+Catchable fatal error: Collator::getSortKey(): Object not initialized in %s on line %d
diff --git a/ext/intl/tests/bug60192-sort.phpt b/ext/intl/tests/bug60192-sort.phpt
new file mode 100644
index 000000000..57057215e
--- /dev/null
+++ b/ext/intl/tests/bug60192-sort.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #60192 (SegFault when Collator not constructed properly)
+--SKIPIF--
+<?php
+ if (!extension_loaded('intl')) { die('skip intl extension not available'); }
+?>
+--FILE--
+<?php
+
+class Collator2 extends Collator{
+ public function __construct() {
+ // ommitting parent::__construct($someLocale);
+ }
+}
+
+$c = new Collator2();
+$a = array('a', 'b');
+$c->sort($a);
+--EXPECTF--
+
+Catchable fatal error: Collator::sort(): Object not initialized in %s on line %d
diff --git a/ext/intl/tests/bug60192-sortwithsortkeys.phpt b/ext/intl/tests/bug60192-sortwithsortkeys.phpt
new file mode 100644
index 000000000..445f4a03b
--- /dev/null
+++ b/ext/intl/tests/bug60192-sortwithsortkeys.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #60192 (SegFault when Collator not constructed properly)
+--SKIPIF--
+<?php
+ if (!extension_loaded('intl')) { die('skip intl extension not available'); }
+?>
+--FILE--
+<?php
+
+class Collator2 extends Collator{
+ public function __construct() {
+ // ommitting parent::__construct($someLocale);
+ }
+}
+
+$c = new Collator2();
+$a = array('a', 'b');
+$c->sortWithSortKeys($a);
+--EXPECTF--
+
+Catchable fatal error: Collator::sortWithSortKeys(): Object not initialized in %s on line %d
diff --git a/ext/intl/tests/dateformat_parse.phpt b/ext/intl/tests/dateformat_parse.phpt
index b3be895e5..ce800aa48 100755
--- a/ext/intl/tests/dateformat_parse.phpt
+++ b/ext/intl/tests/dateformat_parse.phpt
@@ -2,6 +2,8 @@
datefmt_parse_code()
--SKIPIF--
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--INI--
+date.timezone="America/Los_Angeles"
--FILE--
<?php
@@ -9,13 +11,14 @@ datefmt_parse_code()
* Test for the datefmt_parse function
*/
+putenv('TZ=America/Los_Angeles');
function ut_main()
{
$locale_arr = array (
'en_US_CA'
);
-
+
$datetype_arr = array (
IntlDateFormatter::FULL,
IntlDateFormatter::LONG,
@@ -28,36 +31,34 @@ function ut_main()
$text_arr = array (
- "Sunday, September 18, 2039 4:06:40 PM PT",
- "Wednesday, December 17, 1969 6:40:00 PM PT",
- "Thursday, December 18, 1969 8:49:59 AM PST",
- "Thursday, December 18, 1969 8:49:59 PM PST",
- "December 18, 1969 8:49:59 AM PST",
- "12/18/69 8:49 AM",
- "19691218 08:49 AM"
+ // Full parsing
+ array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
+ array("Wednesday, December 17, 1969 6:40:00 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
+ array("Thursday, December 18, 1969 8:49:59 PM PST", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
+ array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::FULL),
+ array("12/18/69 8:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::SHORT),
+ array("19691218 08:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::SHORT),
+ // Partial parsing
+ array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::NONE),
+ array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::SHORT),
+ array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::NONE),
+ array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::SHORT),
+ array("12/18/69 8:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::LONG),
+ array("19691218 08:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::LONG),
);
- $parse_pos = 0;
- $fmt = ut_datefmt_create( 'en_US_CA', IntlDateFormatter::NONE, IntlDateFormatter::SHORT);
foreach( $text_arr as $text_entry){
- for ( $parse_pos = 0 ; $parse_pos< strlen($text_entry) ; $parse_pos++ ){
- $i = $parse_pos;
- $parsed = ut_datefmt_parse( $fmt , $text_entry , $parse_pos );
- if( intl_get_error_code() == U_ZERO_ERROR){
- $res_str .= "\nInput text :$text_entry ; Parsed text : $parsed";
- $res_str .= " ; parse_pos : $i $parse_pos";
- } else {
- $parse_pos = $i;
- }
-/*
- else{
- $res_str .= "\nError while parsing as: '".intl_get_error_message()."'";
- }
-*/
+ $fmt = ut_datefmt_create( 'en_US_CA', $text_entry[1], $text_entry[2]);
+ $parse_pos = 0;
+ $parsed = ut_datefmt_parse( $fmt , $text_entry[0] , $parse_pos );
+
+ $res_str .= "\nInput text : {$text_entry[0]} ; DF = {$text_entry[1]}; TF = {$text_entry[2]}";
+ if( intl_get_error_code() != U_ZERO_ERROR) {
+ $res_str .= "\nError : ".intl_get_error_message();
}
+ $res_str .= "\nParsed: $parsed; parse_pos : $parse_pos\n";
}
-
return $res_str;
}
@@ -68,10 +69,44 @@ include_once( 'ut_common.inc' );
ut_run();
?>
--EXPECT--
-Input text :Sunday, September 18, 2039 4:06:40 PM PT ; Parsed text : 96000 ; parse_pos : 29 37
-Input text :Wednesday, December 17, 1969 6:40:00 PM PT ; Parsed text : 216000 ; parse_pos : 31 39
-Input text :Thursday, December 18, 1969 8:49:59 AM PST ; Parsed text : 208740 ; parse_pos : 30 38
-Input text :Thursday, December 18, 1969 8:49:59 PM PST ; Parsed text : 251940 ; parse_pos : 30 38
-Input text :December 18, 1969 8:49:59 AM PST ; Parsed text : 208740 ; parse_pos : 20 28
-Input text :12/18/69 8:49 AM ; Parsed text : 60540 ; parse_pos : 8 16
-Input text :19691218 08:49 AM ; Parsed text : 60540 ; parse_pos : 8 17
+
+Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = 0
+Parsed: 2200000000; parse_pos : 40
+
+Input text : Wednesday, December 17, 1969 6:40:00 PM PT ; DF = 0; TF = 0
+Parsed: -1200000; parse_pos : 42
+
+Input text : Thursday, December 18, 1969 8:49:59 PM PST ; DF = 0; TF = 0
+Parsed: -1105801; parse_pos : 42
+
+Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = 0
+Parsed: -1149001; parse_pos : 32
+
+Input text : 12/18/69 8:49 AM ; DF = 3; TF = 3
+Parsed: -1149060; parse_pos : 16
+
+Input text : 19691218 08:49 AM ; DF = 3; TF = 3
+Error : Date parsing failed: U_PARSE_ERROR
+Parsed: ; parse_pos : 8
+
+Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = -1
+Parsed: 2199942000; parse_pos : 26
+
+Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = 3
+Error : Date parsing failed: U_PARSE_ERROR
+Parsed: ; parse_pos : 31
+
+Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = -1
+Parsed: -1180800; parse_pos : 17
+
+Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = 3
+Error : Date parsing failed: U_PARSE_ERROR
+Parsed: ; parse_pos : 22
+
+Input text : 12/18/69 8:49 AM ; DF = 3; TF = 1
+Error : Date parsing failed: U_PARSE_ERROR
+Parsed: ; parse_pos : 13
+
+Input text : 19691218 08:49 AM ; DF = 3; TF = 1
+Error : Date parsing failed: U_PARSE_ERROR
+Parsed: ; parse_pos : 8
diff --git a/ext/intl/tests/dateformat_parse_timestamp_parsepos.phpt b/ext/intl/tests/dateformat_parse_timestamp_parsepos.phpt
index b7e820388..040f72e47 100755
--- a/ext/intl/tests/dateformat_parse_timestamp_parsepos.phpt
+++ b/ext/intl/tests/dateformat_parse_timestamp_parsepos.phpt
@@ -2,6 +2,10 @@
datefmt_parse_timestamp_code() with parse pos
--SKIPIF--
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--INI--
+datetime.timezone="America/Los_Angeles"
+--ENV--
+TZ=America/Los_Angeles
--FILE--
<?php
@@ -15,7 +19,7 @@ function ut_main()
$locale_arr = array (
'en_US_CA'
);
-
+
$datetype_arr = array (
IntlDateFormatter::FULL,
IntlDateFormatter::LONG,
@@ -31,8 +35,8 @@ function ut_main()
"Sunday, September 18, 3039 4:06:40 PM PT",
"Thursday, December 18, 1969 8:49:59 AM PST",
//"December 18, 1969 8:49:59 AM PST",
- //"12/18/69 8:49 AM",
- "19001218 08:49 AM",
+ "12/18/69 8:49 AM",
+ "20111218 08:49 AM",
"19691218 08:49 AM"
);
@@ -46,18 +50,19 @@ function ut_main()
$res_str .= "\n------------";
foreach( $datetype_arr as $datetype_entry )
{
- $res_str .= "\ndatetype = $datetype_entry ,timetype =$datetype_entry ";
+ $res_str .= "\ndatetype = $datetype_entry ,timetype =$datetype_entry";
$fmt = ut_datefmt_create( $locale_entry , $datetype_entry ,$datetype_entry);
- $parsed = ut_datefmt_parse( $fmt , $text_entry);
+ $pos = 0;
+ $parsed = ut_datefmt_parse( $fmt , $text_entry, $pos);
if( intl_get_error_code() == U_ZERO_ERROR){
- $res_str .= "\nParsed text is : $parsed";
+ $res_str .= "\nParsed text is : $parsed; Position = $pos";
}else{
- $res_str .= "\nError while parsing as: '".intl_get_error_message()."'";
+ $res_str .= "\nError while parsing as: '".intl_get_error_message()."'; Position = $pos";
}
}
}
}
-
+ $res_str .= "\n";
return $res_str;
@@ -75,61 +80,77 @@ Input text is : Sunday, September 18, 3039 4:06:40 PM PT
------------
Locale is : en_US_CA
------------
-datetype = 0 ,timetype =0
-Parsed text is : 33756908800
-datetype = 1 ,timetype =1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 2 ,timetype =2
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 3 ,timetype =3
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = -1 ,timetype =-1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
+datetype = 0 ,timetype =0
+Parsed text is : 33756908800; Position = 40
+datetype = 1 ,timetype =1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 2 ,timetype =2
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 3 ,timetype =3
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = -1 ,timetype =-1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
------------
Input text is : Thursday, December 18, 1969 8:49:59 AM PST
------------
Locale is : en_US_CA
------------
-datetype = 0 ,timetype =0
-Parsed text is : -1149001
-datetype = 1 ,timetype =1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 2 ,timetype =2
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 3 ,timetype =3
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = -1 ,timetype =-1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
+datetype = 0 ,timetype =0
+Parsed text is : -1149001; Position = 42
+datetype = 1 ,timetype =1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 2 ,timetype =2
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 3 ,timetype =3
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = -1 ,timetype =-1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+------------
+
+Input text is : 12/18/69 8:49 AM
+------------
+Locale is : en_US_CA
+------------
+datetype = 0 ,timetype =0
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 1 ,timetype =1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 2 ,timetype =2
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 3 ,timetype =3
+Parsed text is : -1149060; Position = 16
+datetype = -1 ,timetype =-1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
------------
-Input text is : 19001218 08:49 AM
+Input text is : 20111218 08:49 AM
------------
Locale is : en_US_CA
------------
-datetype = 0 ,timetype =0
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 1 ,timetype =1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 2 ,timetype =2
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 3 ,timetype =3
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = -1 ,timetype =-1
-Parsed text is : -2178601860
+datetype = 0 ,timetype =0
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 1 ,timetype =1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 2 ,timetype =2
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 3 ,timetype =3
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 8
+datetype = -1 ,timetype =-1
+Parsed text is : 1324226940; Position = 17
------------
Input text is : 19691218 08:49 AM
------------
Locale is : en_US_CA
------------
-datetype = 0 ,timetype =0
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 1 ,timetype =1
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 2 ,timetype =2
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = 3 ,timetype =3
-Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'
-datetype = -1 ,timetype =-1
-Parsed text is : -1149060
+datetype = 0 ,timetype =0
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 1 ,timetype =1
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 2 ,timetype =2
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 0
+datetype = 3 ,timetype =3
+Error while parsing as: 'Date parsing failed: U_PARSE_ERROR'; Position = 8
+datetype = -1 ,timetype =-1
+Parsed text is : -1149060; Position = 17
diff --git a/ext/intl/tests/locale_get_display_region.phpt b/ext/intl/tests/locale_get_display_region.phpt
index 354fc0623..48cd7b6c7 100755
--- a/ext/intl/tests/locale_get_display_region.phpt
+++ b/ext/intl/tests/locale_get_display_region.phpt
@@ -163,14 +163,14 @@ disp_locale=fr : display_region=Serbie-et-Monténégro
disp_locale=de : display_region=Serbien und Montenegro
-----------------
locale='sl-rozaj'
-disp_locale=en : display_region=
-disp_locale=fr : display_region=
-disp_locale=de : display_region=
+disp_locale=en : display_region=(ROZAJ)?
+disp_locale=fr : display_region=(ROZAJ)?
+disp_locale=de : display_region=(ROZAJ)?
-----------------
locale='sl-nedis'
-disp_locale=en : display_region=
-disp_locale=fr : display_region=
-disp_locale=de : display_region=
+disp_locale=en : display_region=(NEDIS)?
+disp_locale=fr : display_region=(NEDIS)?
+disp_locale=de : display_region=(NEDIS)?
-----------------
locale='de-CH-1901'
disp_locale=en : display_region=Switzerland
diff --git a/ext/intl/tests/locale_get_region.phpt b/ext/intl/tests/locale_get_region.phpt
index 0bebb331a..0baae4993 100755
--- a/ext/intl/tests/locale_get_region.phpt
+++ b/ext/intl/tests/locale_get_region.phpt
@@ -84,7 +84,7 @@ include_once( 'ut_common.inc' );
ut_run();
?>
---EXPECT--
+--EXPECTF--
uk-ua_CALIFORNIA@currency=;currency=GRN: region='UA'
root: region=''
uk@currency=EURO: region=''
@@ -99,8 +99,8 @@ sr-Cyrl: region=''
sr-Latn: region=''
zh-Hans-CN: region='CN'
sr-Latn-CS: region='CS'
-sl-rozaj: region=''
-sl-nedis: region=''
+sl-rozaj: region='%r(ROZAJ)?%r'
+sl-nedis: region='%r(NEDIS)?%r'
de-CH-1901: region='CH'
sl-IT-nedis: region='IT'
sl-Latn-IT-nedis: region='IT'
@@ -108,7 +108,7 @@ de-DE: region='DE'
en-US: region='US'
es-419: region='419'
de-CH-x-phonebk: region='CH'
-az-Arab-x-AZE-derbend: region=''
+az-Arab-x-AZE-derbend: region='%r(X)?%r'
zh-min: region=''
zh-min-nan-Hant-CN: region='MIN'
x-whatever: region=''
@@ -117,7 +117,7 @@ sr-Latn-QM: region='QM'
sr-Qaaa-CS: region='CS'
en-US-u-islamCal: region='US'
zh-CN-a-myExt-x-private: region='CN'
-en-a-myExt-b-another: region=''
+en-a-myExt-b-another: region='%r(A)?%r'
de-419-DE: region='419'
a-DE: region='DE'
-ar-a-aaa-b-bbb-a-ccc: region=''
+ar-a-aaa-b-bbb-a-ccc: region='%r(A)?%r'
diff --git a/ext/intl/tests/locale_parse_locale.phpt b/ext/intl/tests/locale_parse_locale.phpt
index e47f71830..36637f0d8 100755
--- a/ext/intl/tests/locale_parse_locale.phpt
+++ b/ext/intl/tests/locale_parse_locale.phpt
@@ -6,7 +6,7 @@ locale_parse_locale()
<?php
/*
- * Try parsing different Locales
+ * Try parsing different Locales
* with Procedural and Object methods.
*/
@@ -72,11 +72,12 @@ function ut_main()
{
$arr = ut_loc_locale_parse( $locale);
$res_str .= "---------------------\n";
- $res_str .= "$locale: \n";
+ $res_str .= "$locale:\n";
if( $arr){
foreach( $arr as $key => $value){
$res_str .= "$key : '$value' , ";
}
+ $res_str = rtrim($res_str);
}
else{
$res_str .= "No values found from Locale parsing.";
@@ -93,109 +94,109 @@ include_once( 'ut_common.inc' );
ut_run();
?>
---EXPECT--
+--EXPECTF--
---------------------
-uk-ua_CALIFORNIA@currency=;currency=GRN:
-language : 'uk' , region : 'UA' , variant0 : 'CALIFORNIA' ,
+uk-ua_CALIFORNIA@currency=;currency=GRN:
+language : 'uk' , region : 'UA' , variant0 : 'CALIFORNIA' ,
---------------------
-root:
-language : 'root' ,
+root:
+language : 'root' ,
---------------------
-uk@currency=EURO:
-language : 'uk' ,
+uk@currency=EURO:
+language : 'uk' ,
---------------------
-Hindi:
-language : 'hindi' ,
+Hindi:
+language : 'hindi' ,
---------------------
-de:
-language : 'de' ,
+de:
+language : 'de' ,
---------------------
-fr:
-language : 'fr' ,
+fr:
+language : 'fr' ,
---------------------
-ja:
-language : 'ja' ,
+ja:
+language : 'ja' ,
---------------------
-i-enochian:
-grandfathered : 'i-enochian' ,
+i-enochian:
+grandfathered : 'i-enochian' ,
---------------------
-zh-Hant:
-language : 'zh' , script : 'Hant' ,
+zh-Hant:
+language : 'zh' , script : 'Hant' ,
---------------------
-zh-Hans:
-language : 'zh' , script : 'Hans' ,
+zh-Hans:
+language : 'zh' , script : 'Hans' ,
---------------------
-sr-Cyrl:
-language : 'sr' , script : 'Cyrl' ,
+sr-Cyrl:
+language : 'sr' , script : 'Cyrl' ,
---------------------
-sr-Latn:
-language : 'sr' , script : 'Latn' ,
+sr-Latn:
+language : 'sr' , script : 'Latn' ,
---------------------
-zh-Hans-CN:
-language : 'zh' , script : 'Hans' , region : 'CN' ,
+zh-Hans-CN:
+language : 'zh' , script : 'Hans' , region : 'CN' ,
---------------------
-sr-Latn-CS:
-language : 'sr' , script : 'Latn' , region : 'CS' ,
+sr-Latn-CS:
+language : 'sr' , script : 'Latn' , region : 'CS' ,
---------------------
-sl-rozaj:
-language : 'sl' ,
+sl-rozaj:
+language : 'sl' ,%r( region : 'ROZAJ' ,)?%r
---------------------
-sl-nedis:
-language : 'sl' ,
+sl-nedis:
+language : 'sl' ,%r( region : 'NEDIS' ,)?%r
---------------------
-de-CH-1901:
-language : 'de' , region : 'CH' , variant0 : '1901' ,
+de-CH-1901:
+language : 'de' , region : 'CH' , variant0 : '1901' ,
---------------------
-sl-IT-nedis:
-language : 'sl' , region : 'IT' , variant0 : 'NEDIS' ,
+sl-IT-nedis:
+language : 'sl' , region : 'IT' , variant0 : 'NEDIS' ,
---------------------
-sl-Latn-IT-nedis:
-language : 'sl' , script : 'Latn' , region : 'IT' , variant0 : 'NEDIS' ,
+sl-Latn-IT-nedis:
+language : 'sl' , script : 'Latn' , region : 'IT' , variant0 : 'NEDIS' ,
---------------------
-de-DE:
-language : 'de' , region : 'DE' ,
+de-DE:
+language : 'de' , region : 'DE' ,
---------------------
-en-US:
-language : 'en' , region : 'US' ,
+en-US:
+language : 'en' , region : 'US' ,
---------------------
-es-419:
-language : 'es' , region : '419' ,
+es-419:
+language : 'es' , region : '419' ,
---------------------
-de-CH-x-phonebk:
-language : 'de' , region : 'CH' , private0 : 'phonebk' ,
+de-CH-x-phonebk:
+language : 'de' , region : 'CH' , private0 : 'phonebk' ,
---------------------
-az-Arab-x-AZE-derbend:
-language : 'az' , script : 'Arab' , private0 : 'AZE' , private1 : 'derbend' ,
+az-Arab-x-AZE-derbend:
+language : 'az' , script : 'Arab' , private0 : 'AZE' , private1 : 'derbend' ,
---------------------
-zh-min:
-grandfathered : 'zh-min' ,
+zh-min:
+grandfathered : 'zh-min' ,
---------------------
-zh-min-nan-Hant-CN:
-language : 'zh' , region : 'MIN' , variant0 : 'NAN' , variant1 : 'HANT' , variant2 : 'CN' ,
+zh-min-nan-Hant-CN:
+language : 'zh' , region : 'MIN' , variant0 : 'NAN' , variant1 : 'HANT' , variant2 : 'CN' ,
---------------------
-qaa-Qaaa-QM-x-southern:
-language : 'qaa' , script : 'Qaaa' , region : 'QM' , private0 : 'southern' ,
+qaa-Qaaa-QM-x-southern:
+language : 'qaa' , script : 'Qaaa' , region : 'QM' , private0 : 'southern' ,
---------------------
-sr-Latn-QM:
-language : 'sr' , script : 'Latn' , region : 'QM' ,
+sr-Latn-QM:
+language : 'sr' , script : 'Latn' , region : 'QM' ,
---------------------
-sr-Qaaa-CS:
-language : 'sr' , script : 'Qaaa' , region : 'CS' ,
+sr-Qaaa-CS:
+language : 'sr' , script : 'Qaaa' , region : 'CS' ,
---------------------
-en-US-u-islamCal:
-language : 'en' , region : 'US' ,
+en-US-u-islamCal:
+language : 'en' , region : 'US' ,
---------------------
-zh-CN-a-myExt-x-private:
-language : 'zh' , region : 'CN' , private0 : 'private' ,
+zh-CN-a-myExt-x-private:
+language : 'zh' , region : 'CN' , private0 : 'private' ,
---------------------
-en-a-myExt-b-another:
-language : 'en' ,
+en-a-myExt-b-another:
+language : 'en' ,
---------------------
-de-419-DE:
-language : 'de' , region : '419' , variant0 : 'DE' ,
+de-419-DE:
+language : 'de' , region : '419' , variant0 : 'DE' ,
---------------------
-a-DE:
+a-DE:
No values found from Locale parsing.
---------------------
-ar-a-aaa-b-bbb-a-ccc:
+ar-a-aaa-b-bbb-a-ccc:
language : 'ar' ,
diff --git a/ext/intl/tests/resourcebundle_arrayaccess.phpt b/ext/intl/tests/resourcebundle_arrayaccess.phpt
index ef2c0a8b9..d035a8d30 100644
--- a/ext/intl/tests/resourcebundle_arrayaccess.phpt
+++ b/ext/intl/tests/resourcebundle_arrayaccess.phpt
@@ -1,5 +1,7 @@
--TEST--
Test ResourceBundle array access and count - existing/missing keys
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
--FILE--
<?php
include "resourcebundle.inc";
diff --git a/ext/intl/tests/resourcebundle_individual.phpt b/ext/intl/tests/resourcebundle_individual.phpt
index 182cbf325..dcbf1f583 100644
--- a/ext/intl/tests/resourcebundle_individual.phpt
+++ b/ext/intl/tests/resourcebundle_individual.phpt
@@ -1,5 +1,7 @@
--TEST--
Test ResourceBundle::get() and length() - existing/missing keys
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
--FILE--
<?php
include "resourcebundle.inc";
diff --git a/ext/intl/tests/resourcebundle_iterator.phpt b/ext/intl/tests/resourcebundle_iterator.phpt
index 31b0768bf..a10b9deb8 100644
--- a/ext/intl/tests/resourcebundle_iterator.phpt
+++ b/ext/intl/tests/resourcebundle_iterator.phpt
@@ -1,5 +1,7 @@
--TEST--
Test ResourceBundle iterator
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
--FILE--
<?php
include "resourcebundle.inc";
diff --git a/ext/json/json.c b/ext/json/json.c
index 56b8e3c3f..4e6753384 100644
--- a/ext/json/json.c
+++ b/ext/json/json.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: json.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: json.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -238,7 +238,7 @@ static void json_encode_array(smart_str *buf, zval **val, int options TSRMLS_DC)
need_comma = 1;
}
- json_escape_string(buf, key, key_len - 1, options TSRMLS_CC);
+ json_escape_string(buf, key, key_len - 1, options & ~PHP_JSON_NUMERIC_CHECK TSRMLS_CC);
smart_str_appendc(buf, ':');
php_json_encode(buf, *data, options TSRMLS_CC);
diff --git a/ext/json/php_json.h b/ext/json/php_json.h
index beb6423da..4b5bc5135 100644
--- a/ext/json/php_json.h
+++ b/ext/json/php_json.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_json.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_json.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_JSON_H
#define PHP_JSON_H
diff --git a/ext/json/tests/bug55543.phpt b/ext/json/tests/bug55543.phpt
new file mode 100644
index 000000000..8657fe776
--- /dev/null
+++ b/ext/json/tests/bug55543.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #55543 (json_encode() with JSON_NUMERIC_CHECK & numeric string properties)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+$a = new stdClass;
+$a->{"1"} = "5";
+
+var_dump(json_encode($a, JSON_NUMERIC_CHECK));
+?>
+--EXPECT--
+string(7) "{"1":5}"
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index 599afccca..ba3d0c13c 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -23,7 +23,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ldap.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: ldap.c 321634 2012-01-01 13:15:04Z felipe $ */
#define IS_EXT_MODULE
#ifdef HAVE_CONFIG_H
@@ -226,7 +226,7 @@ PHP_MINFO_FUNCTION(ldap)
php_info_print_table_start();
php_info_print_table_row(2, "LDAP Support", "enabled");
- php_info_print_table_row(2, "RCS Version", "$Id: ldap.c 313665 2011-07-25 11:42:53Z felipe $");
+ php_info_print_table_row(2, "RCS Version", "$Id: ldap.c 321634 2012-01-01 13:15:04Z felipe $");
if (LDAPG(max_links) == -1) {
snprintf(tmp, 31, "%ld/unlimited", LDAPG(num_links));
diff --git a/ext/ldap/php_ldap.h b/ext/ldap/php_ldap.h
index 4a2669fd7..9ad5366af 100644
--- a/ext/ldap/php_ldap.h
+++ b/ext/ldap/php_ldap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ldap.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ldap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_LDAP_H
#define PHP_LDAP_H
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index ea07e8878..3aef65f4e 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: libxml.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: libxml.c 321634 2012-01-01 13:15:04Z felipe $ */
#define IS_EXT_MODULE
@@ -228,9 +228,9 @@ static void php_libxml_node_free_list(xmlNodePtr node TSRMLS_DC)
php_libxml_node_free_list((xmlNodePtr) node->properties TSRMLS_CC);
break;
case XML_ATTRIBUTE_NODE:
- if ((node->doc != NULL) && (((xmlAttrPtr) node)->atype == XML_ATTRIBUTE_ID)) {
- xmlRemoveID(node->doc, (xmlAttrPtr) node);
- }
+ if ((node->doc != NULL) && (((xmlAttrPtr) node)->atype == XML_ATTRIBUTE_ID)) {
+ xmlRemoveID(node->doc, (xmlAttrPtr) node);
+ }
case XML_ATTRIBUTE_DECL:
case XML_DTD_NODE:
case XML_DOCUMENT_TYPE_NODE:
diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h
index d91a7ed56..36ec885fe 100644
--- a/ext/libxml/php_libxml.h
+++ b/ext/libxml/php_libxml.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_libxml.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_libxml.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_LIBXML_H
#define PHP_LIBXML_H
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c
index 34e33644b..8f2c8bb14 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c
@@ -2702,6 +2702,53 @@ collector_decode_htmlnumericentity(int c, void *data)
return c;
}
+int mbfl_filt_decode_htmlnumericentity_flush(mbfl_convert_filter *filter)
+{
+ struct collector_htmlnumericentity_data *pc = (struct collector_htmlnumericentity_data *)filter;
+ int n, s, r, d;
+
+ if (pc->status) {
+ switch (pc->status) {
+ case 1: /* '&' */
+ (*pc->decoder->filter_function)(0x26, pc->decoder); /* '&' */
+ break;
+ case 2: /* '#' */
+ (*pc->decoder->filter_function)(0x26, pc->decoder); /* '&' */
+ (*pc->decoder->filter_function)(0x23, pc->decoder); /* '#' */
+ break;
+ case 3: /* '0'-'9' */
+ (*pc->decoder->filter_function)(0x26, pc->decoder); /* '&' */
+ (*pc->decoder->filter_function)(0x23, pc->decoder); /* '#' */
+
+ s = pc->cache;
+ r = 1;
+ n = pc->digit;
+ while (n > 0) {
+ r *= 10;
+ n--;
+ }
+ s %= r;
+ r /= 10;
+ while (r > 0) {
+ d = s/r;
+ s %= r;
+ r /= 10;
+ (*pc->decoder->filter_function)(mbfl_hexchar_table[d], pc->decoder);
+ }
+
+ break;
+ default:
+ break;
+ }
+ }
+
+ pc->status = 0;
+ pc->cache = 0;
+ pc->digit = 0;
+
+ return 0;
+}
+
mbfl_string *
mbfl_html_numeric_entity(
mbfl_string *string,
@@ -2739,7 +2786,8 @@ mbfl_html_numeric_entity(
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
- collector_decode_htmlnumericentity, 0, &pc);
+ collector_decode_htmlnumericentity,
+ (int (*)(void*))mbfl_filt_decode_htmlnumericentity_flush, &pc);
}
if (pc.decoder == NULL || encoder == NULL) {
mbfl_convert_filter_delete(encoder);
diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c
index b6a681a59..70fbbb4e0 100644
--- a/ext/mbstring/mb_gpc.c
+++ b/ext/mbstring/mb_gpc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mb_gpc.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mb_gpc.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes */
#ifdef HAVE_CONFIG_H
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 7520ee171..51ff3fd6f 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: mbstring.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
* PHP 4 Multibyte String module "mbstring"
@@ -3017,7 +3017,7 @@ PHP_FUNCTION(mb_detect_encoding)
/* make encoding list */
list = NULL;
size = 0;
- if (ZEND_NUM_ARGS() >= 2 && Z_STRVAL_P(encoding_list)) {
+ if (ZEND_NUM_ARGS() >= 2 && !ZVAL_IS_NULL(encoding_list)) {
switch (Z_TYPE_P(encoding_list)) {
case IS_ARRAY:
if (!php_mb_parse_encoding_array(encoding_list, &list, &size, 0 TSRMLS_CC)) {
diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h
index ac5b35a9c..173bb6c44 100644
--- a/ext/mbstring/mbstring.h
+++ b/ext/mbstring/mbstring.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mbstring.h 321634 2012-01-01 13:15:04Z felipe $ */
/*
* PHP 4 Multibyte String module "mbstring" (currently only for Japanese)
diff --git a/ext/mbstring/oniguruma/regparse.c b/ext/mbstring/oniguruma/regparse.c
index af5c8593e..abf2cc1cb 100644
--- a/ext/mbstring/oniguruma/regparse.c
+++ b/ext/mbstring/oniguruma/regparse.c
@@ -4980,6 +4980,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
CCLASS_SET_SHARE(&(NCCLASS(*np)));
new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key));
+ xmemcpy(new_key, &key, sizeof(type_cclass_key));
onig_st_add_direct(OnigTypeCClassTable, (st_data_t )new_key,
(st_data_t )*np);
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index 66dda4bcb..8c2fd7abd 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mbregex.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mbregex.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
@@ -1245,14 +1245,19 @@ PHP_FUNCTION(mb_ereg_search_init)
{
size_t argc = ZEND_NUM_ARGS();
zval *arg_str;
- char *arg_pattern, *arg_options;
- int arg_pattern_len, arg_options_len;
+ char *arg_pattern = NULL, *arg_options = NULL;
+ int arg_pattern_len = 0, arg_options_len = 0;
OnigSyntaxType *syntax = NULL;
OnigOptionType option;
if (zend_parse_parameters(argc TSRMLS_CC, "z|ss", &arg_str, &arg_pattern, &arg_pattern_len, &arg_options, &arg_options_len) == FAILURE) {
return;
}
+
+ if (argc > 1 && arg_pattern_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty pattern");
+ RETURN_FALSE;
+ }
option = MBREX(regex_default_options);
syntax = MBREX(regex_default_syntax);
diff --git a/ext/mbstring/php_mbregex.h b/ext/mbstring/php_mbregex.h
index 9819b7c79..2fac06e35 100644
--- a/ext/mbstring/php_mbregex.h
+++ b/ext/mbstring/php_mbregex.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mbregex.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mbregex.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef _PHP_MBREGEX_H
#define _PHP_MBREGEX_H
diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c
index cb04e55d2..99430d1aa 100644
--- a/ext/mbstring/php_unicode.c
+++ b/ext/mbstring/php_unicode.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mbstring/php_unicode.h b/ext/mbstring/php_unicode.h
index 2b64f973e..015073afd 100644
--- a/ext/mbstring/php_unicode.h
+++ b/ext/mbstring/php_unicode.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mbstring/tests/bug40685.phpt b/ext/mbstring/tests/bug40685.phpt
new file mode 100644
index 000000000..420b916bc
--- /dev/null
+++ b/ext/mbstring/tests/bug40685.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #40685 (mb_decode_numericentity() removes '&' in the string)
+--SKIPIF--
+<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+--FILE--
+<?php
+$map = array(0, 0x10FFFF, 0, 0xFFFFFF);
+var_dump(mb_decode_numericentity('&', $map, 'UTF-8'));
+var_dump(mb_decode_numericentity('&&&', $map, 'UTF-8'));
+var_dump(mb_decode_numericentity('&#', $map, 'UTF-8'));
+var_dump(mb_decode_numericentity('&#61', $map, 'UTF-8'));
+var_dump(mb_decode_numericentity('&#61;', $map, 'UTF-8'));
+?>
+--EXPECTF--
+string(1) "&"
+string(3) "&&&"
+string(2) "&#"
+string(4) "&#61"
+string(1) "="
+
diff --git a/ext/mbstring/tests/bug52931.phpt b/ext/mbstring/tests/bug52931.phpt
index 9669d884c..52efd03de 100644
--- a/ext/mbstring/tests/bug52931.phpt
+++ b/ext/mbstring/tests/bug52931.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #52931 (strripos not overloaded with function overloading enabled)
+--SKIPIF--
+<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
--INI--
mbstring.func_overload = 7
mbstring.internal_encoding = utf-8
diff --git a/ext/mbstring/tests/empty_pattern.phpt b/ext/mbstring/tests/empty_pattern.phpt
new file mode 100644
index 000000000..e395604f8
--- /dev/null
+++ b/ext/mbstring/tests/empty_pattern.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Check for empty pattern
+--SKIPIF--
+<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+--FILE--
+<?php
+
+mb_ereg_search_init("","","");
+mb_split("","");
+mb_ereg_search_regs();
+
+?>
+--EXPECTF--
+Warning: mb_ereg_search_init(): Empty pattern in %s on line %d
+
+Warning: mb_split(): Empty regular expression in %s on line %d
+
+Warning: mb_ereg_search_regs(): No regex given in %s on line %d
diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c
index 7e8ef0df9..2b966a18f 100644
--- a/ext/mcrypt/mcrypt.c
+++ b/ext/mcrypt/mcrypt.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
| Derick Rethans <derick@derickrethans.nl> |
+----------------------------------------------------------------------+
*/
-/* $Id: mcrypt.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: mcrypt.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/mcrypt/mcrypt_filter.c b/ext/mcrypt/mcrypt_filter.c
index 3a4ea1557..ba7ac76a7 100644
--- a/ext/mcrypt/mcrypt_filter.c
+++ b/ext/mcrypt/mcrypt_filter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
- $Id: mcrypt_filter.c 306939 2011-01-01 02:19:59Z felipe $
+ $Id: mcrypt_filter.c 321634 2012-01-01 13:15:04Z felipe $
*/
#include "php.h"
diff --git a/ext/mcrypt/php_mcrypt.h b/ext/mcrypt/php_mcrypt.h
index 30466afb7..3481544df 100644
--- a/ext/mcrypt/php_mcrypt.h
+++ b/ext/mcrypt/php_mcrypt.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
| Derick Rethans <derick@derickrethans.nl> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_mcrypt.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mcrypt.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MCRYPT_H
#define PHP_MCRYPT_H
diff --git a/ext/mcrypt/php_mcrypt_filter.h b/ext/mcrypt/php_mcrypt_filter.h
index 38cefebf4..7843c81ee 100644
--- a/ext/mcrypt/php_mcrypt_filter.h
+++ b/ext/mcrypt/php_mcrypt_filter.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
- $Id: php_mcrypt_filter.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_mcrypt_filter.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_MCRYPT_FILTER_H
diff --git a/ext/mcrypt/tests/bug43143.phpt b/ext/mcrypt/tests/bug43143.phpt
index 4c390439e..d9fccf3c8 100644
--- a/ext/mcrypt/tests/bug43143.phpt
+++ b/ext/mcrypt/tests/bug43143.phpt
@@ -1,7 +1,8 @@
--TEST--
Bug #43143 (Warning about empty IV with MCRYPT_MODE_ECB)
--SKIPIF--
-<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
+<?php if (!extension_loaded("mcrypt")) print "skip";
+if (!extension_loaded("hash")) print "skip"; ?>
--FILE--
<?php
echo "ECB\n";
diff --git a/ext/mcrypt/tests/bug46010.phpt b/ext/mcrypt/tests/bug46010.phpt
index bacfb5975..ddb691e36 100644
--- a/ext/mcrypt/tests/bug46010.phpt
+++ b/ext/mcrypt/tests/bug46010.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #46010 (warnings incorrectly generated for iv in ecb mode)
+--SKIPIF--
+<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/mcrypt/tests/bug55169.phpt b/ext/mcrypt/tests/bug55169.phpt
index 7bddd5087..bebcd675c 100644
--- a/ext/mcrypt/tests/bug55169.phpt
+++ b/ext/mcrypt/tests/bug55169.phpt
@@ -1,8 +1,9 @@
--TEST--
-mcrypt_create_iv
-https://bugs.php.net/bug.php?id=55169
+mcrypt_create_iv https://bugs.php.net/bug.php?id=55169
--CREDIT--
Ryan Biesemeyer <ryan@yaauie.com>
+--SKIPIF--
+<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
--FILE--
<?php
for( $i=1; $i<=64; $i = $i*2 ){
diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c
index 8f2272fa4..dce38b285 100644
--- a/ext/mssql/php_mssql.c
+++ b/ext/mssql/php_mssql.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mssql.c 313835 2011-07-28 11:01:04Z pajoye $ */
+/* $Id: php_mssql.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef COMPILE_DL_MSSQL
#define HAVE_MSSQL 1
diff --git a/ext/mssql/php_mssql.h b/ext/mssql/php_mssql.h
index 9c49fa537..f1ac18fdf 100644
--- a/ext/mssql/php_mssql.h
+++ b/ext/mssql/php_mssql.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
*/
-/* $Id: php_mssql.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mssql.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MSSQL_H
#define PHP_MSSQL_H
@@ -26,6 +26,11 @@
#if HAVE_MSSQL
#define MSDBLIB
+/* FreeTDS checks for PHP_MSSQL_API for avoid type redefinition */
+#ifdef HAVE_FREETDS
+#define PHP_MSSQL_API
+#endif
+
#include <sqlfront.h>
#include <sqldb.h>
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index c6cb10a81..6d2c91198 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mysql.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: php_mysql.c 321634 2012-01-01 13:15:04Z felipe $ */
/* TODO:
*
@@ -1588,6 +1588,7 @@ PHP_FUNCTION(mysql_list_dbs)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");
RETURN_FALSE;
}
+ MySG(result_allocated)++;
ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
}
/* }}} */
@@ -1625,6 +1626,7 @@ PHP_FUNCTION(mysql_list_tables)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");
RETURN_FALSE;
}
+ MySG(result_allocated)++;
ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
}
/* }}} */
@@ -1662,6 +1664,7 @@ PHP_FUNCTION(mysql_list_fields)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");
RETURN_FALSE;
}
+ MySG(result_allocated)++;
ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
}
/* }}} */
@@ -1694,6 +1697,7 @@ PHP_FUNCTION(mysql_list_processes)
RETURN_FALSE;
}
+ MySG(result_allocated)++;
ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);
}
/* }}} */
diff --git a/ext/mysql/php_mysql.h b/ext/mysql/php_mysql.h
index 0dbdc53bc..e2aca90fb 100644
--- a/ext/mysql/php_mysql.h
+++ b/ext/mysql/php_mysql.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
*/
-/* $Id: php_mysql.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mysql.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MYSQL_H
#define PHP_MYSQL_H
diff --git a/ext/mysql/php_mysql_structs.h b/ext/mysql/php_mysql_structs.h
index 89819fbaa..47a75172c 100644
--- a/ext/mysql/php_mysql_structs.h
+++ b/ext/mysql/php_mysql_structs.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
*/
-/* $Id: php_mysql_structs.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mysql_structs.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MYSQL_STRUCTS_H
#define PHP_MYSQL_STRUCTS_H
diff --git a/ext/mysql/tests/001.phpt b/ext/mysql/tests/001.phpt
index 6f2e284de..72b661477 100755
--- a/ext/mysql/tests/001.phpt
+++ b/ext/mysql/tests/001.phpt
@@ -1,7 +1,10 @@
--TEST--
mysql connect
--SKIPIF--
-<?php include 'skipif.inc'; ?>
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
--FILE--
<?php
require_once('connect.inc');
diff --git a/ext/mysql/tests/bug53649.phpt b/ext/mysql/tests/bug53649.phpt
index 126f34b73..70bf9bed3 100644
--- a/ext/mysql/tests/bug53649.phpt
+++ b/ext/mysql/tests/bug53649.phpt
@@ -4,28 +4,46 @@ Bug #53649 (mysql_query with "load data" unable to save result set)
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
+
+if (!$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket)) {
+ die(sprintf("skip Connect failed, [%d] %s\n", mysqlerrno(), mysqli_error()));
+}
+
+if (!mysql_query("DROP TABLE IF EXISTS test", $link) ||
+ !mysql_query("CREATE TABLE test (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine, $link))
+ die(sprintf("skip [%d] %s\n", mysql_errno($link), mysql_error($link)));
+
+if (false === file_put_contents('bug53649.data', "1\n2\n3\n"))
+ die(sprintf("skip Failed to create data file\n"));
+
+if (!mysql_query("LOAD DATA LOCAL INFILE 'bug53649.data' INTO TABLE test", $link) &&
+ 1148 == mysql_errno($link))
+ die("skip LOAD DATA LOAD INFILE not allowed\n");
?>
--FILE--
<?php
require_once("connect.inc");
if (!$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket)) {
- printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ printf("[001] Connect failed, [%d] %s\n", mysqlerrno(), mysqli_error());
}
- if (!mysql_query("DROP TABLE IF EXISTS tlocaldata", $link)) {
- printf("[002] [%d] %s\n", $link->errno, $link->error);
+ if (!mysql_query("DROP TABLE IF EXISTS test", $link)) {
+ printf("[002] [%d] %s\n", mysql_errno($link), mysql_error($link));
}
- if (!mysql_query("CREATE TABLE tlocaldata (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine, $link)) {
- printf("[003] [%d] %s\n", $link->errno, $link->error);
+ if (!mysql_query("CREATE TABLE test (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine, $link)) {
+ printf("[003] [%d] %s\n", mysql_errno($link), mysql_error($link));
}
- file_put_contents('bug53649.data', "1\n2\n3\n");
+ if (false === file_put_contents('bug53649.data', "1\n2\n3\n"))
+ printf("[004] Failed to create data file\n");
- mysql_query("SELECT 1 FROM DUAL", $link);
+ if (!mysql_query("SELECT 1 FROM DUAL", $link))
+ printf("[005] [%d] %s\n", mysql_errno($link), mysql_error($link));
- if (!mysql_query("LOAD DATA LOCAL INFILE 'bug53649.data' INTO TABLE tlocaldata", $link)) {
+ if (!mysql_query("LOAD DATA LOCAL INFILE 'bug53649.data' INTO TABLE test", $link)) {
+ printf("[006] [%d] %s\n", mysql_errno($link), mysql_error($link));
echo "bug";
} else {
echo "done";
@@ -41,7 +59,7 @@ if (!$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket)) {
$host, $user, $db, $port, $socket);
}
-if (!mysql_query($link, 'DROP TABLE IF EXISTS tlocaldata', $link)) {
+if (!mysql_query($link, 'DROP TABLE IF EXISTS test', $link)) {
printf("[clean] Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
}
diff --git a/ext/mysql/tests/bug55473.phpt b/ext/mysql/tests/bug55473.phpt
new file mode 100644
index 000000000..df584bdef
--- /dev/null
+++ b/ext/mysql/tests/bug55473.phpt
@@ -0,0 +1,79 @@
+--TEST--
+Bug #5547 (mysql_pconnect leaks file descriptors on reconnect)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
+ die("skip Test doesn't work on Windows");
+}
+
+if (!($output = @exec("lsof -np " . getmypid())))
+ die("skip Test can't find command line tool lsof");
+?>
+--INI--
+mysql.max_persistent=30
+mysql.allow_persistent=1
+--FILE--
+<?php
+ include "connect.inc";
+
+ $tmp = NULL;
+ $link = NULL;
+
+ if ($socket)
+ $host = sprintf("%s:%s", $host, $socket);
+ else if ($port)
+ $host = sprintf("%s:%s", $host, $port);
+
+ function connect($host, $user, $passwd) {
+ $conn = mysql_pconnect($host, $user, $passwd);
+
+ if (!$conn)
+ die(sprintf("[001] %s\n", mysql_error()));
+
+ if (!mysql_query("set wait_timeout=1", $conn))
+ printf("[002] [%d] %s\n", mysql_errno($conn), mysql_error($conn));
+
+ return $conn;
+ }
+
+ $conn = connect($host, $user, $passwd);
+ $opened_files = -1;
+
+ for ($i = 0; $i < 4; $i++) {
+ /* wait while mysql closes connection */
+ sleep(3);
+
+ if (!mysql_ping($conn)) {
+ printf("[003] reconnect %d\n", $i);
+ $conn = connect($host, $user, $passwd);
+ }
+
+ $r = mysql_query('select 1', $conn);
+ if (!$r)
+ printf("[004] [%d] %s\n", mysql_errno($conn), mysql_error($conn));
+
+
+ if ($opened_files == -1) {
+ $opened_files = trim(exec("lsof -np " . getmypid() . " | wc -l"));
+ printf("[005] Setting openened files...\n");
+ } else if (($tmp = trim(exec("lsof -np " . getmypid() . " | wc -l"))) != $opened_files) {
+ printf("[006] [%d] different number of opened_files : expected %d, got %d", $i, $opened_files, $tmp);
+ } else {
+ printf("[007] Opened files as expected\n");
+ }
+ }
+
+ print "done!";
+?>
+--EXPECTF--
+[003] reconnect 0
+[005] Setting openened files...
+[003] reconnect 1
+[007] Opened files as expected
+[003] reconnect 2
+[007] Opened files as expected
+[003] reconnect 3
+[007] Opened files as expected
+done! \ No newline at end of file
diff --git a/ext/mysql/tests/connect.inc b/ext/mysql/tests/connect.inc
index 97fed4214..0df5bc3aa 100755
--- a/ext/mysql/tests/connect.inc
+++ b/ext/mysql/tests/connect.inc
@@ -64,13 +64,14 @@ $host = getenv("MYSQL_TEST_HOST") ? getenv("MYSQL_TEST_HOST") : "localhost";
$port = getenv("MYSQL_TEST_PORT") ? getenv("MYSQL_TEST_PORT") : 3306;
$user = getenv("MYSQL_TEST_USER") ? getenv("MYSQL_TEST_USER") : "root";
$passwd = getenv("MYSQL_TEST_PASSWD") ? getenv("MYSQL_TEST_PASSWD") : "";
+
$db = getenv("MYSQL_TEST_DB") ? getenv("MYSQL_TEST_DB") : "test";
$engine = getenv("MYSQL_TEST_ENGINE") ? getenv("MYSQL_TEST_ENGINE") : "MyISAM";
$socket = getenv("MYSQL_TEST_SOCKET") ? getenv("MYSQL_TEST_SOCKET") : null;
$skip_on_connect_failure = getenv("MYSQL_TEST_SKIP_CONNECT_FAILURE") ? getenv("MYSQL_TEST_SKIP_CONNECT_FAILURE") : true;
$connect_flags = getenv("MYSQL_TEST_CONNECT_FLAGS") ? (int)getenv("MYSQL_TEST_CONNECT_FLAGS") : 0;
if ($socket) {
- ini_set('mysql.default_user', $socket);
+ ini_set('mysql.default_socket', $socket);
}
/* Development setting: test experimal features and/or feature requests that never worked before? */
$TEST_EXPERIMENTAL = (in_array(getenv("MYSQL_TEST_EXPERIMENTAL"), array(0, 1))) ?
@@ -78,4 +79,4 @@ $TEST_EXPERIMENTAL = (in_array(getenv("MYSQL_TEST_EXPERIMENTAL"), array(0, 1)))
false;
$IS_MYSQLND = stristr(mysql_get_client_info(), "mysqlnd");
-?> \ No newline at end of file
+?>
diff --git a/ext/mysql/tests/mysql_affected_rows.phpt b/ext/mysql/tests/mysql_affected_rows.phpt
index ce16a7748..145e1f5c0 100644
--- a/ext/mysql/tests/mysql_affected_rows.phpt
+++ b/ext/mysql/tests/mysql_affected_rows.phpt
@@ -4,11 +4,11 @@ mysql_affected_rows()
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
-require_once('skipifdefaultconnectfailure.inc');
?>
--FILE--
<?php
include_once("connect.inc");
+include_once('setupdefault.inc');
$tmp = NULL;
$link = NULL;
diff --git a/ext/mysql/tests/mysql_connect.phpt b/ext/mysql/tests/mysql_connect.phpt
index 773264e5a..715824804 100644
--- a/ext/mysql/tests/mysql_connect.phpt
+++ b/ext/mysql/tests/mysql_connect.phpt
@@ -1,7 +1,10 @@
--TEST--
mysql_connect()
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
--FILE--
<?php
include_once "connect.inc";
diff --git a/ext/mysql/tests/mysql_insert_id.phpt b/ext/mysql/tests/mysql_insert_id.phpt
index 678245c2c..460d9f3f4 100644
--- a/ext/mysql/tests/mysql_insert_id.phpt
+++ b/ext/mysql/tests/mysql_insert_id.phpt
@@ -4,11 +4,11 @@ mysql_insert_id()
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
-require_once('skipifdefaultconnectfailure.inc');
?>
--FILE--
<?php
include "connect.inc";
+include 'setupdefault.inc';
$tmp = NULL;
$link = NULL;
diff --git a/ext/mysql/tests/mysql_max_links.phpt b/ext/mysql/tests/mysql_max_links.phpt
index fbe3ae003..52ecd0ac0 100644
--- a/ext/mysql/tests/mysql_max_links.phpt
+++ b/ext/mysql/tests/mysql_max_links.phpt
@@ -3,6 +3,7 @@ mysql_[p]connect() - max_links/max_persistent
--SKIPIF--
<?php
require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
?>
--INI--
mysql.max_links=2
diff --git a/ext/mysql/tests/mysql_num_rows.phpt b/ext/mysql/tests/mysql_num_rows.phpt
index 1f68b4d60..0f538c4a2 100644
--- a/ext/mysql/tests/mysql_num_rows.phpt
+++ b/ext/mysql/tests/mysql_num_rows.phpt
@@ -54,6 +54,23 @@ if ($res = mysql_query('SELECT COUNT(id) AS num FROM test', $link)) {
printf("[030] [%d] %s\n", mysql_errno($link), mysql_error($link));
}
+if ($res = mysql_unbuffered_query('SELECT id, label FROM test')) {
+
+ if (0 != mysql_num_rows($res))
+ printf("[032] Expecting 0 rows got %d\n", mysql_num_rows($res));
+
+ $rows = 0;
+ while ($row = mysql_fetch_assoc($res))
+ $rows++;
+
+ if ($rows != mysql_num_rows($res))
+ printf("[033] Expecting %d rows got %d\n", $rows, mysql_num_rows($res));
+
+ mysql_free_result($res);
+} else {
+ printf("[034] [%d] %s\n", mysql_errno($link), mysql_error($link));
+}
+
mysql_close($link);
print "done!";
?>
diff --git a/ext/mysql/tests/mysql_pconn_kill.phpt b/ext/mysql/tests/mysql_pconn_kill.phpt
index 8543e39d6..20dfbe9a1 100755
--- a/ext/mysql/tests/mysql_pconn_kill.phpt
+++ b/ext/mysql/tests/mysql_pconn_kill.phpt
@@ -64,7 +64,9 @@ mysql.max_persistent=2
mysql_close($plink);
- if (!($plink = mysql_pconnect($myhost, $user, $passwd)))
+ /* mysql_pconnect cound generate a warning when linked against mysqlnd
+ PHP Warning: mysql_pconnect(): MySQL server has gone away */
+ if (!($plink = @mysql_pconnect($myhost, $user, $passwd)))
printf("[009] Cannot create new persistent connection, [%d] %s\n", mysql_errno(), mysql_error());
mysql_select_db($db, $plink);
diff --git a/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt b/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt
index ff62f4227..c2685a572 100644
--- a/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt
+++ b/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt
@@ -2,9 +2,15 @@
LOAD DATA INFILE - open_basedir
--SKIPIF--
<?php
-require_once('skipif.inc');
-require_once('skipifconnectfailure.inc');
-require_once("connect.inc");
+@include_once("connect.inc");
+
+if (!isset($db)) {
+ die("skip open_basedir setting prevents inclusing of required files");
+}
+
+include_once('skipif.inc');
+include_once('skipifconnectfailure.inc');
+
if (!$IS_MYSQLND)
die("skip mysqlnd only, libmysql does not know about open_basedir restrictions");
@@ -30,6 +36,7 @@ open_basedir="."
--FILE--
<?php
@include_once("connect.inc");
+
if (!isset($db)) {
// run-tests, I love you for not allowing me to set ini settings dynamically
print "[006] [1148] The used command is not allowed with this MySQL version
diff --git a/ext/mysql/tests/mysql_sql_safe_mode.phpt b/ext/mysql/tests/mysql_sql_safe_mode.phpt
index 6c652fb57..4d8ca92e4 100644
--- a/ext/mysql/tests/mysql_sql_safe_mode.phpt
+++ b/ext/mysql/tests/mysql_sql_safe_mode.phpt
@@ -3,6 +3,7 @@ mysql_[p]connect() - safe_mode
--SKIPIF--
<?php
require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
$link = @mysql_connect("", "", "", true);
if ($link)
die("skip Test cannot be run if annonymous connections are allowed");
diff --git a/ext/mysql/tests/setupdefault.inc b/ext/mysql/tests/setupdefault.inc
new file mode 100644
index 000000000..6d25c2084
--- /dev/null
+++ b/ext/mysql/tests/setupdefault.inc
@@ -0,0 +1,10 @@
+<?php
+
+// copy variables from connect.inc into mysql default connection ini settings, so that implicit mysql_connect() behaviour can be tested where needed
+// must be loaded AFTER connect.inc
+
+ini_set('mysql.default_host', $host);
+ini_set('mysql.default_user', $user);
+ini_set('mysql.default_password', $passwd);
+
+?>
diff --git a/ext/mysql/tests/skipifdefaultconnectfailure.inc b/ext/mysql/tests/skipifdefaultconnectfailure.inc
deleted file mode 100755
index 99f390515..000000000
--- a/ext/mysql/tests/skipifdefaultconnectfailure.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-if ($skip_on_connect_failure) {
- if (!$link = @mysql_connect())
- die(sprintf("skip Can't connect to MySQL Server with default credentials - [%d] %s", mysql_errno(), mysql_error()));
-
- if (!@mysql_select_db($db, $link))
- die(sprintf("skip Can't connect to MySQL Server with default credentials - [%d] %s", mysql_errno(), mysql_error()));
-
- mysql_close($link);
-}
-?>
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 466457d1d..c74e5b42e 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli.c 314376 2011-08-06 14:47:44Z felipe $
+ $Id: mysqli.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 4fb4470e9..9fcbde83d 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_api.c 314116 2011-08-02 15:30:58Z andrey $
+ $Id: mysqli_api.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
@@ -1053,7 +1053,12 @@ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRML
add_property_string(value, "orgtable", (char *) (field->org_table ? field->org_table : ""), 1);
add_property_string(value, "def", (field->def ? field->def : ""), 1);
add_property_string(value, "db", (field->db ? field->db : ""), 1);
- add_property_string(value, "catalog", (field->catalog ? field->catalog : ""), 1);
+
+ /* FIXME: manually set the catalog to "def" due to bug in
+ * libmysqlclient which does not initialize field->catalog
+ * and in addition, the catalog is always be "def"
+ */
+ add_property_string(value, "catalog", "def", 1);
add_property_long(value, "max_length", field->max_length);
add_property_long(value, "length", field->length);
@@ -1608,7 +1613,7 @@ PHP_FUNCTION(mysqli_num_rows)
}
MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
- if (mysqli_result_is_unbuffered(result)) {
+ if (mysqli_result_is_unbuffered_and_not_everything_is_fetched(result)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT");
RETURN_LONG(0);
}
diff --git a/ext/mysqli/mysqli_driver.c b/ext/mysqli/mysqli_driver.c
index fd4698feb..b7227bb3c 100644
--- a/ext/mysqli/mysqli_driver.c
+++ b/ext/mysqli/mysqli_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -27,7 +27,7 @@
#include "ext/standard/info.h"
#include "php_mysqli_structs.h"
#include "zend_exceptions.h"
-
+#include "mysqli_fe.h"
#define MAP_PROPERTY_MYG_BOOL_READ(name, value) \
static int name(mysqli_object *obj, zval **retval TSRMLS_DC) \
diff --git a/ext/mysqli/mysqli_embedded.c b/ext/mysqli/mysqli_embedded.c
index f5360ae09..acf32424e 100644
--- a/ext/mysqli/mysqli_embedded.c
+++ b/ext/mysqli/mysqli_embedded.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mysqli/mysqli_exception.c b/ext/mysqli/mysqli_exception.c
index 35d66cf41..b2e99227f 100644
--- a/ext/mysqli/mysqli_exception.c
+++ b/ext/mysqli/mysqli_exception.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c
index 8243a1d54..d83002738 100644
--- a/ext/mysqli/mysqli_fe.c
+++ b/ext/mysqli/mysqli_fe.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_fe.c 313665 2011-07-25 11:42:53Z felipe $
+ $Id: mysqli_fe.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
diff --git a/ext/mysqli/mysqli_fe.h b/ext/mysqli/mysqli_fe.h
index 14b8dcbea..ad73eb73e 100644
--- a/ext/mysqli/mysqli_fe.h
+++ b/ext/mysqli/mysqli_fe.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mysqli/mysqli_libmysql.h b/ext/mysqli/mysqli_libmysql.h
index 9fdfd7eb2..65c69bf28 100644
--- a/ext/mysqli/mysqli_libmysql.h
+++ b/ext/mysqli/mysqli_libmysql.h
@@ -29,7 +29,8 @@
#define MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE 200
#define MYSQLND_OPT_INT_AND_YEAR_AS_INT 201
-#define mysqli_result_is_unbuffered(r) ((r)->handle && (r)->handle->status == MYSQL_STATUS_USE_RESULT)
+#define mysqli_result_is_unbuffered(r) ((r)->handle && (r)->handle->status == MYSQL_STATUS_USE_RESULT && (r)->data == NULL)
+#define mysqli_result_is_unbuffered_and_not_everything_is_fetched(r) mysqli_result_is_unbuffered(r)
#define mysqli_server_status(c) (c)->server_status
#define mysqli_stmt_get_id(s) ((s)->stmt_id)
#define mysqli_stmt_warning_count(s) mysql_warning_count((s)->mysql)
diff --git a/ext/mysqli/mysqli_mysqlnd.h b/ext/mysqli/mysqli_mysqlnd.h
index 3072835c5..ce0be63e5 100644
--- a/ext/mysqli/mysqli_mysqlnd.h
+++ b/ext/mysqli/mysqli_mysqlnd.h
@@ -31,6 +31,7 @@
#define MYSQLI_CLOSE_DISCONNECTED MYSQLND_CLOSE_DISCONNECTED
#define mysqli_result_is_unbuffered(r) ((r)->unbuf)
+#define mysqli_result_is_unbuffered_and_not_everything_is_fetched(r) ((r)->unbuf && !(r)->unbuf->eof_reached)
#define mysqli_server_status(c) (c)->upsert_status.server_status
#define mysqli_stmt_get_id(s) ((s)->data->stmt_id)
#define mysqli_stmt_warning_count(s) mysqlnd_stmt_warning_count((s))
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index 8f8401367..893e4a19b 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_nonapi.c 314838 2011-08-12 14:55:00Z andrey $
+ $Id: mysqli_nonapi.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h
index c5f209e41..3a7788dba 100644
--- a/ext/mysqli/mysqli_priv.h
+++ b/ext/mysqli/mysqli_priv.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c
index fcff2c682..4989a57c5 100644
--- a/ext/mysqli/mysqli_prop.c
+++ b/ext/mysqli/mysqli_prop.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_prop.c 306939 2011-01-01 02:19:59Z felipe $
+ $Id: mysqli_prop.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
@@ -202,6 +202,36 @@ MYSQLI_MAP_PROPERTY_FUNC_LONG(link_server_version_read, mysql_get_server_version
MYSQLI_MAP_PROPERTY_FUNC_STRING(link_sqlstate_read, mysql_sqlstate, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID))
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu")
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu")
+
+/* {{{ property link_stat_read */
+static int link_stat_read(mysqli_object *obj, zval **retval TSRMLS_DC)\
+{\
+ MY_MYSQL *mysql;
+
+ MAKE_STD_ZVAL(*retval);
+ ZVAL_NULL(*retval);
+
+ CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
+
+ mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
+
+ if (mysql) {
+ char * stat_msg;
+#if defined(MYSQLI_USE_MYSQLND)
+ uint stat_msg_len;
+ if (mysqlnd_stat(mysql->mysql, &stat_msg, &stat_msg_len) == PASS) {
+ ZVAL_STRINGL(*retval, stat_msg, stat_msg_len, 0);
+ }
+#else
+ if ((stat_msg = (char *) mysql_stat(mysql->mysql))) {
+ ZVAL_STRING(*retval, stat_msg, 1);
+ }
+#endif
+ }
+ return SUCCESS;
+}
+/* }}} */
+
/* result properties */
/* {{{ property result_type_read */
@@ -329,6 +359,7 @@ const mysqli_property_entry mysqli_link_property_entries[] = {
{"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL},
{"server_info", sizeof("server_info") - 1, link_server_info_read, NULL},
{"server_version", sizeof("server_version") - 1, link_server_version_read, NULL},
+ {"stat", sizeof("stat") - 1, link_stat_read, NULL},
{"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL},
{"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL},
{"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL},
@@ -351,6 +382,7 @@ zend_property_info mysqli_link_property_info_entries[] = {
{ZEND_ACC_PUBLIC, "insert_id", sizeof("insert_id") - 1, 0, NULL, 0, NULL},
{ZEND_ACC_PUBLIC, "server_info", sizeof("server_info") - 1, 0, NULL, 0, NULL},
{ZEND_ACC_PUBLIC, "server_version", sizeof("server_version") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "stat", sizeof("stat") - 1, 0, NULL, 0, NULL},
{ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, 0, NULL, 0, NULL},
{ZEND_ACC_PUBLIC, "protocol_version", sizeof("protocol_version")-1, 0, NULL, 0, NULL},
{ZEND_ACC_PUBLIC, "thread_id", sizeof("thread_id") - 1, 0, NULL, 0, NULL},
diff --git a/ext/mysqli/mysqli_report.c b/ext/mysqli/mysqli_report.c
index c44245c51..ca5424aaa 100644
--- a/ext/mysqli/mysqli_report.c
+++ b/ext/mysqli/mysqli_report.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_report.c 306939 2011-01-01 02:19:59Z felipe $
+ $Id: mysqli_report.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
diff --git a/ext/mysqli/mysqli_report.h b/ext/mysqli/mysqli_report.h
index 8e7484a30..c5d7af29f 100644
--- a/ext/mysqli/mysqli_report.h
+++ b/ext/mysqli/mysqli_report.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_report.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: mysqli_report.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef __HAVE_MYSQLI_PROFILER_H__
diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c
index ee815121b..d897a82b8 100644
--- a/ext/mysqli/mysqli_warning.c
+++ b/ext/mysqli/mysqli_warning.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h
index fedc34930..0717021b8 100644
--- a/ext/mysqli/php_mysqli.h
+++ b/ext/mysqli/php_mysqli.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: php_mysqli.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_mysqli.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_MYSQLI_H
diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h
index 61f9184f0..70c591e57 100644
--- a/ext/mysqli/php_mysqli_structs.h
+++ b/ext/mysqli/php_mysqli_structs.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: php_mysqli_structs.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_mysqli_structs.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_MYSQLI_STRUCTS_H
diff --git a/ext/mysqli/tests/004.phpt b/ext/mysqli/tests/004.phpt
index ce222fea4..010d6e196 100644
--- a/ext/mysqli/tests/004.phpt
+++ b/ext/mysqli/tests/004.phpt
@@ -15,24 +15,27 @@ require_once('skipifconnectfailure.inc');
mysqli_select_db($link, $db);
if (!mysqli_query($link,"DROP TABLE IF EXISTS test_bind_fetch"))
- printf("[001] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (!mysqli_query($link,"CREATE TABLE test_bind_fetch(c1 char(10), c2 text) ENGINE=" . $engine))
- printf("[002] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (!mysqli_query($link, "INSERT INTO test_bind_fetch VALUES ('1234567890', 'this is a test0')"))
- printf("[003] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (!mysqli_query($link, "INSERT INTO test_bind_fetch VALUES ('1234567891', 'this is a test1')"))
- printf("[004] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (!mysqli_query($link, "INSERT INTO test_bind_fetch VALUES ('1234567892', 'this is a test2')"))
- printf("[005] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
if (!mysqli_query($link, "INSERT INTO test_bind_fetch VALUES ('1234567893', 'this is a test3')"))
- printf("[006] [%d] string\n", mysqli_errno($link), mysqli_error($link));
+ printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
- $stmt = mysqli_prepare($link, "SELECT * FROM test_bind_fetch ORDER BY c1");
+ if (!$stmt = mysqli_prepare($link, "SELECT * FROM test_bind_fetch ORDER BY c1"))
+ printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ $c1 = $c2 = NULL;
mysqli_stmt_bind_result($stmt, $c1, $c2);
mysqli_stmt_execute($stmt);
$i = 4;
diff --git a/ext/mysqli/tests/014.phpt b/ext/mysqli/tests/014.phpt
index 8fb8cceef..da6a0052c 100644
--- a/ext/mysqli/tests/014.phpt
+++ b/ext/mysqli/tests/014.phpt
@@ -5,19 +5,13 @@ mysqli autocommit/commit/rollback
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
require_once("connect.inc");
+
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
- if (!$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'")) {
- die("skip Cannot check for required InnoDB suppot");
- }
- if (!$row = mysqli_fetch_row($result))
- die("skip Cannot check for required InnoDB suppot");
+ if (!$link)
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
- mysqli_free_result($result);
- mysqli_close($link);
- if ($row[1] == "DISABLED" || $row[1] == "NO") {
- printf ("skip innodb support is not installed or enabled.");
- exit;
- }
+ if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/015.phpt b/ext/mysqli/tests/015.phpt
index c4f693ff1..c671ad68f 100644
--- a/ext/mysqli/tests/015.phpt
+++ b/ext/mysqli/tests/015.phpt
@@ -4,17 +4,13 @@ mysqli autocommit/commit/rollback with innodb
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
- require_once("connect.inc");
- $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
- $result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'");
- $row = mysqli_fetch_row($result);
- mysqli_free_result($result);
- mysqli_close($link);
- if ($row[1] == "DISABLED" || $row[1] == "NO") {
- printf ("skip innodb support is not installed or enabled.");
- exit;
- }
+ require_once('connect.inc');
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+ if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/061.phpt b/ext/mysqli/tests/061.phpt
index 08b4cda25..5817d8230 100644
--- a/ext/mysqli/tests/061.phpt
+++ b/ext/mysqli/tests/061.phpt
@@ -6,6 +6,16 @@ require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
+
+$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
+if (!$link)
+ die(sprintf("skip Can't connect [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
+
+mysqli_close($link);
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/071.phpt b/ext/mysqli/tests/071.phpt
index 38bc46b84..6f4577797 100644
--- a/ext/mysqli/tests/071.phpt
+++ b/ext/mysqli/tests/071.phpt
@@ -22,14 +22,14 @@ require_once('skipifconnectfailure.inc');
}
} else {
/* libmysql return value seems to depend on server version */
- if (($version >= 50123 || $version <= 40200) && $version != 50200) {
+ if ((($version >= 50123) || ($version <= 40200)) && $version != 50200) {
/* TODO: find exact version */
if ($ret !== true){
printf("[001] Expecting boolean/true got %s/%s @\n", gettype($ret), var_export($ret, true), $version);
}
} else {
if ($ret !== false){
- printf("[001] Expecting boolean/false got %s/%s @\n", gettype($ret), var_export($ret, true), $version);
+ printf("[001] Expecting boolean/false got %s/%s @\n", gettype($ret), var_export($ret, true), $version);
}
}
}
@@ -49,7 +49,7 @@ require_once('skipifconnectfailure.inc');
}
} else {
/* libmysql return value seems to depend on server version */
- if (($version >= 50123 || $version <= 40200) && $version != 50200) {
+ if ((($version >= 50123) || ($version <= 40200)) && $version != 50200) {
/* TODO: find exact version */
if ($ret !== true){
printf("[002] Expecting boolean/true got %s/%s @\n", gettype($ret), var_export($ret, true), $version);
diff --git a/ext/mysqli/tests/072.phpt b/ext/mysqli/tests/072.phpt
index 036253a0b..a1e9983bf 100644
--- a/ext/mysqli/tests/072.phpt
+++ b/ext/mysqli/tests/072.phpt
@@ -27,6 +27,6 @@ require_once('skipifconnectfailure.inc');
--EXPECTF--
int(1)
int(1051)
-%unicode|string%(26) "Unknown table 'not_exists'"
+%unicode|string%(%d) "Unknown table %snot_exists%s"
%unicode|string%(5) "HY000"
done! \ No newline at end of file
diff --git a/ext/mysqli/tests/bug34810.phpt b/ext/mysqli/tests/bug34810.phpt
index 35eb71753..f97550618 100644
--- a/ext/mysqli/tests/bug34810.phpt
+++ b/ext/mysqli/tests/bug34810.phpt
@@ -89,6 +89,8 @@ object(mysqli)#%d (%d) {
%unicode|string%(%d) "%s"
[%u|b%"server_version"]=>
int(%d)
+ ["stat"]=>
+ %s
[%u|b%"sqlstate"]=>
%unicode|string%(5) "00000"
[%u|b%"protocol_version"]=>
@@ -125,6 +127,8 @@ object(mysqli)#%d (%d) {
NULL
[%u|b%"server_version"]=>
NULL
+ ["stat"]=>
+ NULL
[%u|b%"sqlstate"]=>
NULL
[%u|b%"protocol_version"]=>
diff --git a/ext/mysqli/tests/bug45289.phpt b/ext/mysqli/tests/bug45289.phpt
index 50775b55c..2ddacf4fd 100644
--- a/ext/mysqli/tests/bug45289.phpt
+++ b/ext/mysqli/tests/bug45289.phpt
@@ -37,4 +37,4 @@ require_once('skipifconnectfailure.inc');
require_once("clean_table.inc");
?>
--EXPECTF--
-[004] [0%s
+[004] [%s
diff --git a/ext/mysqli/tests/bug49442.phpt b/ext/mysqli/tests/bug49442.phpt
index 5323a28ed..54267451e 100644
--- a/ext/mysqli/tests/bug49442.phpt
+++ b/ext/mysqli/tests/bug49442.phpt
@@ -4,6 +4,17 @@ Bug #49422 (mysqlnd: mysqli_real_connect() and LOAD DATA INFILE crash)
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
+
+$link = mysqli_init();
+if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) {
+ die(sprintf("skip Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));
+}
+
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
+
+mysqli_close($link);
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/bug51647.phpt b/ext/mysqli/tests/bug51647.phpt
index 833f8edbb..b1c1e87a7 100644
--- a/ext/mysqli/tests/bug51647.phpt
+++ b/ext/mysqli/tests/bug51647.phpt
@@ -4,6 +4,35 @@ Bug #51647 (Certificate file without private key (pk in another file) doesn't wo
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
+require_once("connect.inc");
+
+if ($IS_MYSQLND && !extension_loaded("openssl"))
+ die("skip PHP streams lack support for SSL. mysqli is compiled to use mysqlnd which uses PHP streams in turn.");
+
+if (!($link = @my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)))
+ die(sprintf("skip Connect failed, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+$row = NULL;
+if ($res = $link->query('SHOW VARIABLES LIKE "have_ssl"')) {
+ $row = $res->fetch_row();
+} else {
+ if ($link->errno == 1064 && ($res = $link->query("SHOW VARIABLES"))) {
+ while ($row = $res->fetch_row())
+ if ($row[0] == 'have_ssl')
+ break;
+ } else {
+ die(sprintf("skip Failed to test for MySQL SSL support, [%d] %s", $link->errno, $link->error));
+ }
+}
+
+
+if (empty($row))
+ die(sprintf("skip Failed to test for MySQL SSL support, [%d] %s", $link->errno, $link->error));
+
+if ($row[1] == 'NO')
+ die(sprintf("skip MySQL has no SSL support, [%d] %s", $link->errno, $link->error));
+
+$link->close();
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/bug53503.phpt b/ext/mysqli/tests/bug53503.phpt
index 6b705524e..339fce7a8 100644
--- a/ext/mysqli/tests/bug53503.phpt
+++ b/ext/mysqli/tests/bug53503.phpt
@@ -4,6 +4,16 @@ Bug #53503 (mysqli::query returns false after successful LOAD DATA query)
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
+
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die("skip Cannot connect to MySQL");
+
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
+
+mysqli_close($link);
+
?>
--FILE--
<?php
@@ -13,19 +23,22 @@ require_once('skipifconnectfailure.inc');
printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
}
- if (!$link->query("DROP TABLE IF EXISTS tlocaldata")) {
+ if (!$link->query("DROP TABLE IF EXISTS test")) {
printf("[002] [%d] %s\n", $link->errno, $link->error);
}
- if (!$link->query("CREATE TABLE tlocaldata (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine)) {
+ if (!$link->query("CREATE TABLE test (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine)) {
printf("[003] [%d] %s\n", $link->errno, $link->error);
}
- file_put_contents('bug53503.data', "1\n2\n3\n");
+ if (FALSE == file_put_contents('bug53503.data', "1\n2\n3\n"))
+ printf("[004] Failed to create CVS file\n");
- $link->query("SELECT 1 FROM DUAL");
+ if (!$link->query("SELECT 1 FROM DUAL"))
+ printf("[005] [%d] %s\n", $link->errno, $link->error);
- if (!$link->query("LOAD DATA LOCAL INFILE 'bug53503.data' INTO TABLE tlocaldata")) {
+ if (!$link->query("LOAD DATA LOCAL INFILE 'bug53503.data' INTO TABLE test")) {
+ printf("[006] [%d] %s\n", $link->errno, $link->error);
echo "bug";
} else {
echo "done";
@@ -41,7 +54,7 @@ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
$host, $user, $db, $port, $socket);
}
-if (!$link->query($link, 'DROP TABLE IF EXISTS tlocaldata')) {
+if (!$link->query($link, 'DROP TABLE IF EXISTS test')) {
printf("[clean] Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
}
diff --git a/ext/mysqli/tests/bug55283.phpt b/ext/mysqli/tests/bug55283.phpt
index 0611c773c..6000fce0a 100644
--- a/ext/mysqli/tests/bug55283.phpt
+++ b/ext/mysqli/tests/bug55283.phpt
@@ -4,15 +4,35 @@ Bug #55283 (SSL options set by mysqli_ssl_set ignored for MySQLi persistent conn
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
-$link = mysqli_init();
-mysqli_ssl_set($link, null, null, null, null, "RC4-MD5");
-if (my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, null, $flags)) {
- $res = $link->query("SHOW STATUS LIKE 'Ssl_cipher'");
+require_once("connect.inc");
+
+if ($IS_MYSQLND && !extension_loaded("openssl"))
+ die("skip PHP streams lack support for SSL. mysqli is compiled to use mysqlnd which uses PHP streams in turn.");
+
+if (!($link = @my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)))
+ die(sprintf("skip Connect failed, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+$row = NULL;
+if ($res = $link->query('SHOW VARIABLES LIKE "have_ssl"')) {
$row = $res->fetch_row();
- if ($row[1] === "") {
- die('skip Server started without SSL support');
+} else {
+ if ($link->errno == 1064 && ($res = $link->query("SHOW VARIABLES"))) {
+ while ($row = $res->fetch_row())
+ if ($row[0] == 'have_ssl')
+ break;
+ } else {
+ die(sprintf("skip Failed to test for MySQL SSL support, [%d] %s", $link->errno, $link->error));
}
}
+
+
+if (empty($row))
+ die(sprintf("skip Failed to test for MySQL SSL support, [%d] %s", $link->errno, $link->error));
+
+if ($row[1] == 'NO')
+ die(sprintf("skip MySQL has no SSL support, [%d] %s", $link->errno, $link->error));
+
+$link->close();
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/bug55582.phpt b/ext/mysqli/tests/bug55582.phpt
new file mode 100644
index 000000000..85fc7f6ce
--- /dev/null
+++ b/ext/mysqli/tests/bug55582.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Bug #55582 mysqli_num_rows() returns always 0 for unbuffered, when mysqlnd is used
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+require_once("connect.inc");
+?>
+--FILE--
+<?php
+ include "connect.inc";
+ if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))) {
+ printf("[001] Cannot connect to the server");
+ }
+
+ var_dump($link->real_query("SELECT 1"));
+ $res = $link->use_result();
+ var_dump(mysqli_num_rows($res));
+ var_dump($res->fetch_assoc());
+ var_dump(mysqli_num_rows($res));
+ var_dump($res->fetch_assoc());
+ var_dump(mysqli_num_rows($res));
+
+ $link->close();
+ echo "done\n";
+?>
+--EXPECTF--
+bool(true)
+
+Warning: mysqli_num_rows(): Function cannot be used with MYSQL_USE_RESULT in %s on line %d
+int(0)
+array(1) {
+ [1]=>
+ string(1) "1"
+}
+
+Warning: mysqli_num_rows(): Function cannot be used with MYSQL_USE_RESULT in %s on line %d
+int(0)
+NULL
+int(1)
+done \ No newline at end of file
diff --git a/ext/mysqli/tests/bug55653.phpt b/ext/mysqli/tests/bug55653.phpt
new file mode 100644
index 000000000..f9cd297eb
--- /dev/null
+++ b/ext/mysqli/tests/bug55653.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Bug #55653 PS crash with libmysql when binding same variable as param and out
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ require_once("connect.inc");
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ }
+
+ $in_and_out = "a";
+
+ if (!($stmt = $link->stmt_init()))
+ printf("[002] [%d] %s\n", $link->errno, $link->error);
+
+ if (!($stmt->prepare("SELECT ?")) ||
+ !($stmt->bind_param("s", $in_and_out)) ||
+ !($stmt->execute()) ||
+ !($stmt->bind_result($in_and_out)))
+ printf("[003] [%d] %s\n", $stmt->errno, $stmt->error);
+
+ if (!$stmt->fetch())
+ printf("[004] [%d] %s\n", $stmt->errno, $stmt->error);
+
+ if ("a" !== $in_and_out)
+ printf("[005] Wrong result: '%s'\n", $in_and_out);
+
+ echo "done!";
+?>
+--EXPECT--
+done! \ No newline at end of file
diff --git a/ext/mysqli/tests/bug55859.phpt b/ext/mysqli/tests/bug55859.phpt
new file mode 100644
index 000000000..a8bb4b3f2
--- /dev/null
+++ b/ext/mysqli/tests/bug55859.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #55859 mysqli->stat property access gives error
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ require_once("connect.inc");
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ }
+ var_dump(mysqli_stat($link) === $link->stat);
+ echo "done!";
+?>
+--EXPECT--
+bool(true)
+done! \ No newline at end of file
diff --git a/ext/mysqli/tests/connect.inc b/ext/mysqli/tests/connect.inc
index 6c6c48b5f..3a9d8ec25 100644
--- a/ext/mysqli/tests/connect.inc
+++ b/ext/mysqli/tests/connect.inc
@@ -222,7 +222,52 @@
return $charsets;
}
+ function have_innodb($link) {
+ if (($res = $link->query("SHOW VARIABLES LIKE 'have_innodb'")) &&
+ ($row = $res->fetch_row()) &&
+ !empty($row)) {
+ if ($row[1] == "DISABLED" || $row[1] == "NO") {
+ return false;
+ }
+ return true;
+ } else {
+ /* MySQL 5.6.1+ */
+ if ($res = $link->query("SHOW ENGINES")) {
+ while ($row = $res->fetch_assoc()) {
+ if (!isset($row['Engine']) || !isset($row['Support']))
+ return false;
+
+ if (('InnoDB' == $row['Engine']) &&
+ (('YES' == $row['Support']) || ('DEFAULT' == $row['Support']))
+ ) {
+ return true;
+ }
+ }
+ return false;
+ } else {
+ return false;
+ }
+ }
+ return false;
+ }
+
} else {
printf("skip Eeeek/BUG/FIXME - connect.inc included twice! skipif bug?\n");
}
-?> \ No newline at end of file
+
+ function handle_catchable_fatal($errno, $error, $file, $line) {
+ static $errcodes = array();
+ if (empty($errcodes)) {
+ $constants = get_defined_constants();
+ foreach ($constants as $name => $value) {
+ if (substr($name, 0, 2) == "E_")
+ $errcodes[$value] = $name;
+ }
+ }
+ printf("[%s] %s in %s on line %s\n",
+ (isset($errcodes[$errno])) ? $errcodes[$errno] : $errno,
+ $error, $file, $line);
+
+ return true;
+ }
+?>
diff --git a/ext/mysqli/tests/local_infile_tools.inc b/ext/mysqli/tests/local_infile_tools.inc
index 04d6e8a12..bb9872f1a 100644
--- a/ext/mysqli/tests/local_infile_tools.inc
+++ b/ext/mysqli/tests/local_infile_tools.inc
@@ -6,11 +6,53 @@
}
}
- function create_standard_csv($offset) {
+ function check_local_infile_support($link, $engine, $table_name = 'test') {
+
+ if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"'))
+ return "Cannot check if Server variable 'local_infile' is set to 'ON'";
+
+ $row = mysqli_fetch_assoc($res);
+ mysqli_free_result($res);
+ if ('ON' != $row['Value'])
+ return sprintf("Server variable 'local_infile' seems not set to 'ON', found '%s'", $row['Value']);
+
+ if (!mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name))) {
+ return "Failed to drop old test table";
+ }
+
+ if (!mysqli_query($link, $sql = sprintf('CREATE TABLE %s(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=%s',
+ $table_name, $engine)))
+ return "Failed to create test table: $sql";
+
+ $file = create_standard_csv(1, false);
+ if (!$file) {
+ mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name));
+ return "Cannot create CSV file";
+ }
+
+ if (!@mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s'
+ INTO TABLE %s
+ FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\''
+ LINES TERMINATED BY '\n'",
+ mysqli_real_escape_string($link, $file),
+ $table_name))) {
+ if (1148 == mysqli_errno($link)) {
+ mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name));
+ return "Cannot test LOAD DATA LOCAL INFILE, [1148] The used command is not allowed with this MySQL version";
+ } else if ($link->errno) {
+ return $link->error;
+ }
+ }
+ mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name));
+ return "";
+ }
+
+ function create_standard_csv($offset, $verbose = true) {
// create a CVS file
$file = tempnam(sys_get_temp_dir(), 'mysqli_test');
if (!$fp = fopen($file, 'w')) {
- printf("[%03d + 1] Cannot create CVS file '%s'\n", $offset, $file);
+ if ($verbose)
+ printf("[%03d + 1] Cannot create CVS file '%s'\n", $offset, $file);
return NULL;
} else {
/* Looks ugly? No, handy if you have crashes... */
@@ -21,14 +63,16 @@
if (!fwrite($fp, (binary)"'97';'x';\n") ||
!fwrite($fp, (binary)"'98';'y';\n") ||
!fwrite($fp, (binary)"99;'z';\n")) {
- printf("[%03d + 2] Cannot write CVS file '%s'\n", $offset, $file);
+ if ($verbose)
+ printf("[%03d + 2] Cannot write CVS file '%s'\n", $offset, $file);
return NULL;
}
} else {
if (!fwrite($fp, "97;'x';\n") ||
!fwrite($fp, "98;'y';\n") ||
!fwrite($fp, "99;'z';\n")) {
- printf("[%03d + 3] Cannot write CVS file '%s'\n", $offset, $file);
+ if ($verbose)
+ printf("[%03d + 3] Cannot write CVS file '%s'\n", $offset, $file);
return NULL;
}
}
@@ -36,8 +80,9 @@
fclose($fp);
if (!chmod($file, 0644)) {
- printf("[%03d + 4] Cannot change the file perms of '%s' from 0600 to 0644, MySQL might not be able to read it\n",
- $offset, $file);
+ if ($verbose)
+ printf("[%03d + 4] Cannot change the file perms of '%s' from 0600 to 0644, MySQL might not be able to read it\n",
+ $offset, $file);
return NULL;
}
return $file;
diff --git a/ext/mysqli/tests/mysqli_autocommit.phpt b/ext/mysqli/tests/mysqli_autocommit.phpt
index f1f63e7f3..a93d89f10 100644
--- a/ext/mysqli/tests/mysqli_autocommit.phpt
+++ b/ext/mysqli/tests/mysqli_autocommit.phpt
@@ -12,17 +12,8 @@ mysqli_autocommit()
$host, $user, $db, $port, $socket));
}
- if (!$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'")) {
- die("skip Cannot check for required InnoDB suppot");
- }
- if (!$row = mysqli_fetch_row($result))
- die("skip Cannot check for required InnoDB suppot");
-
- mysqli_free_result($result);
- mysqli_close($link);
- if ($row[1] == "DISABLED" || $row[1] == "NO") {
- die(sprintf ("skip innodb support is not installed or enabled."));
- }
+ if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_autocommit_oo.phpt b/ext/mysqli/tests/mysqli_autocommit_oo.phpt
index b1777b9f6..3a5a25779 100644
--- a/ext/mysqli/tests/mysqli_autocommit_oo.phpt
+++ b/ext/mysqli/tests/mysqli_autocommit_oo.phpt
@@ -7,25 +7,14 @@ mysqli->autocommit()
require_once('skipifconnectfailure.inc');
require_once('connect.inc');
- if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) {
+ if (!$link = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) {
printf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
exit(1);
}
- if (!$res = $mysqli->query("SHOW VARIABLES LIKE 'have_innodb'")) {
- printf("skip Cannot fetch have_innodb variable\n");
- exit(1);
- }
-
- $row = $res->fetch_row();
- $res->free_result();
- $mysqli->close();
-
- if ($row[1] == "DISABLED" || $row[1] == "NO") {
- printf ("skip Innodb support is not installed or enabled.");
- exit(1);
- }
+ if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_change_user_rollback.phpt b/ext/mysqli/tests/mysqli_change_user_rollback.phpt
index 97c2bd851..ed3330e06 100644
--- a/ext/mysqli/tests/mysqli_change_user_rollback.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_rollback.phpt
@@ -6,16 +6,11 @@ require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
require_once('connect.inc');
-$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
-$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'");
-$row = mysqli_fetch_row($result);
-mysqli_free_result($result);
-mysqli_close($link);
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
-if ($row[1] == "DISABLED" || $row[1] == "NO") {
- printf ("skip innodb support is not installed or enabled.");
- exit;
-}
+if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_character_set.phpt b/ext/mysqli/tests/mysqli_character_set.phpt
index 191a163f2..1bfe9cbda 100644
--- a/ext/mysqli/tests/mysqli_character_set.phpt
+++ b/ext/mysqli/tests/mysqli_character_set.phpt
@@ -48,7 +48,8 @@ if (version_compare(PHP_VERSION, '5.9.9', '>') == 1) {
$k = $charset['Charset'];
/* The server currently 17.07.2007 can't handle data sent in ucs2 */
/* The server currently 16.08.2010 can't handle data sent in utf16 and utf32 */
- if ($charset['Charset'] == 'ucs2' || $charset['Charset'] == 'utf16' || $charset['Charset'] == 'utf32') {
+ /* The server currently 02.09.2011 can't handle data sent in utf16le */
+ if ($charset['Charset'] == 'ucs2' || $charset['Charset'] == 'utf16' || $charset['Charset'] == 'utf32' || 'utf16le' == $charset['Charset']) {
continue;
}
diff --git a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
index b503d3e56..c6d4e7cc3 100644
--- a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
+++ b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
@@ -22,7 +22,6 @@ require_once('skipifconnectfailure.inc');
'autocommit' => true,
'change_user' => true,
'character_set_name' => true,
- 'client_encoding' => true,
'close' => true,
'commit' => true,
'connect' => true,
@@ -57,9 +56,13 @@ require_once('skipifconnectfailure.inc');
'thread_safe' => true,
'use_result' => true,
);
+
+ if (version_compare(PHP_VERSION, '5.3.99', '<=')) {
+ $expected_methods['client_encoding'] = true;
+ }
+
if ($IS_MYSQLND) {
// mysqlnd only
- /* $expected_methods['get_cache_stats'] = true; */
/* $expected_methods['get_client_stats'] = true; */
$expected_methods['get_connection_stats'] = true;
$expected_methods['reap_async_query'] = true;
@@ -96,15 +99,70 @@ require_once('skipifconnectfailure.inc');
printf("ok\n");
printf("\nClass variables:\n");
- $variables = array_keys(get_class_vars(get_class($mysqli)));
- sort($variables);
- foreach ($variables as $k => $var)
- printf("%s\n", $var);
+
+ $expected_class_variables = $expected_object_variables = array(
+ "affected_rows" => true,
+ "client_info" => true,
+ "client_version" => true,
+ "connect_errno" => true,
+ "connect_error" => true,
+ "errno" => true,
+ "error" => true,
+ "field_count" => true,
+ "host_info" => true,
+ "info" => true,
+ "insert_id" => true,
+ "protocol_version" => true,
+ "server_info" => true,
+ "server_version" => true,
+ "sqlstate" => true,
+ "stat" => true,
+ "thread_id" => true,
+ "warning_count" => true,
+ );
+
+ if (version_compare(PHP_VERSION, '5.3.99', '>')) {
+ $expected_class_variables["error_list"] = true;
+ $expected_object_variables["error_list"] = true;
+ }
+
+ $variables = get_class_vars(get_class($mysqli));
+ foreach ($variables as $var => $v) {
+ if (isset($expected_class_variables[$var])) {
+ unset($expected_class_variables[$var]);
+ unset($variables[$var]);
+ }
+ }
+
+ if (!empty($expected_class_variables)) {
+ printf("Dumping list of missing class variables\n");
+ var_dump($expected_class_variables);
+ }
+ if (!empty($variables)) {
+ printf("Dumping list of unexpected class variables\n");
+ var_dump($variables);
+ }
+ echo "ok\n";
printf("\nObject variables:\n");
- $variables = array_keys(get_object_vars($mysqli));
- foreach ($variables as $k => $var)
- printf("%s\n", $var);
+ $variables = get_object_vars($mysqli);
+ foreach ($variables as $var => $v) {
+ if (isset($expected_object_variables[$var])) {
+ unset($expected_object_variables[$var]);
+ unset($variables[$var]);
+ }
+ }
+
+ if (!empty($expected_object_variables)) {
+ printf("Dumping list of missing object variables\n");
+ var_dump($expected_object_variables);
+ }
+ if (!empty($variables)) {
+ printf("Dumping list of unexpected object variables\n");
+ var_dump($variables);
+ }
+ echo "ok\n";
+
printf("\nMagic, magic properties:\n");
@@ -133,6 +191,11 @@ require_once('skipifconnectfailure.inc');
$mysqli->error, gettype($mysqli->error),
mysqli_error($link), gettype(mysqli_error($link)));
+ if (version_compare(PHP_VERSION, '5.3.99', '>')) {
+ assert(mysqli_error_list($link) === $mysqli->error_list);
+ assert(is_array($mysqli->error_list));
+ }
+
assert(mysqli_field_count($link) === $mysqli->field_count);
printf("mysqli->field_count = '%s'/%s ('%s'/%s)\n",
$mysqli->field_count, gettype($mysqli->field_count),
@@ -148,6 +211,11 @@ require_once('skipifconnectfailure.inc');
$mysqli->sqlstate, gettype($mysqli->sqlstate),
mysqli_sqlstate($link), gettype(mysqli_sqlstate($link)));
+ assert(mysqli_stat($link) === $mysqli->stat);
+ printf("mysqli->stat = '%s'/%s ('%s'/%s)\n",
+ $mysqli->stat, gettype($mysqli->stat),
+ mysqli_stat($link), gettype(mysqli_stat($link)));
+
assert(mysqli_get_host_info($link) === $mysqli->host_info);
printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
$mysqli->host_info, gettype($mysqli->host_info),
@@ -217,42 +285,10 @@ Methods:
ok
Class variables:
-affected_rows
-client_info
-client_version
-connect_errno
-connect_error
-errno
-error
-field_count
-host_info
-info
-insert_id
-protocol_version
-server_info
-server_version
-sqlstate
-thread_id
-warning_count
+ok
Object variables:
-affected_rows
-client_info
-client_version
-connect_errno
-connect_error
-errno
-error
-field_count
-host_info
-info
-insert_id
-server_info
-server_version
-sqlstate
-protocol_version
-thread_id
-warning_count
+ok
Magic, magic properties:
mysqli->affected_rows = '%s'/integer ('%s'/integer)
@@ -263,6 +299,7 @@ mysqli->error = ''/%unicode|string% (''/%unicode|string%)
mysqli->field_count = '0'/integer ('0'/integer)
mysqli->insert_id = '0'/integer ('0'/integer)
mysqli->sqlstate = '00000'/%unicode|string% ('00000'/%unicode|string%)
+mysqli->stat = 'Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string ('Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string)
mysqli->host_info = '%s'/%unicode|string% ('%s'/%unicode|string%)
mysqli->info = ''/NULL (''/%unicode|string%)
mysqli->thread_id = '%d'/integer ('%d'/integer)
diff --git a/ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt b/ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt
index d0940a756..530b4647c 100644
--- a/ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt
+++ b/ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt
@@ -68,6 +68,11 @@ require_once('skipifconnectfailure.inc');
@$mysqli->sqlstate, gettype(@$mysqli->sqlstate),
@mysqli_sqlstate($mysqli), gettype(@mysqli_sqlstate($mysqli)));
+ assert(@mysqli_stat($mysqli) === @$mysqli->sstat);
+ printf("mysqli->stat = '%s'/%s ('%s'/%s)\n",
+ @$mysqli->stat, gettype(@$mysqli->stat),
+ @mysqli_stat($mysqli), gettype(@mysqli_stat($mysqli)));
+
assert(@mysqli_get_host_info($mysqli) === @$mysqli->host_info);
printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
@$mysqli->host_info, gettype(@$mysqli->host_info),
@@ -146,9 +151,9 @@ Without RS
Class variables:
affected_rows = 'NULL'
client_info = 'NULL'
-client_version = '%s'
-connect_errno = '%s'
-connect_error = ''%s'
+client_version = '%d'
+connect_errno = '%d'
+connect_error = '%s'
errno = 'NULL'
error = 'NULL'
field_count = 'NULL'
@@ -159,14 +164,15 @@ protocol_version = 'NULL'
server_info = 'NULL'
server_version = 'NULL'
sqlstate = 'NULL'
+stat = 'NULL'
thread_id = 'NULL'
warning_count = 'NULL'
Object variables:
affected_rows = 'NULL'
client_info = 'NULL'
-client_version = '%s'
-connect_errno = '%s'
+client_version = '%d'
+connect_errno = '%d'
connect_error = '%s'
errno = 'NULL'
error = 'NULL'
@@ -176,6 +182,7 @@ info = 'NULL'
insert_id = 'NULL'
server_info = 'NULL'
server_version = 'NULL'
+stat = 'NULL'
sqlstate = 'NULL'
protocol_version = 'NULL'
thread_id = 'NULL'
@@ -185,17 +192,18 @@ Magic, magic properties:
mysqli->affected_rows = ''/NULL (''/NULL)
Warning: assert(): Assertion failed in %s on line %d
-mysqli->client_info = ''/NULL ('%s'/%s)
-mysqli->client_version = '%s'/integer ('%s'/integer)
+mysqli->client_info = ''/NULL ('%s'/string)
+mysqli->client_version = '%d'/integer ('%d'/integer)
mysqli->errno = ''/NULL (''/NULL)
mysqli->error = ''/NULL (''/NULL)
mysqli->field_count = ''/NULL (''/NULL)
mysqli->insert_id = ''/NULL (''/NULL)
mysqli->sqlstate = ''/NULL (''/NULL)
+mysqli->stat = ''/NULL (''/NULL)
mysqli->host_info = ''/NULL (''/NULL)
mysqli->info = ''/NULL (''/NULL)
-Warning: assert(): Assertion failed in %s on line %d
+Warning: assert(): Assertion failed in %s on line 78
mysqli->thread_id = ''/NULL (''/NULL)
mysqli->protocol_version = ''/NULL (''/NULL)
mysqli->server_info = ''/NULL (''/NULL)
@@ -208,15 +216,15 @@ setting mysqli->unknown, @mysqli_unknown = '13'
setting mysqli->unknown, @mysqli_unknown = 'friday'
Access hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):
-mysqli->connect_error = '%s'/%s)
-mysqli->connect_errno = '%s'/integer ('%s'/integer)
+mysqli->connect_error = '%s'/string ('%s'/string)
+mysqli->connect_errno = '%d'/integer ('%d'/integer)
With RS
Class variables:
affected_rows = 'NULL'
client_info = 'NULL'
-client_version = '%s'
-connect_errno = '%s'
+client_version = '%d'
+connect_errno = '%d'
connect_error = '%s'
errno = 'NULL'
error = 'NULL'
@@ -228,14 +236,15 @@ protocol_version = 'NULL'
server_info = 'NULL'
server_version = 'NULL'
sqlstate = 'NULL'
+stat = 'NULL'
thread_id = 'NULL'
warning_count = 'NULL'
Object variables:
affected_rows = 'NULL'
client_info = 'NULL'
-client_version = '%s'
-connect_errno = '%s'
+client_version = '%d'
+connect_errno = '%d'
connect_error = '%s'
errno = 'NULL'
error = 'NULL'
@@ -245,6 +254,7 @@ info = 'NULL'
insert_id = 'NULL'
server_info = 'NULL'
server_version = 'NULL'
+stat = 'NULL'
sqlstate = 'NULL'
protocol_version = 'NULL'
thread_id = 'NULL'
@@ -253,14 +263,15 @@ warning_count = 'NULL'
Magic, magic properties:
mysqli->affected_rows = ''/NULL (''/NULL)
-Warning: assert(): Assertion failed in %s on line %d
-mysqli->client_info = ''/NULL ('%s'/%s)
-mysqli->client_version = '%s'/integer ('%s'/integer)
+Warning: assert(): Assertion failed in %s on line %s
+mysqli->client_info = ''/NULL ('%s'/string)
+mysqli->client_version = '%d'/integer ('%d'/integer)
mysqli->errno = ''/NULL (''/NULL)
mysqli->error = ''/NULL (''/NULL)
mysqli->field_count = ''/NULL (''/NULL)
mysqli->insert_id = ''/NULL (''/NULL)
mysqli->sqlstate = ''/NULL (''/NULL)
+mysqli->stat = ''/NULL (''/NULL)
mysqli->host_info = ''/NULL (''/NULL)
mysqli->info = ''/NULL (''/NULL)
@@ -277,6 +288,6 @@ setting mysqli->unknown, @mysqli_unknown = '13'
setting mysqli->unknown, @mysqli_unknown = 'friday'
Access hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):
-mysqli->connect_error = '%s'/%s)
-mysqli->connect_errno = '%s'/integer ('%s'/integer)
+mysqli->connect_error = '%s'/string ('%s'/string)
+mysqli->connect_errno = '%d'/integer ('%d'/integer)
done! \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt b/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
index 652aee29e..0e0fe6cf5 100644
--- a/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
+++ b/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
@@ -1209,6 +1209,14 @@ isStatic: no
isDefault: yes
Modifiers: 256
+Inspecting property 'stat'
+isPublic: yes
+isPrivate: no
+isProtected: no
+isStatic: no
+isDefault: yes
+Modifiers: 256
+
Inspecting property 'thread_id'
isPublic: yes
isPrivate: no
@@ -1239,6 +1247,7 @@ Default property 'protocol_version'
Default property 'server_info'
Default property 'server_version'
Default property 'sqlstate'
+Default property 'stat'
Default property 'thread_id'
Default property 'warning_count'
done! \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_commit.phpt b/ext/mysqli/tests/mysqli_commit.phpt
index 66113b3a5..d20ba5dd2 100644
--- a/ext/mysqli/tests/mysqli_commit.phpt
+++ b/ext/mysqli/tests/mysqli_commit.phpt
@@ -6,22 +6,12 @@ require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
-if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
- die(sprintf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
- $host, $user, $db, $port, $socket));
-}
-
-if (!$res = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'")) {
- die(sprintf("skip Cannot fetch have_innodb variable\n"));
-}
-
-$row = mysqli_fetch_row($res);
-mysqli_free_result($res);
-mysqli_close($link);
-
-if ($row[1] == "DISABLED" || $row[1] == "NO") {
- die(sprintf ("skip Innodb support is not installed or enabled."));
-}
+require_once('connect.inc');
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_commit_oo.phpt b/ext/mysqli/tests/mysqli_commit_oo.phpt
index fee796739..34ec4bfcd 100644
--- a/ext/mysqli/tests/mysqli_commit_oo.phpt
+++ b/ext/mysqli/tests/mysqli_commit_oo.phpt
@@ -5,22 +5,13 @@ mysqli_commit()
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
-if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket)) {
- die(sprintf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
- $host, $user, $db, $port, $socket));
-}
-
-if (!$res = $mysqli->query("SHOW VARIABLES LIKE 'have_innodb'")) {
- die(sprintf("skip Cannot fetch have_innodb variable\n"));
-}
-
-$row = $res->fetch_row();
-$res->free();
-$mysqli->close();
-
-if ($row[1] == "DISABLED" || $row[1] == "NO") {
- die(sprintf("skip Innodb support is not installed or enabled."));
-}
+
+require_once('connect.inc');
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_connect.phpt b/ext/mysqli/tests/mysqli_connect.phpt
index cf7c7bede..e14d88fe7 100644
--- a/ext/mysqli/tests/mysqli_connect.phpt
+++ b/ext/mysqli/tests/mysqli_connect.phpt
@@ -1,8 +1,11 @@
--TEST--
mysqli_connect()
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
-<?php require_once('skipifemb.inc'); ?>
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
--FILE--
<?php
require_once("connect.inc");
@@ -146,7 +149,7 @@ mysqli_connect()
print "done!";
?>
--EXPECTF--
-Warning: mysqli_connect(): (%d/%d): Access denied for user '%s'@'%s' (using password: YES) in %s on line %d
+Warning: mysqli_connect(): (%s/%d): Access denied for user '%s'@'%s' (using password: YES) in %s on line %d
array(1) {
[%u|b%"testing"]=>
%unicode|string%(21) "mysqli.default_socket"
diff --git a/ext/mysqli/tests/mysqli_connect_oo.phpt b/ext/mysqli/tests/mysqli_connect_oo.phpt
index d406e2484..35cc11616 100644
--- a/ext/mysqli/tests/mysqli_connect_oo.phpt
+++ b/ext/mysqli/tests/mysqli_connect_oo.phpt
@@ -1,8 +1,11 @@
--TEST--
new mysqli()
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
-<?php require_once('skipifemb.inc'); ?>
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
--FILE--
<?php
require_once("connect.inc");
@@ -144,7 +147,7 @@ new mysqli()
print "done!";
?>
--EXPECTF--
-Warning: mysqli::mysqli(): (%d/%d): Access denied for user '%sunknown%s'@'%s' (using password: %s) in %s on line %d
+Warning: mysqli::mysqli(): (%s/%d): Access denied for user '%sunknown%s'@'%s' (using password: %s) in %s on line %d
... and now Exceptions
Access denied for user '%s'@'%s' (using password: %s)
done! \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_connect_oo_defaults.phpt b/ext/mysqli/tests/mysqli_connect_oo_defaults.phpt
index bb643e8a3..1855a2031 100644
--- a/ext/mysqli/tests/mysqli_connect_oo_defaults.phpt
+++ b/ext/mysqli/tests/mysqli_connect_oo_defaults.phpt
@@ -1,8 +1,11 @@
--TEST--
new mysqli()
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
-<?php require_once('skipifemb.inc'); ?>
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
--FILE--
<?php
require_once("connect.inc");
diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt
index ff92160a7..613dddfc8 100644
--- a/ext/mysqli/tests/mysqli_constants.phpt
+++ b/ext/mysqli/tests/mysqli_constants.phpt
@@ -160,6 +160,9 @@ require_once('skipifconnectfailure.inc');
if (defined('MYSQLI_DATA_TRUNCATED'))
$expected_constants["MYSQLI_DATA_TRUNCATED"] = true;
+ if (defined('MYSQLI_SERVER_PS_OUT_PARAMS'))
+ $expected_constants["MYSQLI_SERVER_PS_OUT_PARAMS"] = true;
+
if (!$IS_MYSQLND) {
/* libmysql only */
diff --git a/ext/mysqli/tests/mysqli_debug_append.phpt b/ext/mysqli/tests/mysqli_debug_append.phpt
index f15365f2e..f91699546 100644
--- a/ext/mysqli/tests/mysqli_debug_append.phpt
+++ b/ext/mysqli/tests/mysqli_debug_append.phpt
@@ -14,6 +14,9 @@ if (!defined('MYSQLI_DEBUG_TRACE_ENABLED'))
if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED)
die("skip: debug functionality not enabled");
+
+if (!$IS_MYSQLND)
+ die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation");
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_debug_control_string.phpt b/ext/mysqli/tests/mysqli_debug_control_string.phpt
index 20556df04..42a802d81 100644
--- a/ext/mysqli/tests/mysqli_debug_control_string.phpt
+++ b/ext/mysqli/tests/mysqli_debug_control_string.phpt
@@ -14,6 +14,9 @@ if (!defined('MYSQLI_DEBUG_TRACE_ENABLED'))
if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED)
die("skip: debug functionality not enabled");
+
+if (!$IS_MYSQLND)
+ die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation");
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_debug_ini.phpt b/ext/mysqli/tests/mysqli_debug_ini.phpt
index 859a44c32..bcf00672d 100644
--- a/ext/mysqli/tests/mysqli_debug_ini.phpt
+++ b/ext/mysqli/tests/mysqli_debug_ini.phpt
@@ -4,6 +4,7 @@ mysqli_debug() - enabling trace with ini setting
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
if (!function_exists('mysqli_debug'))
die("skip mysqli_debug() not available");
diff --git a/ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt b/ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt
index 5b66ee26d..1de2eebb2 100644
--- a/ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt
+++ b/ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt
@@ -14,6 +14,9 @@ if (!defined('MYSQLI_DEBUG_TRACE_ENABLED'))
if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED)
die("skip: debug functionality not enabled");
+
+if (!$IS_MYSQLND)
+ die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation");
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_explain_metadata.phpt b/ext/mysqli/tests/mysqli_explain_metadata.phpt
index 5bfb001a1..fc1f9dbe4 100644
--- a/ext/mysqli/tests/mysqli_explain_metadata.phpt
+++ b/ext/mysqli/tests/mysqli_explain_metadata.phpt
@@ -5,6 +5,9 @@ EXPLAIN - metadata
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
+require_once("connect.inc");
+if (!$IS_MYSQLND)
+ die("skip Open libmysql/MySQL issue http://bugs.mysql.com/?id=62350");
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_fetch_field_types.phpt b/ext/mysqli/tests/mysqli_fetch_field_types.phpt
index 98332f4a1..d02c02c76 100644
--- a/ext/mysqli/tests/mysqli_fetch_field_types.phpt
+++ b/ext/mysqli/tests/mysqli_fetch_field_types.phpt
@@ -10,14 +10,14 @@ require_once('skipifconnectfailure.inc');
<?php
require('table.inc');
- function mysqli_field_datatypes($link, $sql_type, $php_value, $php_type, $datatypes) {
+ function mysqli_field_datatypes($link, $sql_type, $php_value, $php_type, $datatypes, $default_charset="latin1") {
if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) {
printf("[001] %s, [%d] %s\n", $sql_type,
mysqli_errno($link), mysqli_error($link));
return false;
}
- $create = sprintf("CREATE TABLE test(id %s)", $sql_type);
+ $create = sprintf("CREATE TABLE test(id %s) DEFAULT CHARSET %s", $sql_type, $default_charset);
if (!mysqli_query($link, $create)) {
printf("[002] '%s' - '%s', [%d] %s\n", $sql_type, $create,
mysqli_errno($link), mysqli_error($link));
diff --git a/ext/mysqli/tests/mysqli_fork.phpt b/ext/mysqli/tests/mysqli_fork.phpt
index 6c5096f37..f5a0b7bc9 100644
--- a/ext/mysqli/tests/mysqli_fork.phpt
+++ b/ext/mysqli/tests/mysqli_fork.phpt
@@ -13,22 +13,11 @@ if (!function_exists('posix_getpid'))
die("skip POSIX functions not available");
require_once('connect.inc');
-if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
- die(sprintf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
- $host, $user, $db, $port, $socket));
-}
-
-if (!$res = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'")) {
- die(sprintf("skip Cannot fetch have_innodb variable\n"));
-}
-
-$row = mysqli_fetch_row($res);
-mysqli_free_result($res);
-mysqli_close($link);
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
-if ($row[1] == "DISABLED" || $row[1] == "NO") {
- die(sprintf ("skip Innodb support is not installed or enabled."));
-}
+if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_kill.phpt b/ext/mysqli/tests/mysqli_kill.phpt
index 5706adf46..3606fda0b 100644
--- a/ext/mysqli/tests/mysqli_kill.phpt
+++ b/ext/mysqli/tests/mysqli_kill.phpt
@@ -44,28 +44,31 @@ require_once('skipifconnectfailure.inc');
if ($link->info != 'Records: 6 Duplicates: 0 Warnings: 0') {
printf("[008] mysqlnd used to be more verbose and used to support SELECT");
}
+ if ($link->stat != NULL) {
+ printf("[009] NULL expected because of error.\n");
+ }
} else {
if ($link->info != NULL) {
- printf("[008] Time for wonders - libmysql has started to support SELECT, change test");
+ printf("[010] Time for wonders - libmysql has started to support SELECT, change test");
}
}
mysqli_close($link);
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
- printf("[009] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ printf("[011] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
mysqli_kill($link, -1);
if ((!$res = mysqli_query($link, "SELECT id FROM test LIMIT 1")) ||
(!$tmp = mysqli_fetch_assoc($res))) {
- printf("[010] Connection should not be gone, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ printf("[012] Connection should not be gone, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
}
var_dump($tmp);
mysqli_free_result($res);
mysqli_close($link);
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
- printf("[011] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ printf("[013] Cannot connect, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
mysqli_change_user($link, "This might work if you accept anonymous users in your setup", "password", $db); mysqli_kill($link, -1);
@@ -108,6 +111,8 @@ object(mysqli)#%d (%d) {
%unicode|string%(%d) "%s"
[%u|b%"server_version"]=>
int(%d)
+ ["stat"]=>
+ %s
[%u|b%"sqlstate"]=>
%unicode|string%(5) "HY000"
[%u|b%"protocol_version"]=>
@@ -125,4 +130,4 @@ array(1) {
}
Warning: mysqli_kill(): processid should have positive value in %s on line %d
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_last_insert_id.phpt b/ext/mysqli/tests/mysqli_last_insert_id.phpt
index 353cb7a8a..996c401f7 100644
--- a/ext/mysqli/tests/mysqli_last_insert_id.phpt
+++ b/ext/mysqli/tests/mysqli_last_insert_id.phpt
@@ -31,7 +31,7 @@ API vs. SQL LAST_INSERT_ID()
$host, $user, $db, $port, $socket);
if (!$link->query("DROP TABLE IF EXISTS test") ||
- !$link->query("CREATE TABLE test (id INT auto_increment, label varchar(10) not null, PRIMARY KEY (id))") ||
+ !$link->query("CREATE TABLE test (id INT auto_increment, label varchar(10) not null, PRIMARY KEY (id)) ENGINE=MyISAM") ||
!$link->query("INSERT INTO test (id, label) VALUES (null, 'a')")) {
printf("[002] [%d] %s\n", $link->errno, $link->error);
}
diff --git a/ext/mysqli/tests/mysqli_poll_kill.phpt b/ext/mysqli/tests/mysqli_poll_kill.phpt
index 800521aa7..b068d64e8 100644
--- a/ext/mysqli/tests/mysqli_poll_kill.phpt
+++ b/ext/mysqli/tests/mysqli_poll_kill.phpt
@@ -25,7 +25,7 @@ if (!$IS_MYSQLND)
// Killing connection - 1
$link = get_connection();
- if (true !== ($tmp = mysqli_query($link, "SELECT 1 AS 'processed beofre killed'", MYSQLI_ASYNC | MYSQLI_USE_RESULT)))
+ if (true !== ($tmp = mysqli_query($link, "SELECT 1 AS 'processed before killed'", MYSQLI_ASYNC | MYSQLI_USE_RESULT)))
printf("[002] Expecting boolean/true got %s/%s\n", gettype($tmp), var_export($tmp, true));
// Sleep 0.1s - the asynchronous query should have been processed after the wait period
@@ -136,15 +136,14 @@ if (!$IS_MYSQLND)
mysqli_kill(get_connection(), $thread_id);
// Sleep 0.1s to ensure the KILL gets recognized
usleep(100000);
- if (false !== ($tmp = mysqli_query($link, "SELECT 1 AS 'processed beofre killed'", MYSQLI_ASYNC | MYSQLI_USE_RESULT)))
+ if (false !== ($tmp = mysqli_query($link, "SELECT 1 AS 'processed before killed'", MYSQLI_ASYNC | MYSQLI_USE_RESULT)))
printf("[015] Expecting boolean/false got %s/%s\n", gettype($tmp), var_export($tmp, true));
$links = array($link);
$errors = array($link);
$reject = array($link);
- // Yes, that is weird, right? Its the OK package we have to fetch
- if (1 !== ($tmp = (mysqli_poll($links, $errors, $reject, 0, 10000))))
+ if (0 !== ($tmp = (mysqli_poll($links, $errors, $reject, 0, 10000))))
printf("[016] Expecting int/0 got %s/%s\n", gettype($tmp), var_export($tmp, true));
if (!is_array($links) || empty($links))
@@ -172,9 +171,11 @@ if (!$IS_MYSQLND)
mysqli_close($link);
print "done!";
?>
+--XFAIL--
+To be fixed later. Minor issue about fetching error message from killed line
--EXPECTF--
array(1) {
- [%u|b%"processed beofre killed"]=>
+ [%u|b%"processed before killed"]=>
%unicode|string%(1) "1"
}
Fetching from thread %d...
diff --git a/ext/mysqli/tests/mysqli_poll_reference.phpt b/ext/mysqli/tests/mysqli_poll_reference.phpt
index 332f871af..ab2ed2aee 100644
--- a/ext/mysqli/tests/mysqli_poll_reference.phpt
+++ b/ext/mysqli/tests/mysqli_poll_reference.phpt
@@ -13,7 +13,7 @@ if (!$IS_MYSQLND)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip cannot connect");
-if (mysqli_server_version($link) < 50012)
+if (mysqli_get_server_version($link) < 50012)
die("skip Test needs SQL function SLEEP() available as of MySQL 5.0.12");
?>
diff --git a/ext/mysqli/tests/mysqli_query_local_infile_large.phpt b/ext/mysqli/tests/mysqli_query_local_infile_large.phpt
index 8b115a507..76bc415d8 100644
--- a/ext/mysqli/tests/mysqli_query_local_infile_large.phpt
+++ b/ext/mysqli/tests/mysqli_query_local_infile_large.phpt
@@ -4,6 +4,16 @@ mysql_query(LOAD DATA LOCAL INFILE) with large data set (10MB)
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
+
+$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
+if (!$link)
+ die(sprintf("skip Can't connect [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
+
+mysqli_close($link);
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_real_connect.phpt b/ext/mysqli/tests/mysqli_real_connect.phpt
index 2c371328b..b9ba98693 100644
--- a/ext/mysqli/tests/mysqli_real_connect.phpt
+++ b/ext/mysqli/tests/mysqli_real_connect.phpt
@@ -176,40 +176,42 @@ require_once('skipifconnectfailure.inc');
?>
--EXPECTF--
Warning: mysqli_real_connect(): (%d/%d): Access denied for user '%s'@'%s' (using password: YES) in %s on line %d
-object(mysqli)#%d (%d) {
- [%u|b%"affected_rows"]=>
+object(mysqli)#%d (18) {
+ ["affected_rows"]=>
NULL
- [%u|b%"client_info"]=>
+ ["client_info"]=>
%s
- [%u|b%"client_version"]=>
+ ["client_version"]=>
int(%d)
- [%u|b%"connect_errno"]=>
- int(%d)
- [%u|b%"connect_error"]=>
- NULL
- [%u|b%"errno"]=>
+ ["connect_errno"]=>
+ int(0)
+ ["connect_error"]=>
%s
- [%u|b%"error"]=>
+ ["errno"]=>
%s
- [%u|b%"field_count"]=>
+ ["error"]=>
+ %s
+ ["field_count"]=>
NULL
- [%u|b%"host_info"]=>
+ ["host_info"]=>
+ %s
+ ["info"]=>
NULL
- [%u|b%"info"]=>
+ ["insert_id"]=>
NULL
- [%u|b%"insert_id"]=>
+ ["server_info"]=>
NULL
- [%u|b%"server_info"]=>
+ ["server_version"]=>
NULL
- [%u|b%"server_version"]=>
+ ["stat"]=>
NULL
- [%u|b%"sqlstate"]=>
+ ["sqlstate"]=>
NULL
- [%u|b%"protocol_version"]=>
+ ["protocol_version"]=>
NULL
- [%u|b%"thread_id"]=>
+ ["thread_id"]=>
NULL
- [%u|b%"warning_count"]=>
+ ["warning_count"]=>
NULL
}
diff --git a/ext/mysqli/tests/mysqli_report.phpt b/ext/mysqli/tests/mysqli_report.phpt
index 1d9cf794a..886d464b7 100644
--- a/ext/mysqli/tests/mysqli_report.phpt
+++ b/ext/mysqli/tests/mysqli_report.phpt
@@ -289,7 +289,7 @@ Warning: mysqli_multi_query(): (%d/%d): You have an error in your SQL syntax; ch
Warning: mysqli_query(): (%d/%d): 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 'FOO' at line 1 in %s on line %d
-Warning: mysqli_change_user(): (%d/%d): Access denied for user '0123456789-10-4%s'@'%s' (using password: YES) in %s on line %d
+Warning: mysqli_change_user(): (%d/%d): Access denied for user '%s'@'%s' (using password: %s) in %s on line %d
Warning: mysqli_kill(): processid should have positive value in %s on line %d
diff --git a/ext/mysqli/tests/mysqli_report_wo_ps.phpt b/ext/mysqli/tests/mysqli_report_wo_ps.phpt
index 2ded3fd9d..cc57511b5 100644
--- a/ext/mysqli/tests/mysqli_report_wo_ps.phpt
+++ b/ext/mysqli/tests/mysqli_report_wo_ps.phpt
@@ -101,7 +101,7 @@ Warning: mysqli_multi_query(): (%d/%d): You have an error in your SQL syntax; ch
Warning: mysqli_query(): (%d/%d): 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 'FOO' at line 1 in %s on line %d
-Warning: mysqli_change_user(): (%d/%d): Access denied for user '0123456789-10-4%s'@'%s' (using password: YES) in %s on line %d
+Warning: mysqli_change_user(): (%d/%d): Access denied for user '%s'@'%s' (using password: %s) in %s on line %d
Warning: mysqli_kill(): processid should have positive value in %s on line %d
diff --git a/ext/mysqli/tests/mysqli_rollback.phpt b/ext/mysqli/tests/mysqli_rollback.phpt
index 1b1fe8b35..be4900031 100644
--- a/ext/mysqli/tests/mysqli_rollback.phpt
+++ b/ext/mysqli/tests/mysqli_rollback.phpt
@@ -9,23 +9,11 @@ mysqli_rollback()
require_once('skipifconnectfailure.inc');
require_once('connect.inc');
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die(sprintf("Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
- if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
- die(sprintf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
- $host, $user, $db, $port, $socket));
- }
-
- if (!$res = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'")) {
- die(sprintf("skip Cannot fetch have_innodb variable\n"));
- }
-
- $row = mysqli_fetch_row($res);
- mysqli_free_result($res);
- mysqli_close($link);
-
- if ($row[1] == "DISABLED" || $row[1] == "NO") {
- die(sprintf("skip Innodb support is not installed or enabled."));
- }
+ if (!have_innodb($link))
+ die(sprintf("Needs InnoDB support, [%d] %s", $link->errno, $link->error));
?>
--FILE--
<?php
diff --git a/ext/mysqli/tests/mysqli_select_db.phpt b/ext/mysqli/tests/mysqli_select_db.phpt
index 7527a1313..f58a19bea 100644
--- a/ext/mysqli/tests/mysqli_select_db.phpt
+++ b/ext/mysqli/tests/mysqli_select_db.phpt
@@ -70,7 +70,17 @@ require_once('skipifconnectfailure.inc');
mysqli_report(MYSQLI_REPORT_OFF);
mysqli_select_db($link, 'I can not imagine that this database exists');
mysqli_report(MYSQLI_REPORT_ERROR);
+
+ ob_start();
mysqli_select_db($link, 'I can not imagine that this database exists');
+ $output = ob_get_contents();
+ ob_end_clean();
+ if (!stristr($output, "1049") && !stristr($output, "1044") && !stristr($output, "1045")) {
+ /* Error: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR) Message: Unknown database '%s' */
+ /* Error: 1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR) Message: Access denied for user '%s'@'%s' to database '%s' */
+ /* Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR) Message: Access denied for user '%s'@'%s' (using password: %s) */
+ echo $output;
+ }
if (!$res = mysqli_query($link, "SELECT DATABASE() AS dbname"))
printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
@@ -98,7 +108,5 @@ require_once('skipifconnectfailure.inc');
--CLEAN--
<?php require_once("clean_table.inc"); ?>
--EXPECTF--
-Warning: mysqli_select_db(): (%d/%d): Unknown database '%s' in %s on line %d
-
Warning: mysqli_select_db(): Couldn't fetch mysqli in %s on line %d
done! \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_set_charset.phpt b/ext/mysqli/tests/mysqli_set_charset.phpt
index 4cd6e6ec1..38fe56841 100644
--- a/ext/mysqli/tests/mysqli_set_charset.phpt
+++ b/ext/mysqli/tests/mysqli_set_charset.phpt
@@ -102,7 +102,7 @@ if ((($res = mysqli_query($link, 'SHOW CHARACTER SET LIKE "latin1"', MYSQLI_STOR
printf("[016] Cannot get list of character sets\n");
while ($tmp = mysqli_fetch_assoc($res)) {
- if ('ucs2' == $tmp['Charset'] || 'utf16' == $tmp['Charset'] || 'utf32' == $tmp['Charset'])
+ if ('ucs2' == $tmp['Charset'] || 'utf16' == $tmp['Charset'] || 'utf32' == $tmp['Charset'] || 'utf16le' == $tmp['Charset'])
continue;
/* Uncomment to see where it hangs - var_dump($tmp); flush(); */
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_default.phpt b/ext/mysqli/tests/mysqli_set_local_infile_default.phpt
index dd67bb32a..0348b01f6 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_default.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_default.phpt
@@ -9,7 +9,15 @@ require_once('skipifconnectfailure.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
-require_once('connect.inc');
+$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
+if (!$link)
+ die(sprintf("skip Can't connect [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
+
+mysqli_close($link);
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt
index c8da0183b..58f4c7035 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt
@@ -13,18 +13,11 @@ require_once('connect.inc');
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt
index ad0a3532f..b8f51c214 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt
index e7df96e5a..a3c880102 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt
index c2ee87b34..408bb29ec 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt
index 4ebf8ded2..168cbc135 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt
index 3d94a545d..ad7ab32c1 100755
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt
index 09b4f90f6..b2b42a22e 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt
@@ -13,18 +13,11 @@ require_once('connect.inc');
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt
index ca4270549..16e38c5fa 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt
index 8b56deafa..4663fe236 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt
index 1c47292e3..ca06435c5 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt
index 6113abae6..601a09e12 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt
index 423ad834e..7163aca10 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt
@@ -2,14 +2,17 @@
mysqli_set_local_infile_handler() - open basedir restrictions
--SKIPIF--
<?php
-require_once('skipif.inc');
-require_once('skipifemb.inc');
-require_once('skipifconnectfailure.inc');
+if (!$fp = @fopen('skipif.inc', 'r'))
+ die("skip open_basedir restrictions forbid opening include files");
+
+include_once('skipif.inc');
+include_once('skipifemb.inc');
+include_once('skipifconnectfailure.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
-require_once('connect.inc');
+include_once('connect.inc');
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
@@ -18,13 +21,11 @@ if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
}
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
-mysqli_close($link);
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
+mysqli_close($link);
?>
--INI--
open_basedir="."
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt
index 33dd5164e..0d4024e52 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt
index 9af9974e7..b3144e430 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt
@@ -16,18 +16,11 @@ if (!$TEST_EXPERIMENTAL)
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt
index e6dfecb7e..f287f4d87 100644
--- a/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt
+++ b/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt
@@ -13,18 +13,11 @@ require_once('connect.inc');
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
die("skip Cannot connect to MySQL");
-if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) {
- mysqli_close($link);
- die("skip Cannot check if Server variable 'local_infile' is set to 'ON'");
-}
+include_once("local_infile_tools.inc");
+if ($msg = check_local_infile_support($link, $engine))
+ die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
-$row = mysqli_fetch_assoc($res);
-mysqli_free_result($res);
mysqli_close($link);
-
-if ('ON' != $row['Value'])
- die(sprintf("skip Server variable 'local_infile' seems not set to 'ON', found '%s'",
- $row['Value']));
?>
--INI--
mysqli.allow_local_infile=1
diff --git a/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_next_result.phpt b/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_next_result.phpt
index 1f92ca1f8..35433b136 100644
--- a/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_next_result.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_next_result.phpt
@@ -15,7 +15,11 @@ if (mysqli_get_server_version($link) < 50503) {
--FILE--
<?php
require_once('connect.inc');
- require_once('table.inc');
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+ }
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
printf("[003] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
@@ -119,6 +123,8 @@ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
mysqli_close($link);
?>
+--XFAIL--
+Unsupported and undefined, under development
--EXPECTF--
[010] More results: yes
[011] Next result: yes
diff --git a/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_out.phpt b/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_out.phpt
index c6053bcae..8c7c799de 100644
--- a/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_out.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_execute_stored_proc_out.phpt
@@ -20,7 +20,11 @@ if ($IS_MYSQLND) {
--FILE--
<?php
require_once('connect.inc');
- require_once('table.inc');
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+ }
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
printf("[003] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
@@ -69,6 +73,8 @@ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
mysqli_close($link);
?>
+--XFAIL--
+Unsupported and undefined, under development
--EXPECTF--
[008] More results: %s
[009] Next results: %s
diff --git a/ext/mysqli/tests/mysqli_stmt_num_rows.phpt b/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
index af81ca4e8..a1f5e89c7 100644
--- a/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
@@ -82,7 +82,17 @@ require_once('skipifconnectfailure.inc');
$i++;
} while (mysqli_stmt_fetch($stmt));
- if (7 !== ($tmp = mysqli_stmt_num_rows($stmt)))
+ /* NOTE to users
+ Behaviour with libmysql is UNDEFINED, see http://news.php.net/php.internals/55210
+ Because it is undefined it is allowed to the mysqlnd DEVELOPER to implement
+ any behaviour they like, including the one checked for in this test.
+ What the test does is cover an implementation detail of the mysqlnd library.
+ This implementation detail may, at any time, change without prior notice.
+ On the contrary, the mysqlnd way is a reasonable one and, maybe, one fine
+ day, after Klingons visited earh, becomes the official one. Meanwhile do
+ not rely on it.
+ */
+ if ($IS_MYSQLND && (7 !== ($tmp = mysqli_stmt_num_rows($stmt))))
printf("[54] Expecting int/7, got %s/%s\n", gettype($tmp), $tmp);
} else {
diff --git a/ext/mysqlnd/config9.m4 b/ext/mysqlnd/config9.m4
index 3c4b5c808..ba1f0b75e 100644
--- a/ext/mysqlnd/config9.m4
+++ b/ext/mysqlnd/config9.m4
@@ -1,9 +1,12 @@
dnl
-dnl $Id: config9.m4 309609 2011-03-23 17:14:28Z andrey $
+dnl $Id: config9.m4 316281 2011-09-06 16:38:22Z johannes $
dnl config.m4 for mysqlnd driver
+PHP_ARG_ENABLE(mysqlnd, whether to enable mysqlnd,
+ [ --enable-mysqlnd Enable mysqlnd expliciely, will be done implicitly
+ when required by other extensions], no, yes)
-PHP_ARG_ENABLE(mysqlnd_compression_support, whether to enable compressed protocol support in mysqlnd,
+PHP_ARG_ENABLE(mysqlnd_compression_support, whether to disable compressed protocol support in mysqlnd,
[ --disable-mysqlnd-compression-support
Disable support for the MySQL compressed protocol in mysqlnd], yes, no)
@@ -13,7 +16,7 @@ if test -z "$PHP_ZLIB_DIR"; then
fi
dnl If some extension uses mysqlnd it will get compiled in PHP core
-if test "$PHP_MYSQLND_ENABLED" = "yes"; then
+if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes"; then
mysqlnd_ps_sources="mysqlnd_ps.c mysqlnd_ps_codec.c"
mysqlnd_base_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
mysqlnd_loaddata.c mysqlnd_net.c mysqlnd_statistics.c \
@@ -27,12 +30,12 @@ if test "$PHP_MYSQLND_ENABLED" = "yes"; then
AC_DEFINE([MYSQLND_SSL_SUPPORTED], 1, [Enable SSL support])
mysqlnd_sources="$mysqlnd_base_sources $mysqlnd_ps_sources"
- PHP_NEW_EXTENSION(mysqlnd, $mysqlnd_sources, no)
+ PHP_NEW_EXTENSION(mysqlnd, $mysqlnd_sources, $ext_shared)
PHP_ADD_BUILD_DIR([ext/mysqlnd], 1)
PHP_INSTALL_HEADERS([ext/mysqlnd/])
fi
-if test "$PHP_MYSQLND_ENABLED" = "yes" || test "$PHP_MYSQLI" != "no"; then
+if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes" || test "$PHP_MYSQLI" != "no"; then
PHP_ADD_BUILD_DIR([ext/mysqlnd], 1)
dnl This creates a file so it has to be after above macros
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index e3f892894..7815c6642 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd.c 314740 2011-08-10 14:12:24Z andrey $ */
+/* $Id: mysqlnd.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_wireprotocol.h"
@@ -886,6 +886,144 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
/* }}} */
+/* {{{ mysqlnd_conn::change_user */
+static enum_func_status
+MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
+ const char *user,
+ const char *passwd,
+ const char *db,
+ zend_bool silent TSRMLS_DC)
+{
+ size_t user_len;
+ enum_func_status ret = FAIL;
+ MYSQLND_PACKET_CHG_USER_RESPONSE * chg_user_resp;
+ char buffer[MYSQLND_MAX_ALLOWED_USER_LEN + 1 + 1 + SCRAMBLE_LENGTH + MYSQLND_MAX_ALLOWED_DB_LEN + 1 + 2 /* charset*/ + 2];
+ char *p = buffer;
+ const MYSQLND_CHARSET * old_cs = conn->charset;
+
+ DBG_ENTER("mysqlnd_conn::change_user");
+ DBG_INF_FMT("conn=%llu user=%s passwd=%s db=%s silent=%u",
+ conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
+
+ SET_ERROR_AFF_ROWS(conn);
+
+ if (!user) {
+ user = "";
+ }
+ if (!passwd) {
+ passwd = "";
+ }
+ if (!db) {
+ db = "";
+ }
+
+ /* 1. user ASCIIZ */
+ user_len = MIN(strlen(user), MYSQLND_MAX_ALLOWED_USER_LEN);
+ memcpy(p, user, user_len);
+ p += user_len;
+ *p++ = '\0';
+
+ /* 2. password SCRAMBLE_LENGTH followed by the scramble or \0 */
+ if (passwd[0]) {
+ *p++ = SCRAMBLE_LENGTH;
+ php_mysqlnd_scramble((unsigned char *)p, conn->scramble, (unsigned char *)passwd);
+ p += SCRAMBLE_LENGTH;
+ } else {
+ *p++ = '\0';
+ }
+
+ /* 3. db ASCIIZ */
+ if (db[0]) {
+ size_t db_len = MIN(strlen(db), MYSQLND_MAX_ALLOWED_DB_LEN);
+ memcpy(p, db, db_len);
+ p += db_len;
+ }
+ *p++ = '\0';
+
+ /*
+ 4. request the current charset, or it will be reset to the system one.
+ 5.0 doesn't support it. Support added in 5.1.23 by fixing the following bug :
+ Bug #30472 libmysql doesn't reset charset, insert_id after succ. mysql_change_user() call
+ */
+ if (mysqlnd_get_server_version(conn) >= 50123) {
+ int2store(p, conn->charset->nr);
+ p+=2;
+ }
+
+ if (PASS != conn->m->simple_command(conn, COM_CHANGE_USER, buffer, p - buffer,
+ PROT_LAST /* we will handle the OK packet*/,
+ silent, TRUE TSRMLS_CC)) {
+ DBG_RETURN(FAIL);
+ }
+
+ chg_user_resp = conn->protocol->m.get_change_user_response_packet(conn->protocol, FALSE TSRMLS_CC);
+ if (!chg_user_resp) {
+ SET_OOM_ERROR(conn->error_info);
+ goto end;
+ }
+ ret = PACKET_READ(chg_user_resp, conn);
+ conn->error_info = chg_user_resp->error_info;
+
+ if (conn->error_info.error_no) {
+ ret = FAIL;
+ /*
+ COM_CHANGE_USER is broken in 5.1. At least in 5.1.15 and 5.1.14, 5.1.11 is immune.
+ bug#25371 mysql_change_user() triggers "packets out of sync"
+ When it gets fixed, there should be one more check here
+ */
+ if (mysqlnd_get_server_version(conn) > 50113L && mysqlnd_get_server_version(conn) < 50118L) {
+ MYSQLND_PACKET_OK * redundant_error_packet = conn->protocol->m.get_ok_packet(conn->protocol, FALSE TSRMLS_CC);
+ if (redundant_error_packet) {
+ PACKET_READ(redundant_error_packet, conn);
+ PACKET_FREE(redundant_error_packet);
+ DBG_INF_FMT("Server is %u, buggy, sends two ERR messages", mysqlnd_get_server_version(conn));
+ } else {
+ SET_OOM_ERROR(conn->error_info);
+ }
+ }
+ }
+ if (ret == PASS) {
+ char * tmp = NULL;
+ /* if we get conn->user as parameter and then we first free it, then estrndup it, we will crash */
+ tmp = mnd_pestrndup(user, user_len, conn->persistent);
+ if (conn->user) {
+ mnd_pefree(conn->user, conn->persistent);
+ }
+ conn->user = tmp;
+
+ tmp = mnd_pestrdup(passwd, conn->persistent);
+ if (conn->passwd) {
+ mnd_pefree(conn->passwd, conn->persistent);
+ }
+ conn->passwd = tmp;
+
+ if (conn->last_message) {
+ mnd_pefree(conn->last_message, conn->persistent);
+ conn->last_message = NULL;
+ }
+ memset(&conn->upsert_status, 0, sizeof(conn->upsert_status));
+ /* set charset for old servers */
+ if (mysqlnd_get_server_version(conn) < 50123) {
+ ret = conn->m->set_charset(conn, old_cs->name TSRMLS_CC);
+ }
+ } else if (ret == FAIL && chg_user_resp->server_asked_323_auth == TRUE) {
+ /* old authentication with new server !*/
+ DBG_ERR(mysqlnd_old_passwd);
+ SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, mysqlnd_old_passwd);
+ }
+end:
+ PACKET_FREE(chg_user_resp);
+
+ /*
+ Here we should close all statements. Unbuffered queries should not be a
+ problem as we won't allow sending COM_CHANGE_USER.
+ */
+ DBG_INF(ret == PASS? "PASS":"FAIL");
+ DBG_RETURN(ret);
+}
+/* }}} */
+
+
/* {{{ mysqlnd_conn::query */
/*
If conn->error_info.error_no is not zero, then we had an error.
@@ -1043,7 +1181,7 @@ static int mysqlnd_stream_array_from_fd_set(MYSQLND **conn_array, fd_set *fds TS
return ret;
}
-
+/* }}} */
#ifndef PHP_WIN32
#define php_select(m, r, w, e, t) select(m, r, w, e, t)
@@ -1407,7 +1545,7 @@ MYSQLND_METHOD(mysqlnd_conn, kill)(MYSQLND * conn, unsigned int pid TSRMLS_DC)
char buff[4];
DBG_ENTER("mysqlnd_conn::kill");
- DBG_INF_FMT("conn=%llu pid=%lu", conn->thread_id, pid);
+ DBG_INF_FMT("conn=%llu pid=%u", conn->thread_id, pid);
int4store(buff, pid);
@@ -1869,149 +2007,6 @@ PHPAPI const char *mysqlnd_field_type_name(enum mysqlnd_field_types field_type)
/* }}} */
-/* {{{ mysqlnd_conn::change_user */
-static enum_func_status
-MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
- const char *user,
- const char *passwd,
- const char *db,
- zend_bool silent TSRMLS_DC)
-{
- /*
- User could be max 16 * 3 (utf8), pass is 20 usually, db is up to 64*3
- Stack space is not that expensive, so use a bit more to be protected against
- buffer overflows.
- */
- size_t user_len;
- enum_func_status ret = FAIL;
- MYSQLND_PACKET_CHG_USER_RESPONSE * chg_user_resp;
- char buffer[MYSQLND_MAX_ALLOWED_USER_LEN + 1 + SCRAMBLE_LENGTH + MYSQLND_MAX_ALLOWED_DB_LEN + 1 + 2 /* charset*/ ];
- char *p = buffer;
- const MYSQLND_CHARSET * old_cs = conn->charset;
-
- DBG_ENTER("mysqlnd_conn::change_user");
- DBG_INF_FMT("conn=%llu user=%s passwd=%s db=%s silent=%u",
- conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
-
- SET_ERROR_AFF_ROWS(conn);
-
- if (!user) {
- user = "";
- }
- if (!passwd) {
- passwd = "";
- }
- if (!db) {
- db = "";
- }
-
- /* 1. user ASCIIZ */
- user_len = MIN(strlen(user), MYSQLND_MAX_ALLOWED_USER_LEN);
- memcpy(p, user, user_len);
- p += user_len;
- *p++ = '\0';
-
- /* 2. password SCRAMBLE_LENGTH followed by the scramble or \0 */
- if (passwd[0]) {
- *p++ = SCRAMBLE_LENGTH;
- php_mysqlnd_scramble((unsigned char *)p, conn->scramble, (unsigned char *)passwd);
- p += SCRAMBLE_LENGTH;
- } else {
- *p++ = '\0';
- }
-
- /* 3. db ASCIIZ */
- if (db[0]) {
- size_t db_len = MIN(strlen(db), MYSQLND_MAX_ALLOWED_DB_LEN);
- memcpy(p, db, db_len);
- p += db_len;
- }
- *p++ = '\0';
-
- /*
- 4. request the current charset, or it will be reset to the system one.
- 5.0 doesn't support it. Support added in 5.1.23 by fixing the following bug :
- Bug #30472 libmysql doesn't reset charset, insert_id after succ. mysql_change_user() call
- */
- if (mysqlnd_get_server_version(conn) >= 50123) {
- int2store(p, conn->charset->nr);
- p+=2;
- }
-
- if (PASS != conn->m->simple_command(conn, COM_CHANGE_USER, buffer, p - buffer,
- PROT_LAST /* we will handle the OK packet*/,
- silent, TRUE TSRMLS_CC)) {
- DBG_RETURN(FAIL);
- }
-
- chg_user_resp = conn->protocol->m.get_change_user_response_packet(conn->protocol, FALSE TSRMLS_CC);
- if (!chg_user_resp) {
- SET_OOM_ERROR(conn->error_info);
- goto end;
- }
- ret = PACKET_READ(chg_user_resp, conn);
- conn->error_info = chg_user_resp->error_info;
-
- if (conn->error_info.error_no) {
- ret = FAIL;
- /*
- COM_CHANGE_USER is broken in 5.1. At least in 5.1.15 and 5.1.14, 5.1.11 is immune.
- bug#25371 mysql_change_user() triggers "packets out of sync"
- When it gets fixed, there should be one more check here
- */
- if (mysqlnd_get_server_version(conn) > 50113L && mysqlnd_get_server_version(conn) < 50118L) {
- MYSQLND_PACKET_OK * redundant_error_packet = conn->protocol->m.get_ok_packet(conn->protocol, FALSE TSRMLS_CC);
- if (redundant_error_packet) {
- PACKET_READ(redundant_error_packet, conn);
- PACKET_FREE(redundant_error_packet);
- DBG_INF_FMT("Server is %u, buggy, sends two ERR messages", mysqlnd_get_server_version(conn));
- } else {
- SET_OOM_ERROR(conn->error_info);
- }
- }
- }
- if (ret == PASS) {
- char * tmp = NULL;
- /* if we get conn->user as parameter and then we first free it, then estrndup it, we will crash */
- tmp = mnd_pestrndup(user, user_len, conn->persistent);
- if (conn->user) {
- mnd_pefree(conn->user, conn->persistent);
- }
- conn->user = tmp;
-
- tmp = mnd_pestrdup(passwd, conn->persistent);
- if (conn->passwd) {
- mnd_pefree(conn->passwd, conn->persistent);
- }
- conn->passwd = tmp;
-
- if (conn->last_message) {
- mnd_pefree(conn->last_message, conn->persistent);
- conn->last_message = NULL;
- }
- memset(&conn->upsert_status, 0, sizeof(conn->upsert_status));
- /* set charset for old servers */
- if (mysqlnd_get_server_version(conn) < 50123) {
- ret = conn->m->set_charset(conn, old_cs->name TSRMLS_CC);
- }
- } else if (ret == FAIL && chg_user_resp->server_asked_323_auth == TRUE) {
- /* old authentication with new server !*/
- DBG_ERR(mysqlnd_old_passwd);
- SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, mysqlnd_old_passwd);
- }
-end:
- PACKET_FREE(chg_user_resp);
-
- /*
- Here we should close all statements. Unbuffered queries should not be a
- problem as we won't allow sending COM_CHANGE_USER.
- */
- DBG_INF(ret == PASS? "PASS":"FAIL");
- DBG_RETURN(ret);
-}
-/* }}} */
-
-
/* {{{ mysqlnd_conn::set_client_option */
static enum_func_status
MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND * const conn,
diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h
index 571d1f56a..bf76bfd9f 100644
--- a/ext/mysqlnd/mysqlnd.h
+++ b/ext/mysqlnd/mysqlnd.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,12 +17,12 @@
| Ulf Wendel <uwendel@mysql.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd.h 310735 2011-05-03 09:37:53Z andrey $ */
+/* $Id: mysqlnd.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_H
#define MYSQLND_H
-#define MYSQLND_VERSION "mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $"
+#define MYSQLND_VERSION "mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $"
#define MYSQLND_VERSION_ID 50008
/* This forces inlining of some accessor functions */
diff --git a/ext/mysqlnd/mysqlnd_block_alloc.c b/ext/mysqlnd/mysqlnd_block_alloc.c
index fd957a989..289b2ccb9 100644
--- a/ext/mysqlnd/mysqlnd_block_alloc.c
+++ b/ext/mysqlnd/mysqlnd_block_alloc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_block_alloc.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_block_alloc.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
diff --git a/ext/mysqlnd/mysqlnd_block_alloc.h b/ext/mysqlnd/mysqlnd_block_alloc.h
index 12ee34079..38e87e308 100644
--- a/ext/mysqlnd/mysqlnd_block_alloc.h
+++ b/ext/mysqlnd/mysqlnd_block_alloc.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_block_alloc.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_block_alloc.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_BLOCK_ALLOC_H
#define MYSQLND_BLOCK_ALLOC_H
diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c
index 6c8e7a5cc..5b60711a8 100644
--- a/ext/mysqlnd/mysqlnd_charset.c
+++ b/ext/mysqlnd/mysqlnd_charset.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -122,11 +122,11 @@ static unsigned int check_mb_utf8_sequence(const char *start, const char *end)
[F4][80..8F][80..BF][80..BF]
*/
- if (!((start[1] ^ 0x80) < 0x40 &&
- (start[2] ^ 0x80) < 0x40 &&
- (start[3] ^ 0x80) < 0x40 &&
- (c >= 0xf1 || start[1] >= 0x90) &&
- (c <= 0xf3 || start[1] <= 0x8F)))
+ if (!(((zend_uchar)start[1] ^ 0x80) < 0x40 &&
+ ((zend_uchar)start[2] ^ 0x80) < 0x40 &&
+ ((zend_uchar)start[3] ^ 0x80) < 0x40 &&
+ (c >= 0xf1 || (zend_uchar)start[1] >= 0x90) &&
+ (c <= 0xf3 || (zend_uchar)start[1] <= 0x8F)))
{
return 0; /* invalid utf8 character */
}
diff --git a/ext/mysqlnd/mysqlnd_charset.h b/ext/mysqlnd/mysqlnd_charset.h
index 69194bea4..2f5d1db27 100644
--- a/ext/mysqlnd/mysqlnd_charset.h
+++ b/ext/mysqlnd/mysqlnd_charset.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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/mysqlnd/mysqlnd_debug.c b/ext/mysqlnd/mysqlnd_debug.c
index a7a13df1b..01d4ea749 100644
--- a/ext/mysqlnd/mysqlnd_debug.c
+++ b/ext/mysqlnd/mysqlnd_debug.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_debug.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_debug.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
diff --git a/ext/mysqlnd/mysqlnd_debug.h b/ext/mysqlnd/mysqlnd_debug.h
index f6a571d43..9bb9f0eb8 100644
--- a/ext/mysqlnd/mysqlnd_debug.h
+++ b/ext/mysqlnd/mysqlnd_debug.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_debug.h 310768 2011-05-04 19:09:12Z andrey $ */
+/* $Id: mysqlnd_debug.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_DEBUG_H
#define MYSQLND_DEBUG_H
diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h
index 279827aa2..c291b4438 100644
--- a/ext/mysqlnd/mysqlnd_enum_n_def.h
+++ b/ext/mysqlnd/mysqlnd_enum_n_def.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_enum_n_def.h 307883 2011-01-31 13:52:21Z andrey $ */
+/* $Id: mysqlnd_enum_n_def.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_ENUM_N_DEF_H
#define MYSQLND_ENUM_N_DEF_H
diff --git a/ext/mysqlnd/mysqlnd_libmysql_compat.h b/ext/mysqlnd/mysqlnd_libmysql_compat.h
index 0498f058e..c95539b08 100644
--- a/ext/mysqlnd/mysqlnd_libmysql_compat.h
+++ b/ext/mysqlnd/mysqlnd_libmysql_compat.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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/mysqlnd/mysqlnd_loaddata.c b/ext/mysqlnd/mysqlnd_loaddata.c
index 11413e2c7..557caa294 100644
--- a/ext/mysqlnd/mysqlnd_loaddata.c
+++ b/ext/mysqlnd/mysqlnd_loaddata.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
index 600a65080..e80192850 100644
--- a/ext/mysqlnd/mysqlnd_net.c
+++ b/ext/mysqlnd/mysqlnd_net.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -120,6 +120,17 @@ MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * net, const char * const schem
net->packet_no = net->compressed_envelope_packet_no = 0;
+ if (net->stream) {
+ /* close before opening a new one */
+ DBG_INF_FMT("Freeing stream. abstract=%p", net->stream->abstract);
+ if (net->persistent) {
+ php_stream_free(net->stream, PHP_STREAM_FREE_CLOSE_PERSISTENT | PHP_STREAM_FREE_RSRC_DTOR);
+ } else {
+ php_stream_free(net->stream, PHP_STREAM_FREE_CLOSE);
+ }
+ net->stream = NULL;
+ }
+
if (net->options.timeout_connect) {
tv.tv_sec = net->options.timeout_connect;
tv.tv_usec = 0;
@@ -254,7 +265,7 @@ MYSQLND_METHOD(mysqlnd_net, send)(MYSQLND * const conn, char * const buf, size_t
STORE_HEADER_SIZE(safe_storage, uncompressed_payload);
int3store(uncompressed_payload, to_be_sent);
int1store(uncompressed_payload + 3, net->packet_no);
- if (PASS == net->m.encode((compress_buf + COMPRESSED_HEADER_SIZE + MYSQLND_HEADER_SIZE), tmp_complen,
+ if (PASS == net->m.encode((compress_buf + COMPRESSED_HEADER_SIZE + MYSQLND_HEADER_SIZE), &tmp_complen,
uncompressed_payload, to_be_sent + MYSQLND_HEADER_SIZE TSRMLS_CC))
{
int3store(compress_buf + MYSQLND_HEADER_SIZE, to_be_sent + MYSQLND_HEADER_SIZE);
@@ -480,20 +491,22 @@ MYSQLND_METHOD(mysqlnd_net, decode)(zend_uchar * uncompressed_data, size_t uncom
/* {{{ mysqlnd_net::encode */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_net, encode)(zend_uchar * compress_buffer, size_t compress_buffer_len,
+MYSQLND_METHOD(mysqlnd_net, encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len,
const zend_uchar * const uncompressed_data, size_t uncompressed_data_len TSRMLS_DC)
{
#ifdef MYSQLND_COMPRESSION_ENABLED
int error;
- uLongf tmp_complen = compress_buffer_len;
+ uLongf tmp_complen = *compress_buffer_len;
DBG_ENTER("mysqlnd_net::encode");
error = compress(compress_buffer, &tmp_complen, uncompressed_data, uncompressed_data_len);
if (error != Z_OK) {
DBG_INF_FMT("compression NOT successful. error=%d Z_OK=%d Z_BUF_ERROR=%d Z_MEM_ERROR=%d", error, Z_OK, Z_BUF_ERROR, Z_MEM_ERROR);
} else {
+ *compress_buffer_len = tmp_complen;
DBG_INF_FMT("compression successful. compressed size=%lu", tmp_complen);
}
+
DBG_RETURN(error == Z_OK? PASS:FAIL);
#else
DBG_ENTER("mysqlnd_net::encode");
diff --git a/ext/mysqlnd/mysqlnd_net.h b/ext/mysqlnd/mysqlnd_net.h
index 8a0e399b5..d4077aea0 100644
--- a/ext/mysqlnd/mysqlnd_net.h
+++ b/ext/mysqlnd/mysqlnd_net.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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/mysqlnd/mysqlnd_priv.h b/ext/mysqlnd/mysqlnd_priv.h
index 4e2294625..09ca81b1b 100644
--- a/ext/mysqlnd/mysqlnd_priv.h
+++ b/ext/mysqlnd/mysqlnd_priv.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_priv.h 311643 2011-05-31 10:35:07Z andrey $ */
+/* $Id: mysqlnd_priv.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_PRIV_H
#define MYSQLND_PRIV_H
@@ -147,15 +147,8 @@
#define SET_STMT_ERROR(stmt, a, b, c) SET_CLIENT_ERROR((stmt)->error_info, a, b, c)
-
-#ifdef ZTS
#define CONN_GET_STATE(c) (c)->m->get_state((c) TSRMLS_CC)
#define CONN_SET_STATE(c, s) (c)->m->set_state((c), (s) TSRMLS_CC)
-#else
-#define CONN_GET_STATE(c) ((c)->state)
-#define CONN_SET_STATE(c, s) ((c)->state = (s))
-#endif
-
/* PS stuff */
typedef void (*ps_field_fetch_func)(zval *zv, const MYSQLND_FIELD * const field,
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index 61c3089f6..6dc5011a6 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_ps.c 307921 2011-02-01 16:55:20Z andrey $ */
+/* $Id: mysqlnd_ps.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_wireprotocol.h"
@@ -41,7 +41,7 @@ static struct st_mysqlnd_stmt_methods *mysqlnd_stmt_methods;
/* Exported by mysqlnd_ps_codec.c */
enum_func_status mysqlnd_stmt_execute_generate_request(MYSQLND_STMT * const s, zend_uchar ** request, size_t *request_len, zend_bool * free_buffer TSRMLS_DC);
-enum_func_status mysqlnd_fetch_stmt_row_buffered(MYSQLND_RES *result, void *param,
+enum_func_status mysqlnd_stmt_fetch_row_buffered(MYSQLND_RES *result, void *param,
unsigned int flags,
zend_bool *fetched_anything TSRMLS_DC);
@@ -97,7 +97,7 @@ MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC)
result = stmt->result;
result->type = MYSQLND_RES_PS_BUF;
- result->m.fetch_row = mysqlnd_fetch_stmt_row_buffered;
+ result->m.fetch_row = mysqlnd_stmt_fetch_row_buffered;
result->m.fetch_lengths = NULL;/* makes no sense */
result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC);
@@ -724,16 +724,16 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const s TSRMLS_DC)
/* }}} */
-/* {{{ mysqlnd_fetch_stmt_row_buffered */
+/* {{{ mysqlnd_stmt_fetch_row_buffered */
enum_func_status
-mysqlnd_fetch_stmt_row_buffered(MYSQLND_RES *result, void *param, unsigned int flags, zend_bool *fetched_anything TSRMLS_DC)
+mysqlnd_stmt_fetch_row_buffered(MYSQLND_RES *result, void *param, unsigned int flags, zend_bool *fetched_anything TSRMLS_DC)
{
MYSQLND_STMT * s = (MYSQLND_STMT *) param;
MYSQLND_STMT_DATA * stmt = s? s->data:NULL;
MYSQLND_RES_BUFFERED *set = result->stored_data;
unsigned int field_count = result->meta->field_count;
- DBG_ENTER("mysqlnd_fetch_stmt_row_buffered");
+ DBG_ENTER("mysqlnd_stmt_fetch_row_buffered");
*fetched_anything = FALSE;
DBG_INF_FMT("stmt=%lu", stmt != NULL ? stmt->stmt_id : 0L);
diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c b/ext/mysqlnd/mysqlnd_ps_codec.c
index 4be7ead2d..ec0baf2a5 100644
--- a/ext/mysqlnd/mysqlnd_ps_codec.c
+++ b/ext/mysqlnd/mysqlnd_ps_codec.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_ps_codec.c 309655 2011-03-24 16:12:18Z andrey $ */
+/* $Id: mysqlnd_ps_codec.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_wireprotocol.h"
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index 582f5c2ed..6c0fe59b2 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_result.c 311122 2011-05-17 09:44:11Z andrey $ */
+/* $Id: mysqlnd_result.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_wireprotocol.h"
@@ -616,19 +616,18 @@ mysqlnd_fetch_lengths_buffered(MYSQLND_RES * const result TSRMLS_DC)
static unsigned long *
mysqlnd_fetch_lengths_unbuffered(MYSQLND_RES * const result TSRMLS_DC)
{
- return result->lengths;
+ /* simulate output of libmysql */
+ return (!result->unbuf || result->unbuf->last_row_data || result->unbuf->eof_reached)? result->lengths:NULL;
}
/* }}} */
-#if !defined(MYSQLND_USE_OPTIMISATIONS) || MYSQLND_USE_OPTIMISATIONS == 0
/* {{{ mysqlnd_res::fetch_lengths */
PHPAPI unsigned long * _mysqlnd_fetch_lengths(MYSQLND_RES * const result TSRMLS_DC)
{
return result->m.fetch_lengths? result->m.fetch_lengths(result TSRMLS_CC) : NULL;
}
/* }}} */
-#endif
/* {{{ mysqlnd_fetch_row_unbuffered_c */
diff --git a/ext/mysqlnd/mysqlnd_result.h b/ext/mysqlnd/mysqlnd_result.h
index 3b20a84bc..63523c9fd 100644
--- a/ext/mysqlnd/mysqlnd_result.h
+++ b/ext/mysqlnd/mysqlnd_result.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_result.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_result.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_RESULT_H
#define MYSQLND_RESULT_H
diff --git a/ext/mysqlnd/mysqlnd_result_meta.c b/ext/mysqlnd/mysqlnd_result_meta.c
index 83a1ae1b1..236be7392 100644
--- a/ext/mysqlnd/mysqlnd_result_meta.c
+++ b/ext/mysqlnd/mysqlnd_result_meta.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_result_meta.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_result_meta.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_priv.h"
diff --git a/ext/mysqlnd/mysqlnd_result_meta.h b/ext/mysqlnd/mysqlnd_result_meta.h
index e7d52ce10..d459838bd 100644
--- a/ext/mysqlnd/mysqlnd_result_meta.h
+++ b/ext/mysqlnd/mysqlnd_result_meta.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_result_meta.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_result_meta.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_RESULT_META_H
#define MYSQLND_RESULT_META_H
diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c
index 8095b7ee8..d25c88adf 100644
--- a/ext/mysqlnd/mysqlnd_statistics.c
+++ b/ext/mysqlnd/mysqlnd_statistics.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_statistics.c 307593 2011-01-19 18:09:17Z andrey $ */
+/* $Id: mysqlnd_statistics.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "mysqlnd.h"
#include "mysqlnd_priv.h"
diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h
index f02e08a63..27211c62b 100644
--- a/ext/mysqlnd/mysqlnd_statistics.h
+++ b/ext/mysqlnd/mysqlnd_statistics.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_statistics.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_statistics.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_STATISTICS_H
#define MYSQLND_STATISTICS_H
diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h
index 28bbf07a7..680587f52 100644
--- a/ext/mysqlnd/mysqlnd_structs.h
+++ b/ext/mysqlnd/mysqlnd_structs.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_structs.h 314740 2011-08-10 14:12:24Z andrey $ */
+/* $Id: mysqlnd_structs.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_STRUCTS_H
#define MYSQLND_STRUCTS_H
@@ -258,7 +258,7 @@ typedef enum_func_status (*func_mysqlnd_net__set_client_option)(MYSQLND_NET * co
typedef enum_func_status (*func_mysqlnd_net__network_read)(MYSQLND * conn, zend_uchar * buffer, size_t count TSRMLS_DC);
typedef size_t (*func_mysqlnd_net__network_write)(MYSQLND * const conn, const zend_uchar * const buf, size_t count TSRMLS_DC);
typedef enum_func_status (*func_mysqlnd_net__decode)(zend_uchar * uncompressed_data, size_t uncompressed_data_len, const zend_uchar * const compressed_data, size_t compressed_data_len TSRMLS_DC);
-typedef enum_func_status (*func_mysqlnd_net__encode)(zend_uchar * compress_buffer, size_t compress_buffer_len, const zend_uchar * const uncompressed_data, size_t uncompressed_data_len TSRMLS_DC);
+typedef enum_func_status (*func_mysqlnd_net__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, size_t uncompressed_data_len TSRMLS_DC);
typedef size_t (*func_mysqlnd_net__consume_uneaten_data)(MYSQLND_NET * const net, enum php_mysqlnd_server_command cmd TSRMLS_DC);
typedef void (*func_mysqlnd_net__free_contents)(MYSQLND_NET * net TSRMLS_DC);
typedef enum_func_status (*func_mysqlnd_net__enable_ssl)(MYSQLND_NET * const net TSRMLS_DC);
diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c
index 61582a3aa..e7cf47427 100644
--- a/ext/mysqlnd/mysqlnd_wireprotocol.c
+++ b/ext/mysqlnd/mysqlnd_wireprotocol.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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/mysqlnd/mysqlnd_wireprotocol.h b/ext/mysqlnd/mysqlnd_wireprotocol.h
index 77a2ec7cf..6d3770b03 100644
--- a/ext/mysqlnd/mysqlnd_wireprotocol.h
+++ b/ext/mysqlnd/mysqlnd_wireprotocol.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd_wireprotocol.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mysqlnd_wireprotocol.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MYSQLND_WIREPROTOCOL_H
#define MYSQLND_WIREPROTOCOL_H
diff --git a/ext/mysqlnd/php_mysqlnd.c b/ext/mysqlnd/php_mysqlnd.c
index 47c546536..a39909cf0 100644
--- a/ext/mysqlnd/php_mysqlnd.c
+++ b/ext/mysqlnd/php_mysqlnd.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mysqlnd.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: php_mysqlnd.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_ini.h"
#include "mysqlnd.h"
@@ -299,6 +299,11 @@ zend_module_entry mysqlnd_module_entry = {
};
/* }}} */
+/* {{{ COMPILE_DL_MYSQLND */
+#ifdef COMPILE_DL_MYSQLND
+ZEND_GET_MODULE(mysqlnd)
+#endif
+/* }}} */
/*
* Local variables:
diff --git a/ext/mysqlnd/php_mysqlnd.h b/ext/mysqlnd/php_mysqlnd.h
index db47bdb00..1ec85262c 100644
--- a/ext/mysqlnd/php_mysqlnd.h
+++ b/ext/mysqlnd/php_mysqlnd.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
- $Id: php_mysqlnd.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_mysqlnd.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_MYSQLND_H
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c
index b2a42ed46..367c55464 100644
--- a/ext/oci8/oci8.c
+++ b/ext/oci8/oci8.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -26,7 +26,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8.c 313688 2011-07-25 23:40:57Z sixd $ */
+/* $Id: oci8.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -79,11 +79,14 @@ static PHP_GSHUTDOWN_FUNCTION(oci);
#endif
/* For a user friendly message about environment setup */
-/* TODO: add cases for SHLIB_PATH, LIBPATH, LD_LIBRARY_PATH_64 etc */
#if defined(PHP_WIN32)
#define PHP_OCI8_LIB_PATH_MSG "PATH"
#elif defined(__APPLE__)
#define PHP_OCI8_LIB_PATH_MSG "DYLD_LIBRARY_PATH"
+#elif defined(_AIX)
+#define PHP_OCI8_LIB_PATH_MSG "LIBPATH"
+#elif defined(__hpux)
+#define PHP_OCI8_LIB_PATH_MSG "SHLIB_PATH"
#else
#define PHP_OCI8_LIB_PATH_MSG "LD_LIBRARY_PATH"
#endif
@@ -106,7 +109,12 @@ zend_class_entry *oci_coll_class_entry_ptr;
#define SQLT_CFILEE 115
#endif
-#define PHP_OCI_ERRBUF_LEN 1024
+#ifdef OCI_ERROR_MAXMSG_SIZE2
+/* Bigger size is defined from 11.2.0.3 onwards */
+#define PHP_OCI_ERRBUF_LEN OCI_ERROR_MAXMSG_SIZE2
+#else
+#define PHP_OCI_ERRBUF_LEN OCI_ERROR_MAXMSG_SIZE
+#endif
#if ZEND_MODULE_API_NO > 20020429
#define ONUPDATELONGFUNC OnUpdateLong
@@ -1063,7 +1071,7 @@ static void php_oci_init_global_handles(TSRMLS_D)
{
sword errstatus;
sb4 ora_error_code = 0;
- text tmp_buf[PHP_OCI_ERRBUF_LEN];
+ text tmp_buf[OCI_ERROR_MAXMSG_SIZE]; /* Use traditional smaller size: non-PL/SQL errors should fit and it keeps the stack smaller */
errstatus = OCIEnvNlsCreate(&OCI_G(env), PHP_OCI_INIT_MODE, 0, NULL, NULL, NULL, 0, NULL, 0, 0);
@@ -1074,7 +1082,7 @@ static void php_oci_init_global_handles(TSRMLS_D)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and " PHP_OCI8_LIB_PATH_MSG " are set and point to the right directories");
#endif
if (OCI_G(env)
- && OCIErrorGet(OCI_G(env), (ub4)1, NULL, &ora_error_code, tmp_buf, (ub4)PHP_OCI_ERRBUF_LEN, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS
+ && OCIErrorGet(OCI_G(env), (ub4)1, NULL, &ora_error_code, tmp_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS
&& *tmp_buf) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", tmp_buf);
}
@@ -1103,7 +1111,7 @@ static void php_oci_init_global_handles(TSRMLS_D)
PHP_OCI_CALL(OCIHandleFree, (cpoolh, OCI_HTYPE_CPOOL));
#endif
} else {
- OCIErrorGet(OCI_G(env), (ub4)1, NULL, &ora_error_code, tmp_buf, (ub4)PHP_OCI_ERRBUF_LEN, (ub4)OCI_HTYPE_ERROR);
+ OCIErrorGet(OCI_G(env), (ub4)1, NULL, &ora_error_code, tmp_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ERROR);
if (ora_error_code) {
int tmp_buf_len = strlen((char *)tmp_buf);
@@ -1333,7 +1341,7 @@ PHP_MINFO_FUNCTION(oci)
php_info_print_table_start();
php_info_print_table_row(2, "OCI8 Support", "enabled");
php_info_print_table_row(2, "Version", PHP_OCI8_VERSION);
- php_info_print_table_row(2, "Revision", "$Revision: 313688 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
snprintf(buf, sizeof(buf), "%ld", OCI_G(num_persistent));
php_info_print_table_row(2, "Active Persistent Connections", buf);
@@ -1624,9 +1632,9 @@ sb4 php_oci_error(OCIError *err_p, sword status TSRMLS_DC)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NEED_DATA");
break;
case OCI_NO_DATA:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA");
errcode = php_oci_fetch_errmsg(err_p, &errbuf TSRMLS_CC);
if (errbuf) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errbuf);
efree(errbuf);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCI_NO_DATA: failed to fetch error message");
@@ -2046,7 +2054,14 @@ php_oci_connection *php_oci_do_connect_ex(char *username, int username_len, char
connection->is_persistent = 0;
} else {
connection = (php_oci_connection *) calloc(1, sizeof(php_oci_connection));
+ if (connection == NULL) {
+ return NULL;
+ }
connection->hash_key = zend_strndup(hashed_details.c, hashed_details.len);
+ if (connection->hash_key == NULL) {
+ free(connection);
+ return NULL;
+ }
connection->is_persistent = 1;
}
} else {
@@ -2181,10 +2196,10 @@ static int php_oci_connection_ping(php_oci_connection *connection TSRMLS_DC)
return 1;
} else {
sb4 error_code = 0;
- text tmp_buf[PHP_OCI_ERRBUF_LEN];
+ text tmp_buf[OCI_ERROR_MAXMSG_SIZE];
/* Treat ORA-1010 as a successful Ping */
- OCIErrorGet(OCI_G(err), (ub4)1, NULL, &error_code, tmp_buf, (ub4)PHP_OCI_ERRBUF_LEN, (ub4)OCI_HTYPE_ERROR);
+ OCIErrorGet(OCI_G(err), (ub4)1, NULL, &error_code, tmp_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ERROR);
if (error_code == 1010) {
return 1;
}
@@ -2696,12 +2711,20 @@ static php_oci_spool *php_oci_create_spool(char *username, int username_len, cha
ub4 poolmode = OCI_DEFAULT; /* Mode to be passed to OCISessionPoolCreate */
OCIAuthInfo *spoolAuth = NULL;
- /*Allocate sessionpool out of persistent memory */
+ /* Allocate sessionpool out of persistent memory */
session_pool = (php_oci_spool *) calloc(1, sizeof(php_oci_spool));
+ if (session_pool == NULL) {
+ iserror = 1;
+ goto exit_create_spool;
+ }
/* Populate key if passed */
if (hash_key_len) {
session_pool->spool_hash_key = zend_strndup(hash_key, hash_key_len);
+ if (session_pool->spool_hash_key == NULL) {
+ iserror = 1;
+ goto exit_create_spool;
+ }
}
/* Create the session pool's env */
@@ -2893,11 +2916,20 @@ static OCIEnv *php_oci_create_env(ub2 charsetid TSRMLS_DC)
PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIEnvNlsCreate, (&retenv, OCI_G(events) ? PHP_OCI_INIT_MODE | OCI_EVENTS : PHP_OCI_INIT_MODE, 0, NULL, NULL, NULL, 0, NULL, charsetid, charsetid));
if (OCI_G(errcode) != OCI_SUCCESS) {
+ sb4 ora_error_code = 0;
+ text ora_msg_buf[OCI_ERROR_MAXMSG_SIZE]; /* Use traditional smaller size: non-PL/SQL errors should fit and it keeps the stack smaller */
+
#ifdef HAVE_OCI_INSTANT_CLIENT
php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that " PHP_OCI8_LIB_PATH_MSG " includes the directory with Oracle Instant Client libraries");
#else
php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and " PHP_OCI8_LIB_PATH_MSG " are set and point to the right directories");
#endif
+ if (retenv
+ && OCIErrorGet(retenv, (ub4)1, NULL, &ora_error_code, ora_msg_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS
+ && *ora_msg_buf) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ora_msg_buf);
+ }
+
return NULL;
}
return retenv;
diff --git a/ext/oci8/oci8_collection.c b/ext/oci8/oci8_collection.c
index 3ee5dc888..480da34cb 100644
--- a/ext/oci8/oci8_collection.c
+++ b/ext/oci8/oci8_collection.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_collection.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: oci8_collection.c 321634 2012-01-01 13:15:04Z felipe $ */
diff --git a/ext/oci8/oci8_interface.c b/ext/oci8/oci8_interface.c
index e405f12f4..80645fc78 100644
--- a/ext/oci8/oci8_interface.c
+++ b/ext/oci8/oci8_interface.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_interface.c 312017 2011-06-10 17:38:07Z sixd $ */
+/* $Id: oci8_interface.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/oci8/oci8_lob.c b/ext/oci8/oci8_lob.c
index 1045e35c1..dd92f0302 100644
--- a/ext/oci8/oci8_lob.c
+++ b/ext/oci8/oci8_lob.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_lob.c 313754 2011-07-27 00:04:23Z sixd $ */
+/* $Id: oci8_lob.c 321634 2012-01-01 13:15:04Z felipe $ */
diff --git a/ext/oci8/oci8_statement.c b/ext/oci8/oci8_statement.c
index fe5ba8399..1f5f171ee 100644
--- a/ext/oci8/oci8_statement.c
+++ b/ext/oci8/oci8_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_statement.c 313754 2011-07-27 00:04:23Z sixd $ */
+/* $Id: oci8_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
diff --git a/ext/oci8/package.xml b/ext/oci8/package.xml
index 0bb6eb532..d3a912832 100644
--- a/ext/oci8/package.xml
+++ b/ext/oci8/package.xml
@@ -33,12 +33,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
<active>no</active>
</lead>
- <date>2011-06-10</date>
+ <date>2011-11-18</date>
<time>12:00:00</time>
<version>
- <release>1.4.6</release>
- <api>1.4.6</api>
+ <release>1.4.7</release>
+ <api>1.4.7</api>
</version>
<stability>
<release>stable</release>
@@ -46,8 +46,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
- Added oci_client_version() returning the runtime Oracle client library version
- Made OCI8 extension buildable with PHP 5.4-development code
+ Fixed bug #59985 (show normal warning text for OCI_NO_DATA)
+ Fixed OCI8 part of bug #55748 (CVE-2011-4153: multiple NULL pointer dereferences with zend_strndup)
+ Fixed OCI8 part of bug #55301 (multiple null pointer dereferences with calloc)
+ Increased maximum Oracle error message buffer length for new Oracle 11.2.0.3 size
+ Improve internal initalization failure error messages
</notes>
<contents>
<dir name="/">
@@ -66,6 +69,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
<file name="array_bind_012.phpt" role="test" />
<file name="array_bind_013.phpt" role="test" />
<file name="array_bind_014.phpt" role="test" />
+ <file name="array_bind_bdouble.phpt" role="test" />
+ <file name="array_bind_bfloat.phpt" role="test" />
<file name="array_bind_date1.phpt" role="test" />
<file name="array_bind_date.phpt" role="test" />
<file name="array_bind_float1.phpt" role="test" />
@@ -74,6 +79,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
<file name="array_bind_int.phpt" role="test" />
<file name="array_bind_str1.phpt" role="test" />
<file name="array_bind_str.phpt" role="test" />
+ <file name="array_bind_uin.phpt" role="test" />
<file name="b47243_1.phpt" role="test" />
<file name="b47243_2.phpt" role="test" />
<file name="b47243_3.phpt" role="test" />
@@ -251,6 +257,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
<file name="edition_2.phpt" role="test" />
<file name="error1.phpt" role="test" />
<file name="error2.phpt" role="test" />
+ <file name="error3.phpt" role="test" />
<file name="error_bind.phpt" role="test" />
<file name="error_old.phpt" role="test" />
<file name="error_parse.phpt" role="test" />
@@ -338,7 +345,6 @@ http://pear.php.net/dtd/package-2.0.xsd">
<file name="null_byte_2.phpt" role="test" />
<file name="null_byte_3.phpt" role="test" />
<file name="num.phpt" role="test" />
- <file name="oci8safemode.phpt" role="test" />
<file name="oci_execute_segfault.phpt" role="test" />
<file name="old_oci_close1.phpt" role="test" />
<file name="old_oci_close.phpt" role="test" />
@@ -410,6 +416,22 @@ http://pear.php.net/dtd/package-2.0.xsd">
<release>
<version>
+ <release>1.4.6</release>
+ <api>1.4.6</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <license uri="http://www.php.net/license">PHP</license>
+ <notes>
+ Added oci_client_version() returning the runtime Oracle client library version
+ Made OCI8 extension buildable with PHP 5.4-development code
+ </notes>
+</release>
+
+<release>
+ <version>
<release>1.4.5</release>
<api>1.4.5</api>
</version>
diff --git a/ext/oci8/php_oci8.h b/ext/oci8/php_oci8.h
index 5a5c8d0b7..74704ccf8 100644
--- a/ext/oci8/php_oci8.h
+++ b/ext/oci8/php_oci8.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_oci8.h 312535 2011-06-27 17:24:55Z sixd $ */
+/* $Id: php_oci8.h 321634 2012-01-01 13:15:04Z felipe $ */
#if HAVE_OCI8
# ifndef PHP_OCI8_H
@@ -46,7 +46,7 @@
*/
#undef PHP_OCI8_VERSION
#endif
-#define PHP_OCI8_VERSION "1.4.6"
+#define PHP_OCI8_VERSION "1.4.7"
extern zend_module_entry oci8_module_entry;
#define phpext_oci8_ptr &oci8_module_entry
diff --git a/ext/oci8/php_oci8_int.h b/ext/oci8/php_oci8_int.h
index c88284816..3c2c25de8 100644
--- a/ext/oci8/php_oci8_int.h
+++ b/ext/oci8/php_oci8_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_oci8_int.h 313754 2011-07-27 00:04:23Z sixd $ */
+/* $Id: php_oci8_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#if HAVE_OCI8
# ifndef PHP_OCI8_INT_H
diff --git a/ext/oci8/tests/array_bind_003.phpt b/ext/oci8/tests/array_bind_003.phpt
index 94bce02e3..0875c694f 100644
--- a/ext/oci8/tests/array_bind_003.phpt
+++ b/ext/oci8/tests/array_bind_003.phpt
@@ -62,7 +62,9 @@ var_dump($array);
echo "Done\n";
?>
--EXPECTF--
-Warning: oci_execute(): OCI_NO_DATA in %s on line %d
+Warning: oci_execute(): ORA-01403: %s
+ORA-06512: at "SYSTEM.ARRAYBINDPKG1", line %d
+ORA-06512: at line %d in %sarray_bind_003.php on line %d
array(4) {
[0]=>
string(9) "06-DEC-05"
diff --git a/ext/oci8/tests/array_bind_004.phpt b/ext/oci8/tests/array_bind_004.phpt
index 1eb1fc7fa..df74025d7 100644
--- a/ext/oci8/tests/array_bind_004.phpt
+++ b/ext/oci8/tests/array_bind_004.phpt
@@ -62,7 +62,9 @@ var_dump($array);
echo "Done\n";
?>
--EXPECTF--
-Warning: oci_execute(): OCI_NO_DATA in %s on line %d
+Warning: oci_execute(): ORA-01403: %s
+ORA-06512: at "SYSTEM.ARRAYBINDPKG1", line %d
+ORA-06512: at line %d in %sarray_bind_004.php on line %d
array(0) {
}
Done
diff --git a/ext/oci8/tests/array_bind_bdouble.phpt b/ext/oci8/tests/array_bind_bdouble.phpt
new file mode 100644
index 000000000..1bb95b236
--- /dev/null
+++ b/ext/oci8/tests/array_bind_bdouble.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Unsupported type: oci_bind_array_by_name() and SQLT_BDOUBLE
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+
+require dirname(__FILE__).'/connect.inc';
+
+$statement = oci_parse($c, "BEGIN ARRAYBINDPKG1.iobind(:c1); END;");
+$array = Array(1.243,2.5658,3.4234,4.2123,5.9999);
+oci_bind_array_by_name($statement, ":c1", $array, 5, 5, SQLT_BDOUBLE);
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: oci_bind_array_by_name(): Unknown or unsupported datatype given: 22 in %sarray_bind_bdouble.php on line %d
+Done
diff --git a/ext/oci8/tests/array_bind_bfloat.phpt b/ext/oci8/tests/array_bind_bfloat.phpt
new file mode 100644
index 000000000..0b8fad6e6
--- /dev/null
+++ b/ext/oci8/tests/array_bind_bfloat.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Unsupported type: oci_bind_array_by_name() and SQLT_BFLOAT
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+
+require dirname(__FILE__).'/connect.inc';
+
+$statement = oci_parse($c, "BEGIN ARRAYBINDPKG1.iobind(:c1); END;");
+$array = Array(1.243,2.5658,3.4234,4.2123,5.9999);
+oci_bind_array_by_name($statement, ":c1", $array, 5, 5, SQLT_BFLOAT);
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: oci_bind_array_by_name(): Unknown or unsupported datatype given: 21 in %sarray_bind_bfloat.php on line %d
+Done
diff --git a/ext/oci8/tests/array_bind_uin.phpt b/ext/oci8/tests/array_bind_uin.phpt
new file mode 100644
index 000000000..3ce039e0d
--- /dev/null
+++ b/ext/oci8/tests/array_bind_uin.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Unsupported type: oci_bind_array_by_name() and SQLT_UIN
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+<?php
+
+require dirname(__FILE__).'/connect.inc';
+
+$statement = oci_parse($c, "BEGIN ARRAYBINDPKG1.iobind(:c1); END;");
+$array = Array(1.243,2.5658,3.4234,4.2123,5.9999);
+oci_bind_array_by_name($statement, ":c1", $array, 5, 5, SQLT_UIN);
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: oci_bind_array_by_name(): Unknown or unsupported datatype given: 68 in %sarray_bind_uin.php on line %d
+Done
diff --git a/ext/oci8/tests/bind_char_1.phpt b/ext/oci8/tests/bind_char_1.phpt
index a668294d4..91fa4b75b 100644
--- a/ext/oci8/tests/bind_char_1.phpt
+++ b/ext/oci8/tests/bind_char_1.phpt
@@ -4,9 +4,13 @@ SELECT oci_bind_by_name with SQLT_AFC aka CHAR
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\./', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 2) {
+ die("skip expected output only valid when using Oracle 10gR2 or 11.2.0.2 databases");
+ }
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bind_char_1_11gR1.phpt b/ext/oci8/tests/bind_char_1_11gR1.phpt
index 55973a61b..a7feff9f6 100644
--- a/ext/oci8/tests/bind_char_1_11gR1.phpt
+++ b/ext/oci8/tests/bind_char_1_11gR1.phpt
@@ -4,12 +4,15 @@ SELECT oci_bind_by_name with SQLT_AFC aka CHAR
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 11\.1\./', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 11gR1 or 11.2.0.3 databases");
+ }
}
?>
+--ENV--
+NLS_LANG=
--FILE--
<?php
diff --git a/ext/oci8/tests/bind_char_2.phpt b/ext/oci8/tests/bind_char_2.phpt
index 53785e066..43661a065 100644
--- a/ext/oci8/tests/bind_char_2.phpt
+++ b/ext/oci8/tests/bind_char_2.phpt
@@ -4,9 +4,13 @@ SELECT oci_bind_by_name with SQLT_AFC aka CHAR and dates
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\./', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 2) {
+ die("skip expected output only valid when using Oracle 10gR2 or 11.2.0.2 databases");
+ }
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bind_char_2_11gR1.phpt b/ext/oci8/tests/bind_char_2_11gR1.phpt
index 357a716e6..8bb28733f 100644
--- a/ext/oci8/tests/bind_char_2_11gR1.phpt
+++ b/ext/oci8/tests/bind_char_2_11gR1.phpt
@@ -4,12 +4,15 @@ SELECT oci_bind_by_name with SQLT_AFC aka CHAR and dates
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 11\.1\./', $sv, $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 11gR1 or 11.2.0.3 databases");
+ }
}
?>
+--ENV--
+NLS_LANG=
--FILE--
<?php
diff --git a/ext/oci8/tests/bind_char_3.phpt b/ext/oci8/tests/bind_char_3.phpt
index a459f616b..25115836d 100644
--- a/ext/oci8/tests/bind_char_3.phpt
+++ b/ext/oci8/tests/bind_char_3.phpt
@@ -4,9 +4,13 @@ PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to CHAR parameter
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\./', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 2) {
+ die("skip expected output only valid when using Oracle 10gR2 or 11.2.0.2 databases");
+ }
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bind_char_3_11gR1.phpt b/ext/oci8/tests/bind_char_3_11gR1.phpt
index 1e7da47ed..4c6241ccf 100644
--- a/ext/oci8/tests/bind_char_3_11gR1.phpt
+++ b/ext/oci8/tests/bind_char_3_11gR1.phpt
@@ -4,12 +4,15 @@ PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to CHAR parameter
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 11\.1\./', $sv, $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 11gR1 or 11.2.0.3 databases");
+ }
}
?>
+--ENV--
+NLS_LANG=
--FILE--
<?php
diff --git a/ext/oci8/tests/bind_char_4.phpt b/ext/oci8/tests/bind_char_4.phpt
index 34d703c52..36765f813 100644
--- a/ext/oci8/tests/bind_char_4.phpt
+++ b/ext/oci8/tests/bind_char_4.phpt
@@ -4,9 +4,13 @@ PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to VARCHAR2 parameter
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\./', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 2) {
+ die("skip expected output only valid when using Oracle 10gR2 or 11.2.0.2 databases");
+ }
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bind_char_4_11gR1.phpt b/ext/oci8/tests/bind_char_4_11gR1.phpt
index 87b7daba8..14d587885 100644
--- a/ext/oci8/tests/bind_char_4_11gR1.phpt
+++ b/ext/oci8/tests/bind_char_4_11gR1.phpt
@@ -4,12 +4,15 @@ PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to VARCHAR2 parameter
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 11\.1\./', $sv, $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 11gR1 or 11.2.0.3 databases");
+ }
}
?>
+--ENV--
+NLS_LANG=
--FILE--
<?php
diff --git a/ext/oci8/tests/bug27303_1.phpt b/ext/oci8/tests/bug27303_1.phpt
index 028f5b793..40ab4ebed 100644
--- a/ext/oci8/tests/bug27303_1.phpt
+++ b/ext/oci8/tests/bug27303_1.phpt
@@ -4,9 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.2/', oci_server_version($c), $matches) !== 1 &&
+ preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 10.2.0.2 or 11.2.0.2 databases");
+ // Other point releases may also work
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bug27303_1_11gR1.phpt b/ext/oci8/tests/bug27303_1_11gR1.phpt
index 20097613f..6de9b9937 100644
--- a/ext/oci8/tests/bug27303_1_11gR1.phpt
+++ b/ext/oci8/tests/bug27303_1_11gR1.phpt
@@ -4,10 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.1\.0\.6/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using specific Oracle database versions");
+ }
+ }
}
?>
--FILE--
diff --git a/ext/oci8/tests/bug27303_2.phpt b/ext/oci8/tests/bug27303_2.phpt
index e7564ac21..1fb2b3168 100644
--- a/ext/oci8/tests/bug27303_2.phpt
+++ b/ext/oci8/tests/bug27303_2.phpt
@@ -4,9 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.2/', oci_server_version($c), $matches) !== 1 &&
+ preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 10.2.0.2 or 11.2.0.2 databases");
+ // Other point releases may also work
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
diff --git a/ext/oci8/tests/bug27303_2_11gR1.phpt b/ext/oci8/tests/bug27303_2_11gR1.phpt
index c2b5c433c..1e3e3105a 100644
--- a/ext/oci8/tests/bug27303_2_11gR1.phpt
+++ b/ext/oci8/tests/bug27303_2_11gR1.phpt
@@ -4,10 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.1\.0\.6/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using specific Oracle database versions");
+ }
+ }
}
?>
--FILE--
diff --git a/ext/oci8/tests/bug27303_4.phpt b/ext/oci8/tests/bug27303_4.phpt
index 0dcfed913..3137db865 100644
--- a/ext/oci8/tests/bug27303_4.phpt
+++ b/ext/oci8/tests/bug27303_4.phpt
@@ -4,9 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-if (preg_match('/Release 1[01]\.2\./', oci_server_version($c), $matches) !== 1) {
- die("skip expected output only valid when using Oracle 10gR2 or 11gR2 databases");
-} else if (preg_match('/^11\./', oci_client_version()) != 1) {
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.2/', oci_server_version($c), $matches) !== 1 &&
+ preg_match('/Release 11\.2\.0\.2/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using Oracle 10.2.0.2 or 11.2.0.2 databases");
+ // Other point releases may also work
+}
+if (preg_match('/^11\./', oci_client_version()) != 1) {
die("skip test expected to work only with Oracle 11g or greater version of client");
}
?>
@@ -23,10 +27,7 @@ $create_st[] = "drop table mytab";
$create_st[] = "create sequence myseq";
$create_st[] = "create table mytab (mydata varchar2(20), seqcol number)";
-foreach ($create_st as $statement) {
- $stmt = oci_parse($c, $statement);
- oci_execute($stmt);
-}
+oci8_test_sql_execute($c, $create_st);
define('MYLIMIT', 200);
@@ -50,10 +51,7 @@ $drop_st = array();
$drop_st[] = "drop sequence myseq";
$drop_st[] = "drop table mytab";
-foreach ($create_st as $statement) {
- $stmt = oci_parse($c, $statement);
- oci_execute($stmt);
-}
+oci8_test_sql_execute($c, $drop_st);
echo "Done\n";
?>
diff --git a/ext/oci8/tests/bug27303_4_11gR1.phpt b/ext/oci8/tests/bug27303_4_11gR1.phpt
index 0c88360be..f9bc2da8a 100644
--- a/ext/oci8/tests/bug27303_4_11gR1.phpt
+++ b/ext/oci8/tests/bug27303_4_11gR1.phpt
@@ -4,10 +4,13 @@ Bug #27303 (OCIBindByName binds numeric PHP values as characters)
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
require(dirname(__FILE__)."/connect.inc");
-$sv = oci_server_version($c);
-$sv = preg_match('/Release 11\.1\./', $sv, $matches);
-if ($sv !== 1) {
- die ("skip expected output only valid when using Oracle 11gR1 database");
+// The bind buffer size edge cases seem to change each DB version.
+if (preg_match('/Release 10\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.1\.0\.6/', oci_server_version($c), $matches) !== 1) {
+ if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
+ die("skip expected output only valid when using specific Oracle database versions");
+ }
+ }
}
?>
--FILE--
@@ -21,10 +24,7 @@ $create_st[] = "drop table mytab";
$create_st[] = "create sequence myseq";
$create_st[] = "create table mytab (mydata varchar2(20), seqcol number)";
-foreach ($create_st as $statement) {
- $stmt = oci_parse($c, $statement);
- oci_execute($stmt);
-}
+oci8_test_sql_execute($c, $create_st);
define('MYLIMIT', 200);
@@ -48,10 +48,7 @@ $drop_st = array();
$drop_st[] = "drop sequence myseq";
$drop_st[] = "drop table mytab";
-foreach ($create_st as $statement) {
- $stmt = oci_parse($c, $statement);
- oci_execute($stmt);
-}
+oci8_test_sql_execute($c, $drop_st);
echo "Done\n";
?>
diff --git a/ext/oci8/tests/bug42496_1.phpt b/ext/oci8/tests/bug42496_1.phpt
index abf6cc8c7..d430474fa 100644
--- a/ext/oci8/tests/bug42496_1.phpt
+++ b/ext/oci8/tests/bug42496_1.phpt
@@ -4,7 +4,7 @@ Bug #42496 (LOB fetch leaks cursors, eventually failing with ORA-1000 maximum op
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php
@@ -14,11 +14,11 @@ require dirname(__FILE__).'/connect.inc';
// Initialization
$stmtarray = array(
- "DROP table bug42496_tab",
- "CREATE table bug42496_tab(c1 CLOB, c2 CLOB)",
- "INSERT INTO bug42496_tab VALUES('test1', 'test1')",
- "INSERT INTO bug42496_tab VALUES('test2', 'test2')",
- "INSERT INTO bug42496_tab VALUES('test3', 'test3')"
+ "DROP table bug42496_1_tab",
+ "CREATE table bug42496_1_tab(c1 CLOB, c2 CLOB)",
+ "INSERT INTO bug42496_1_tab VALUES('test1', 'test1')",
+ "INSERT INTO bug42496_1_tab VALUES('test2', 'test2')",
+ "INSERT INTO bug42496_1_tab VALUES('test3', 'test3')"
);
oci8_test_sql_execute($c, $stmtarray);
@@ -28,7 +28,7 @@ oci8_test_sql_execute($c, $stmtarray);
echo "Test 1\n";
for ($i = 0; $i < 15000; $i++) {
- $s = oci_parse($c, "SELECT * from bug42496_tab");
+ $s = oci_parse($c, "SELECT * from bug42496_1_tab");
oci_define_by_name($s, "C1", $col1);
oci_define_by_name($s, "C2", $col2);
if (oci_execute($s)) {
@@ -46,7 +46,7 @@ echo "Done\n";
// Cleanup
$stmtarray = array(
- "DROP table bug42496_tab"
+ "DROP table bug42496_1_tab"
);
oci8_test_sql_execute($c, $stmtarray);
diff --git a/ext/oci8/tests/bug42496_2.phpt b/ext/oci8/tests/bug42496_2.phpt
index 8c4b79141..71854f3d4 100644
--- a/ext/oci8/tests/bug42496_2.phpt
+++ b/ext/oci8/tests/bug42496_2.phpt
@@ -4,7 +4,7 @@ Bug #42496 (LOB fetch leaks cursors, eventually failing with ORA-1000 maximum op
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php
@@ -14,11 +14,11 @@ require dirname(__FILE__).'/connect.inc';
// Initialization
$stmtarray = array(
- "DROP table bug42496_tab",
- "CREATE table bug42496_tab(c1 CLOB, c2 CLOB)",
- "INSERT INTO bug42496_tab VALUES('test1', 'test1')",
- "INSERT INTO bug42496_tab VALUES('test2', 'test2')",
- "INSERT INTO bug42496_tab VALUES('test3', 'test3')"
+ "DROP table bug42496_2_tab",
+ "CREATE table bug42496_2_tab(c1 CLOB, c2 CLOB)",
+ "INSERT INTO bug42496_2_tab VALUES('test1', 'test1')",
+ "INSERT INTO bug42496_2_tab VALUES('test2', 'test2')",
+ "INSERT INTO bug42496_2_tab VALUES('test3', 'test3')"
);
oci8_test_sql_execute($c, $stmtarray);
@@ -28,7 +28,7 @@ oci8_test_sql_execute($c, $stmtarray);
echo "Test 2\n";
for ($i = 0; $i < 15000; $i++) {
- $s = oci_parse($c, "SELECT * from bug42496_tab");
+ $s = oci_parse($c, "SELECT * from bug42496_2_tab");
if (oci_execute($s)) {
$arr = array();
while ($arr = oci_fetch_assoc($s)) {
@@ -44,7 +44,7 @@ echo "Done\n";
// Cleanup
$stmtarray = array(
- "DROP table bug42496_tab"
+ "DROP table bug42496_2_tab"
);
oci8_test_sql_execute($c, $stmtarray);
diff --git a/ext/oci8/tests/bug43497.phpt b/ext/oci8/tests/bug43497.phpt
index 600fb047b..8c57fabee 100644
--- a/ext/oci8/tests/bug43497.phpt
+++ b/ext/oci8/tests/bug43497.phpt
@@ -4,7 +4,7 @@ Bug #43497 (OCI8 XML/getClobVal aka temporary LOBs leak UGA memory)
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (preg_match('/^1[01]\./', oci_client_version()) != 1) {
die("skip expected output only valid with Oracle 10g or greater version of client");
}
diff --git a/ext/oci8/tests/bug43497_92.phpt b/ext/oci8/tests/bug43497_92.phpt
index 932a863d7..d4201257c 100644
--- a/ext/oci8/tests/bug43497_92.phpt
+++ b/ext/oci8/tests/bug43497_92.phpt
@@ -4,7 +4,7 @@ Bug #43497 (OCI8 XML/getClobVal aka temporary LOBs leak UGA memory)
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (preg_match('/Unknown/', oci_client_version()) != 1) {
die("skip expected output only valid with Oracle 9gR2 clients");
}
diff --git a/ext/oci8/tests/bug44113.phpt b/ext/oci8/tests/bug44113.phpt
index aa4f2bb8e..d44171561 100644
--- a/ext/oci8/tests/bug44113.phpt
+++ b/ext/oci8/tests/bug44113.phpt
@@ -4,7 +4,7 @@ Bug #44113 (New collection creation can fail with OCI-22303)
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php
diff --git a/ext/oci8/tests/bug47281.phpt b/ext/oci8/tests/bug47281.phpt
index 6b94bdef2..d0e002353 100644
--- a/ext/oci8/tests/bug47281.phpt
+++ b/ext/oci8/tests/bug47281.phpt
@@ -4,6 +4,13 @@ Bug #47281 ($php_errormsg is limited in size of characters)
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
+// error3.phpt obsoletes this test for newer Oracle client versions
+// Assume runtime client version is >= compile time client version
+$cv = explode('.', oci_client_version());
+if ($cv[0] > 11 || ($cv[0] == 11 && $cv[1] > 2) || ($cv[0] == 11 && $cv[1] == 2 && $cv[3] >= 3)) {
+ die("skip test works only with Oracle 11.2.0.2 or earlier Oracle client libraries");
+}
+
?>
--ENV--
NLS_LANG=.AL32UTF8
diff --git a/ext/oci8/tests/conn_attr_4.phpt b/ext/oci8/tests/conn_attr_4.phpt
index b1a22858a..d15b7a38d 100644
--- a/ext/oci8/tests/conn_attr_4.phpt
+++ b/ext/oci8/tests/conn_attr_4.phpt
@@ -4,10 +4,10 @@ Set and get of connection attributes with errors.
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (strcasecmp($user, "system") && strcasecmp($user, "sys")) die("skip needs to be run as a DBA user");
if ($test_drcp) die("skip output might vary with DRCP");
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
if (preg_match('/Release (11\.2|12)\./', oci_server_version($c), $matches) !== 1) {
// Bug fixed in 11.2 prevents client_info being rest
diff --git a/ext/oci8/tests/details.inc b/ext/oci8/tests/details.inc
index 4c07e636e..0f03c3a65 100644
--- a/ext/oci8/tests/details.inc
+++ b/ext/oci8/tests/details.inc
@@ -9,10 +9,6 @@
* greater, and $dbase should be set to the tnsnames.ora entry
* corresponding to the POOLED server instance or an Easy Connect
* string like hostname:port/service_name:POOLED
- *
- * Set $stress_test to TRUE if you want to run some longer/slower/more
- * memory intensive tests. External configuration such as increasing
- * the timeout of run-tests.php may also be needed.
*/
if (file_exists(dirname(__FILE__)."/details_local.inc")) {
@@ -23,23 +19,16 @@ if (file_exists(dirname(__FILE__)."/details_local.inc")) {
$password = getenv('PHP_OCI8_TEST_PASS'); // Password for $user
$dbase = getenv('PHP_OCI8_TEST_DB'); // Database connection string
$test_drcp = getenv('PHP_OCI8_TEST_DRCP');
- $stress_test = getenv('PHP_OCI8_STRESS_TEST');
if (false !== $test_drcp && 0 == strcasecmp($test_drcp,'TRUE')) {
$test_drcp = TRUE;
} else {
$test_drcp = FALSE;
}
- if (false !== $stress_test && 0 == strcasecmp($stress_test,'TRUE')) {
- $stress_test = TRUE;
- } else {
- $stress_test = FALSE;
- }
} else {
$user = "system";
$password = "oracle";
$dbase = "localhost/XE";
$test_drcp = FALSE;
- $stress_test = FALSE;
}
/*
diff --git a/ext/oci8/tests/error2.phpt b/ext/oci8/tests/error2.phpt
index 12eab61a6..48f21f440 100644
--- a/ext/oci8/tests/error2.phpt
+++ b/ext/oci8/tests/error2.phpt
@@ -4,7 +4,7 @@ Exercise error code for SUCCESS_WITH_INFO
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php
diff --git a/ext/oci8/tests/error3.phpt b/ext/oci8/tests/error3.phpt
new file mode 100644
index 000000000..8540db250
--- /dev/null
+++ b/ext/oci8/tests/error3.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Maximum Oracle error length
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+// Assume runtime client version is >= compile time client version
+$cv = explode('.', oci_client_version());
+if ($cv[0] < 11 || ($cv[0] == 11 && $cv[1] < 2) || ($cv[0] == 11 && $cv[1] == 2 && $cv[3] < 3)) {
+ die("skip test works only with Oracle 11.2.0.3 or greater version of Oracle client libraries");
+}
+?>
+--INI--
+log_errors_max_len=4096
+--FILE--
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+echo "Test 1\n";
+
+error_reporting(E_ALL);
+
+$s = oci_parse($c, "declare
+s varchar2(4000);
+begin
+s := 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBabcdefghBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC';
+raise_application_error(-20333, s);
+end;");
+
+oci_execute($s);
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Test 1
+
+Warning: oci_execute(): ORA-20333: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBab in %serror3.php on line %d
+===DONE===
diff --git a/ext/oci8/tests/extauth_01.phpt b/ext/oci8/tests/extauth_01.phpt
index 993198c4d..37f8f3834 100644
--- a/ext/oci8/tests/extauth_01.phpt
+++ b/ext/oci8/tests/extauth_01.phpt
@@ -5,7 +5,7 @@ Test External Authentication errors with oci_connect
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
require(dirname(__FILE__).'/details.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--INI--
oci8.privileged_connect=1
diff --git a/ext/oci8/tests/extauth_02.phpt b/ext/oci8/tests/extauth_02.phpt
index d3bee0bfc..f3b517f73 100644
--- a/ext/oci8/tests/extauth_02.phpt
+++ b/ext/oci8/tests/extauth_02.phpt
@@ -3,9 +3,8 @@ Test External Authentication errors with oci_new_connect
--SKIPIF--
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
-require(dirname(__FILE__).'/details.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
?>
--INI--
oci8.privileged_connect=1
diff --git a/ext/oci8/tests/extauth_03.phpt b/ext/oci8/tests/extauth_03.phpt
index e159c50f9..e6685eb17 100644
--- a/ext/oci8/tests/extauth_03.phpt
+++ b/ext/oci8/tests/extauth_03.phpt
@@ -3,9 +3,8 @@ Test External Authentication errors with oci_pconnect
--SKIPIF--
<?php
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
-require(dirname(__FILE__).'/details.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
?>
--INI--
oci8.privileged_connect=1
diff --git a/ext/oci8/tests/lob_043.phpt b/ext/oci8/tests/lob_043.phpt
index ade79a200..4cd159510 100644
--- a/ext/oci8/tests/lob_043.phpt
+++ b/ext/oci8/tests/lob_043.phpt
@@ -4,7 +4,7 @@ Bug #49560 (LOB resource destructor and refcount test)
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Slow test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php
diff --git a/ext/oci8/tests/password_new.phpt b/ext/oci8/tests/password_new.phpt
index 8041699f9..c218d904f 100644
--- a/ext/oci8/tests/password_new.phpt
+++ b/ext/oci8/tests/password_new.phpt
@@ -17,6 +17,10 @@ if (preg_match('/Release (11|12)\./', oci_server_version($c), $matches) === 1 &&
--FILE--
<?php
+// This test will diff if either the client or the server is 11.2.0.3
+// (or greater) and the other is 11.2.0.2 (or earlier). Both client
+// and server must be upgraded at the same time.
+
require dirname(__FILE__)."/connect.inc";
$new_password = "test";
diff --git a/ext/oci8/tests/password_old.phpt b/ext/oci8/tests/password_old.phpt
index 3ff726d2b..fdbb1f9e8 100644
--- a/ext/oci8/tests/password_old.phpt
+++ b/ext/oci8/tests/password_old.phpt
@@ -19,6 +19,10 @@ if (preg_match('/Release (11|12)\./', oci_server_version($c), $matches) === 1 &&
--FILE--
<?php
+// This test will diff if either the client or the server is 11.2.0.3
+// (or greater) and the other is 11.2.0.2 (or earlier). Both client
+// and server must be upgraded at the same time.
+
require dirname(__FILE__)."/connect.inc";
$new_password = "test";
diff --git a/ext/oci8/tests/pecl_bug10194.phpt b/ext/oci8/tests/pecl_bug10194.phpt
index 6a9044b1a..9947e15db 100644
--- a/ext/oci8/tests/pecl_bug10194.phpt
+++ b/ext/oci8/tests/pecl_bug10194.phpt
@@ -4,7 +4,7 @@ PECL Bug #10194 (segfault in Instant Client when memory_limit is reached inside
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
-if ($stress_test !== true) die ('skip Test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--INI--
memory_limit=10M
diff --git a/ext/oci8/tests/pecl_bug10194_blob.phpt b/ext/oci8/tests/pecl_bug10194_blob.phpt
index 75632ce47..faf87ab3c 100644
--- a/ext/oci8/tests/pecl_bug10194_blob.phpt
+++ b/ext/oci8/tests/pecl_bug10194_blob.phpt
@@ -5,7 +5,7 @@ PECL Bug #10194 (segfault in Instant Client when memory_limit is reached inside
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platforms only");
-if ($stress_test !== true) die ('skip Test not run when $stress_test is FALSE');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--INI--
memory_limit=3M
diff --git a/ext/oci8/tests/pecl_bug10194_blob_64.phpt b/ext/oci8/tests/pecl_bug10194_blob_64.phpt
index da7ec592f..45788a41b 100644
--- a/ext/oci8/tests/pecl_bug10194_blob_64.phpt
+++ b/ext/oci8/tests/pecl_bug10194_blob_64.phpt
@@ -4,8 +4,8 @@ PECL Bug #10194 (segfault in Instant Client when memory_limit is reached inside
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on thes
require(dirname(__FILE__).'/skipif.inc');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only");
-if ($stress_test !== true) die ('skip Test not run when $stress_test is FALSE');
?>
--INI--
memory_limit=6M
diff --git a/ext/oci8/tests/pecl_bug16035.phpt b/ext/oci8/tests/pecl_bug16035.phpt
index 29ff6439d..ddd0038de 100644
--- a/ext/oci8/tests/pecl_bug16035.phpt
+++ b/ext/oci8/tests/pecl_bug16035.phpt
@@ -10,6 +10,9 @@ $ov = preg_match('/Compile-time ORACLE_HOME/', $phpinfo);
if ($ov !== 1) {
die ("skip Test only valid when OCI8 is built with an ORACLE_HOME");
}
+if (preg_match('/Unknown/', oci_client_version()) == 1) {
+ die("skip expected output only valid with Oracle clients > 9gR2");
+}
?>
--ENV--
ORACLE_HOME=""
diff --git a/ext/oci8/tests/pecl_bug16842.phpt b/ext/oci8/tests/pecl_bug16842.phpt
index dbf7e6bb8..ca24d0d27 100644
--- a/ext/oci8/tests/pecl_bug16842.phpt
+++ b/ext/oci8/tests/pecl_bug16842.phpt
@@ -39,7 +39,8 @@ oci_close($c);
Test 1
Raises NO_DATA_FOUND
-Warning: oci_execute(): OCI_NO_DATA in %s on line 11
+Warning: oci_execute(): ORA-01403: %s
+ORA-06512: at line %d in %specl_bug16842.php on line %d
bool(false)
array(4) {
["code"]=>
diff --git a/ext/odbc/birdstep.c b/ext/odbc/birdstep.c
index 65d22fcb1..0c6bae423 100644
--- a/ext/odbc/birdstep.c
+++ b/ext/odbc/birdstep.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: birdstep.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: birdstep.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
* TODO:
diff --git a/ext/odbc/php_birdstep.h b/ext/odbc/php_birdstep.h
index 7748d8af0..e1422646e 100644
--- a/ext/odbc/php_birdstep.h
+++ b/ext/odbc/php_birdstep.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_birdstep.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_birdstep.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_BIRDSTEP_H
#define PHP_BIRDSTEP_H
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 70d15e344..2716bdf49 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_odbc.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_odbc.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/odbc/php_odbc.h b/ext/odbc/php_odbc.h
index fb426ebea..0a966ebdd 100644
--- a/ext/odbc/php_odbc.h
+++ b/ext/odbc/php_odbc.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_odbc.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_odbc.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ODBC_H
#define PHP_ODBC_H
diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h
index c30528647..197331217 100644
--- a/ext/odbc/php_odbc_includes.h
+++ b/ext/odbc/php_odbc_includes.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_odbc_includes.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_odbc_includes.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ODBC_INCLUDES_H
#define PHP_ODBC_INCLUDES_H
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index ce96c645d..bf68e982f 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: openssl.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: openssl.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -4713,7 +4713,9 @@ PHP_FUNCTION(openssl_encrypt)
EVP_CIPHER_CTX_set_key_length(&cipher_ctx, password_len);
}
EVP_EncryptInit_ex(&cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
- EVP_EncryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
+ if (data_len > 0) {
+ EVP_EncryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
+ }
outlen = i;
if (EVP_EncryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) {
outlen += i;
diff --git a/ext/openssl/php_openssl.h b/ext/openssl/php_openssl.h
index 0d15f41f8..19193d8b7 100644
--- a/ext/openssl/php_openssl.h
+++ b/ext/openssl/php_openssl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_openssl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_openssl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_OPENSSL_H
#define PHP_OPENSSL_H
diff --git a/ext/openssl/tests/bug36732.phpt b/ext/openssl/tests/bug36732.phpt
index 290c9e95e..ec8fedb9d 100644
--- a/ext/openssl/tests/bug36732.phpt
+++ b/ext/openssl/tests/bug36732.phpt
@@ -9,7 +9,8 @@ if (OPENSSL_VERSION_NUMBER < 0x009070af) die("skip");
<?php
$configargs = array(
"req_extensions" => "v3_req",
- "x509_extensions" => "usr_cert"
+ "x509_extensions" => "usr_cert",
+ "config" => __DIR__."/openssl.cnf",
);
$dn = array(
diff --git a/ext/openssl/tests/bug54992.phpt b/ext/openssl/tests/bug54992.phpt
index d3a06310e..768b07378 100644
--- a/ext/openssl/tests/bug54992.phpt
+++ b/ext/openssl/tests/bug54992.phpt
@@ -8,7 +8,7 @@ if (!function_exists('pcntl_fork')) die("skip no fork");
<?php
$context = stream_context_create();
-stream_context_set_option($context, 'ssl', 'local_cert', "./bug54992.pem");
+stream_context_set_option($context, 'ssl', 'local_cert', __DIR__ . "/bug54992.pem");
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
$server = stream_socket_server('ssl://127.0.0.1:64321', $errno, $errstr,
STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context);
@@ -22,7 +22,7 @@ if ($pid == -1) {
array(
'ssl' => array(
'verify_peer' => true,
- 'cafile' => 'bug54992-ca.pem',
+ 'cafile' => __DIR__ . '/bug54992-ca.pem',
'CN_match' => 'buga_buga',
)
)
diff --git a/ext/openssl/tests/openssl.cnf b/ext/openssl/tests/openssl.cnf
new file mode 100644
index 000000000..10e69076c
--- /dev/null
+++ b/ext/openssl/tests/openssl.cnf
@@ -0,0 +1,43 @@
+[ req ]
+default_bits = 1024
+default_keyfile = privkey.pem
+distinguished_name = req_distinguished_name
+attributes = req_attributes
+x509_extensions = v3_ca # The extentions to add to the self signed cert
+string_mask = MASK:4294967295
+
+
+[ req_distinguished_name ]
+countryName = Country Name (2 letter code)
+countryName_default = AU
+countryName_min = 2
+countryName_max = 2
+stateOrProvinceName = State or Province Name (full name)
+stateOrProvinceName_default = Some-State
+localityName = Locality Name (eg, city)
+0.organizationName = Organization Name (eg, company)
+0.organizationName_default = Internet Widgits Pty Ltd
+organizationalUnitName = Organizational Unit Name (eg, section)
+commonName = Common Name (eg, YOUR name)
+commonName_max = 64
+emailAddress = Email Address
+emailAddress_max = 64
+
+[ req_attributes ]
+challengePassword = A challenge password
+challengePassword_min = 4
+challengePassword_max = 20
+unstructuredName = An optional company name
+
+[ v3_req ]
+basicConstraints = CA:FALSE
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+[ v3_ca ]
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid:always,issuer:always
+basicConstraints = CA:true
+
+[ usr_cert ]
+basicConstraints=CA:FALSE
+
diff --git a/ext/openssl/tests/openssl_encrypt_crash.phpt b/ext/openssl/tests/openssl_encrypt_crash.phpt
new file mode 100644
index 000000000..b88782b0b
--- /dev/null
+++ b/ext/openssl/tests/openssl_encrypt_crash.phpt
@@ -0,0 +1,13 @@
+--TEST--
+openssl_encrypt() crash with old OpenSSL
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+openssl_encrypt('', 'AES-128-CBC', 'foo');
+var_dump("done");
+?>
+--EXPECTF--
+
+Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended in %s on line %d
+string(4) "done" \ No newline at end of file
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 0cc04cbe7..c349b540e 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xp_ssl.c 315339 2011-08-23 08:12:58Z johannes $ */
+/* $Id: xp_ssl.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "ext/standard/file.h"
@@ -406,6 +406,8 @@ static inline int php_openssl_setup_crypto(php_stream *stream,
if (cparam->inputs.session) {
if (cparam->inputs.session->ops != &php_openssl_socket_ops) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "supplied session stream must be an SSL enabled stream");
+ } else if (((php_openssl_netstream_data_t*)cparam->inputs.session->abstract)->ssl_handle == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "supplied SSL session stream is not initialized");
} else {
SSL_copy_session_id(sslsock->ssl_handle, ((php_openssl_netstream_data_t*)cparam->inputs.session->abstract)->ssl_handle);
}
diff --git a/ext/pcntl/config.m4 b/ext/pcntl/config.m4
index ea26eb149..014dfc441 100644
--- a/ext/pcntl/config.m4
+++ b/ext/pcntl/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4 264390 2008-08-07 13:11:05Z tony2001 $
+dnl $Id: config.m4 316353 2011-09-07 13:47:31Z bjori $
dnl
PHP_ARG_ENABLE(pcntl, whether to enable pcntl support,
@@ -7,7 +7,7 @@ PHP_ARG_ENABLE(pcntl, whether to enable pcntl support,
if test "$PHP_PCNTL" != "no"; then
AC_CHECK_FUNCS(fork, [ AC_DEFINE(HAVE_FORK,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ])
- AC_CHECK_FUNCS(waitpid, [ AC_DEFINE(HAVE_WAITPID,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ])
+ AC_CHECK_FUNCS(waitpid, [ AC_DEFINE(HAVE_WAITPID,1,[ ]) ], [ AC_MSG_ERROR(pcntl: waitpid() not supported by this platform) ])
AC_CHECK_FUNCS(sigaction, [ AC_DEFINE(HAVE_SIGACTION,1,[ ]) ], [ AC_MSG_ERROR(pcntl: sigaction() not supported by this platform) ])
AC_CHECK_FUNCS([getpriority setpriority wait3 sigprocmask sigwaitinfo sigtimedwait])
PHP_NEW_EXTENSION(pcntl, pcntl.c php_signal.c, $ext_shared, cli)
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index ad8c29ed9..a6e629e03 100755
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pcntl.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: pcntl.c 321634 2012-01-01 13:15:04Z felipe $ */
#define PCNTL_DEBUG 0
diff --git a/ext/pcntl/php_pcntl.h b/ext/pcntl/php_pcntl.h
index de63aa658..e5f824c2f 100644
--- a/ext/pcntl/php_pcntl.h
+++ b/ext/pcntl/php_pcntl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pcntl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pcntl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PCNTL_H
#define PHP_PCNTL_H
diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c
index 9ba68a746..348503bae 100644
--- a/ext/pcntl/php_signal.c
+++ b/ext/pcntl/php_signal.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_signal.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_signal.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_signal.h"
diff --git a/ext/pcntl/php_signal.h b/ext/pcntl/php_signal.h
index 2f89f847c..2e33e7f70 100644
--- a/ext/pcntl/php_signal.h
+++ b/ext/pcntl/php_signal.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_signal.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_signal.h 321634 2012-01-01 13:15:04Z felipe $ */
#include <signal.h>
#ifndef PHP_SIGNAL_H
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 6c616ec20..c5b68647b 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pcre.c 314349 2011-08-05 22:39:40Z rasmus $ */
+/* $Id: php_pcre.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_ini.h"
diff --git a/ext/pcre/php_pcre.h b/ext/pcre/php_pcre.h
index 9ca7f7964..9ef325fb0 100644
--- a/ext/pcre/php_pcre.h
+++ b/ext/pcre/php_pcre.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pcre.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pcre.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PCRE_H
#define PHP_PCRE_H
diff --git a/ext/pcre/tests/006.phpt b/ext/pcre/tests/006.phpt
index d1282bf42..2d39b6ea3 100644
--- a/ext/pcre/tests/006.phpt
+++ b/ext/pcre/tests/006.phpt
@@ -1,5 +1,7 @@
--TEST--
preg_replace() with array of failing regular expressions
+--INI--
+pcre.backtrack_limit=100000
--FILE--
<?php
diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c
index e2947df0a..3a167e33d 100755
--- a/ext/pdo/pdo.c
+++ b/ext/pdo/pdo.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo.c 314450 2011-08-07 23:46:00Z iliaa $ */
+/* $Id: pdo.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index 5adb15833..4980e194e 100755
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dbh.c 314450 2011-08-07 23:46:00Z iliaa $ */
+/* $Id: pdo_dbh.c 321634 2012-01-01 13:15:04Z felipe $ */
/* The PDO Database Handle Class */
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c
index 1fa56e50b..4609dff9d 100644
--- a/ext/pdo/pdo_sql_parser.c
+++ b/ext/pdo/pdo_sql_parser.c
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sql_parser.c 311812 2011-06-04 22:54:40Z felipe $ */
+/* $Id: pdo_sql_parser.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_pdo_driver.h"
diff --git a/ext/pdo/pdo_sql_parser.c.orig b/ext/pdo/pdo_sql_parser.c.orig
deleted file mode 100644
index c6e8b0787..000000000
--- a/ext/pdo/pdo_sql_parser.c.orig
+++ /dev/null
@@ -1,876 +0,0 @@
-/* Generated by re2c 0.13.5 on Sat Jun 4 18:42:25 2011 */
-#line 1 "ext/pdo/pdo_sql_parser.re"
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 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: George Schlossnagle <george@omniti.com> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id: pdo_sql_parser.c 311812 2011-06-04 22:54:40Z felipe $ */
-
-#include "php.h"
-#include "php_pdo_driver.h"
-#include "php_pdo_int.h"
-
-#define PDO_PARSER_TEXT 1
-#define PDO_PARSER_BIND 2
-#define PDO_PARSER_BIND_POS 3
-#define PDO_PARSER_EOI 4
-
-#define RET(i) {s->cur = cursor; return i; }
-#define SKIP_ONE(i) {s->cur = s->tok + 1; return i; }
-
-#define YYCTYPE unsigned char
-#define YYCURSOR cursor
-#define YYLIMIT cursor
-#define YYMARKER s->ptr
-#define YYFILL(n)
-
-typedef struct Scanner {
- char *ptr, *cur, *tok;
-} Scanner;
-
-static int scan(Scanner *s)
-{
- char *cursor = s->cur;
-
- s->tok = cursor;
- #line 56 "ext/pdo/pdo_sql_parser.re"
-
-
-
-#line 55 "ext/pdo/pdo_sql_parser.c"
-{
- YYCTYPE yych;
- unsigned int yyaccept = 0;
-
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- switch (yych) {
- case 0x00: goto yy13;
- case '"': goto yy2;
- case '\'': goto yy4;
- case '-': goto yy10;
- case '/': goto yy8;
- case ':': goto yy5;
- case '?': goto yy6;
- default: goto yy11;
- }
-yy2:
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych >= 0x01) goto yy43;
-yy3:
-#line 64 "ext/pdo/pdo_sql_parser.re"
- { SKIP_ONE(PDO_PARSER_TEXT); }
-#line 79 "ext/pdo/pdo_sql_parser.c"
-yy4:
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 0x00) goto yy3;
- goto yy37;
-yy5:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- case '_':
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'o':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'y':
- case 'z': goto yy33;
- case ':':
- case '?': goto yy30;
- default: goto yy3;
- }
-yy6:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case ':':
- case '?': goto yy30;
- default: goto yy7;
- }
-yy7:
-#line 63 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_BIND_POS); }
-#line 165 "ext/pdo/pdo_sql_parser.c"
-yy8:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '*': goto yy20;
- default: goto yy12;
- }
-yy9:
-#line 66 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_TEXT); }
-#line 175 "ext/pdo/pdo_sql_parser.c"
-yy10:
- yych = *++YYCURSOR;
- switch (yych) {
- case '-': goto yy15;
- default: goto yy12;
- }
-yy11:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy12:
- switch (yych) {
- case 0x00:
- case '"':
- case '\'':
- case ':':
- case '?': goto yy9;
- default: goto yy11;
- }
-yy13:
- ++YYCURSOR;
-#line 67 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_EOI); }
-#line 199 "ext/pdo/pdo_sql_parser.c"
-yy15:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case 0x00:
- case '"':
- case '\'':
- case ':':
- case '?': goto yy18;
- case '\n':
- case '\r': goto yy11;
- default: goto yy15;
- }
-yy17:
-#line 65 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_TEXT); }
-#line 217 "ext/pdo/pdo_sql_parser.c"
-yy18:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case '\n':
- case '\r': goto yy17;
- default: goto yy18;
- }
-yy20:
- yyaccept = 1;
- YYMARKER = ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case 0x00:
- case '"':
- case '\'':
- case ':':
- case '?': goto yy22;
- case '*': goto yy24;
- default: goto yy20;
- }
-yy22:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case '*': goto yy27;
- default: goto yy22;
- }
-yy24:
- yyaccept = 1;
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- switch (yych) {
- case 0x00:
- case '"':
- case '\'':
- case ':':
- case '?': goto yy22;
- case '*': goto yy24;
- case '/': goto yy26;
- default: goto yy20;
- }
-yy26:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- case '"':
- case '\'':
- case ':':
- case '?': goto yy17;
- default: goto yy11;
- }
-yy27:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case '*': goto yy27;
- case '/': goto yy29;
- default: goto yy22;
- }
-yy29:
- yych = *++YYCURSOR;
- goto yy17;
-yy30:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case ':':
- case '?': goto yy30;
- default: goto yy32;
- }
-yy32:
-#line 61 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_TEXT); }
-#line 298 "ext/pdo/pdo_sql_parser.c"
-yy33:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- case '_':
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'o':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'y':
- case 'z': goto yy33;
- default: goto yy35;
- }
-yy35:
-#line 62 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_BIND); }
-#line 372 "ext/pdo/pdo_sql_parser.c"
-yy36:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy37:
- switch (yych) {
- case 0x00: goto yy38;
- case '\'': goto yy40;
- case '\\': goto yy39;
- default: goto yy36;
- }
-yy38:
- YYCURSOR = YYMARKER;
- switch (yyaccept) {
- case 0: goto yy3;
- case 1: goto yy9;
- }
-yy39:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= 0x00) goto yy38;
- goto yy36;
-yy40:
- ++YYCURSOR;
-#line 60 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_TEXT); }
-#line 400 "ext/pdo/pdo_sql_parser.c"
-yy42:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy43:
- switch (yych) {
- case 0x00: goto yy38;
- case '"': goto yy45;
- case '\\': goto yy44;
- default: goto yy42;
- }
-yy44:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= 0x00) goto yy38;
- goto yy42;
-yy45:
- ++YYCURSOR;
-#line 59 "ext/pdo/pdo_sql_parser.re"
- { RET(PDO_PARSER_TEXT); }
-#line 422 "ext/pdo/pdo_sql_parser.c"
-}
-#line 68 "ext/pdo/pdo_sql_parser.re"
-
-}
-
-struct placeholder {
- char *pos;
- int len;
- int bindno;
- int qlen; /* quoted length of value */
- char *quoted; /* quoted value */
- int freeq;
- struct placeholder *next;
-};
-
-PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, int inquery_len,
- char **outquery, int *outquery_len TSRMLS_DC)
-{
- Scanner s;
- char *ptr, *newbuffer;
- int t;
- int bindno = 0;
- int ret = 0;
- int newbuffer_len;
- HashTable *params;
- struct pdo_bound_param_data *param;
- int query_type = PDO_PLACEHOLDER_NONE;
- struct placeholder *placeholders = NULL, *placetail = NULL, *plc = NULL;
-
- ptr = *outquery;
- s.cur = inquery;
-
- /* phase 1: look for args */
- while((t = scan(&s)) != PDO_PARSER_EOI) {
- if (t == PDO_PARSER_BIND || t == PDO_PARSER_BIND_POS) {
- if (t == PDO_PARSER_BIND) {
- int len = s.cur - s.tok;
- if ((inquery < (s.cur - len)) && isalnum(*(s.cur - len - 1))) {
- continue;
- }
- query_type |= PDO_PLACEHOLDER_NAMED;
- } else {
- query_type |= PDO_PLACEHOLDER_POSITIONAL;
- }
-
- plc = emalloc(sizeof(*plc));
- memset(plc, 0, sizeof(*plc));
- plc->next = NULL;
- plc->pos = s.tok;
- plc->len = s.cur - s.tok;
- plc->bindno = bindno++;
-
- if (placetail) {
- placetail->next = plc;
- } else {
- placeholders = plc;
- }
- placetail = plc;
- }
- }
-
- if (bindno == 0) {
- /* nothing to do; good! */
- return 0;
- }
-
- /* did the query make sense to me? */
- if (query_type == (PDO_PLACEHOLDER_NAMED|PDO_PLACEHOLDER_POSITIONAL)) {
- /* they mixed both types; punt */
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "mixed named and positional parameters" TSRMLS_CC);
- ret = -1;
- goto clean_up;
- }
-
- if (stmt->supports_placeholders == query_type && !stmt->named_rewrite_template) {
- /* query matches native syntax */
- ret = 0;
- goto clean_up;
- }
-
- if (stmt->named_rewrite_template) {
- /* magic/hack.
- * We we pretend that the query was positional even if
- * it was named so that we fall into the
- * named rewrite case below. Not too pretty,
- * but it works. */
- query_type = PDO_PLACEHOLDER_POSITIONAL;
- }
-
- params = stmt->bound_params;
-
- /* Do we have placeholders but no bound params */
- if (bindno && !params && stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "no parameters were bound" TSRMLS_CC);
- ret = -1;
- goto clean_up;
- }
-
- if (params && bindno != zend_hash_num_elements(params) && stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
- /* extra bit of validation for instances when same params are bound more then once */
- if (query_type != PDO_PLACEHOLDER_POSITIONAL && bindno > zend_hash_num_elements(params)) {
- int ok = 1;
- for (plc = placeholders; plc; plc = plc->next) {
- if (zend_hash_find(params, plc->pos, plc->len, (void**) &param) == FAILURE) {
- ok = 0;
- break;
- }
- }
- if (ok) {
- goto safe;
- }
- }
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "number of bound variables does not match number of tokens" TSRMLS_CC);
- ret = -1;
- goto clean_up;
- }
-safe:
- /* what are we going to do ? */
- if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
- /* query generation */
-
- newbuffer_len = inquery_len;
-
- /* let's quote all the values */
- for (plc = placeholders; plc; plc = plc->next) {
- if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
- ret = zend_hash_index_find(params, plc->bindno, (void**) &param);
- } else {
- ret = zend_hash_find(params, plc->pos, plc->len, (void**) &param);
- }
- if (ret == FAILURE) {
- /* parameter was not defined */
- ret = -1;
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined" TSRMLS_CC);
- goto clean_up;
- }
- if (stmt->dbh->methods->quoter) {
- if (param->param_type == PDO_PARAM_LOB && Z_TYPE_P(param->parameter) == IS_RESOURCE) {
- php_stream *stm;
-
- php_stream_from_zval_no_verify(stm, &param->parameter);
- if (stm) {
- size_t len;
- char *buf = NULL;
-
- len = php_stream_copy_to_mem(stm, &buf, PHP_STREAM_COPY_ALL, 0);
- if (!stmt->dbh->methods->quoter(stmt->dbh, buf, len, &plc->quoted, &plc->qlen,
- param->param_type TSRMLS_CC)) {
- /* bork */
- ret = -1;
- strcpy(stmt->error_code, stmt->dbh->error_code);
- if (buf) {
- efree(buf);
- }
- goto clean_up;
- }
- if (buf) {
- efree(buf);
- }
- } else {
- pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource" TSRMLS_CC);
- ret = -1;
- goto clean_up;
- }
- plc->freeq = 1;
- } else {
- switch (Z_TYPE_P(param->parameter)) {
- case IS_NULL:
- plc->quoted = "NULL";
- plc->qlen = sizeof("NULL")-1;
- plc->freeq = 0;
- break;
-
- case IS_LONG:
- case IS_DOUBLE:
- convert_to_string(param->parameter);
- plc->qlen = Z_STRLEN_P(param->parameter);
- plc->quoted = Z_STRVAL_P(param->parameter);
- plc->freeq = 0;
- break;
-
- case IS_BOOL:
- convert_to_long(param->parameter);
- default:
- convert_to_string(param->parameter);
- if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter),
- Z_STRLEN_P(param->parameter), &plc->quoted, &plc->qlen,
- param->param_type TSRMLS_CC)) {
- /* bork */
- ret = -1;
- strcpy(stmt->error_code, stmt->dbh->error_code);
- goto clean_up;
- }
- plc->freeq = 1;
- }
- }
- } else {
- plc->quoted = Z_STRVAL_P(param->parameter);
- plc->qlen = Z_STRLEN_P(param->parameter);
- }
- newbuffer_len += plc->qlen;
- }
-
-rewrite:
- /* allocate output buffer */
- newbuffer = emalloc(newbuffer_len + 1);
- *outquery = newbuffer;
-
- /* and build the query */
- plc = placeholders;
- ptr = inquery;
-
- do {
- t = plc->pos - ptr;
- if (t) {
- memcpy(newbuffer, ptr, t);
- newbuffer += t;
- }
- memcpy(newbuffer, plc->quoted, plc->qlen);
- newbuffer += plc->qlen;
- ptr = plc->pos + plc->len;
-
- plc = plc->next;
- } while (plc);
-
- t = (inquery + inquery_len) - ptr;
- if (t) {
- memcpy(newbuffer, ptr, t);
- newbuffer += t;
- }
- *newbuffer = '\0';
- *outquery_len = newbuffer - *outquery;
-
- ret = 1;
- goto clean_up;
-
- } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
- /* rewrite ? to :pdoX */
- char *name, *idxbuf;
- const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d";
- int bind_no = 1;
-
- newbuffer_len = inquery_len;
-
- if (stmt->bound_param_map == NULL) {
- ALLOC_HASHTABLE(stmt->bound_param_map);
- zend_hash_init(stmt->bound_param_map, 13, NULL, NULL, 0);
- }
-
- for (plc = placeholders; plc; plc = plc->next) {
- int skip_map = 0;
- char *p;
- name = estrndup(plc->pos, plc->len);
-
- /* check if bound parameter is already available */
- if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) {
- spprintf(&idxbuf, 0, tmpl, bind_no++);
- } else {
- idxbuf = estrdup(p);
- skip_map = 1;
- }
-
- plc->quoted = idxbuf;
- plc->qlen = strlen(plc->quoted);
- plc->freeq = 1;
- newbuffer_len += plc->qlen;
-
- if (!skip_map && stmt->named_rewrite_template) {
- /* create a mapping */
- zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL);
- }
-
- /* map number to name */
- zend_hash_index_update(stmt->bound_param_map, plc->bindno, idxbuf, plc->qlen + 1, NULL);
-
- efree(name);
- }
-
- goto rewrite;
-
- } else {
- /* rewrite :name to ? */
-
- newbuffer_len = inquery_len;
-
- if (stmt->bound_param_map == NULL) {
- ALLOC_HASHTABLE(stmt->bound_param_map);
- zend_hash_init(stmt->bound_param_map, 13, NULL, NULL, 0);
- }
-
- for (plc = placeholders; plc; plc = plc->next) {
- char *name;
-
- name = estrndup(plc->pos, plc->len);
- zend_hash_index_update(stmt->bound_param_map, plc->bindno, name, plc->len + 1, NULL);
- efree(name);
- plc->quoted = "?";
- plc->qlen = 1;
- }
-
- goto rewrite;
- }
-
-clean_up:
-
- while (placeholders) {
- plc = placeholders;
- placeholders = plc->next;
-
- if (plc->freeq) {
- efree(plc->quoted);
- }
-
- efree(plc);
- }
-
- return ret;
-}
-
-#if 0
-int old_pdo_parse_params(pdo_stmt_t *stmt, char *inquery, int inquery_len, char **outquery,
- int *outquery_len TSRMLS_DC)
-{
- Scanner s;
- char *ptr;
- int t;
- int bindno = 0;
- int newbuffer_len;
- int padding;
- HashTable *params = stmt->bound_params;
- struct pdo_bound_param_data *param;
- /* allocate buffer for query with expanded binds, ptr is our writing pointer */
- newbuffer_len = inquery_len;
-
- /* calculate the possible padding factor due to quoting */
- if(stmt->dbh->max_escaped_char_length) {
- padding = stmt->dbh->max_escaped_char_length;
- } else {
- padding = 3;
- }
- if(params) {
- zend_hash_internal_pointer_reset(params);
- while (SUCCESS == zend_hash_get_current_data(params, (void**)&param)) {
- if(param->parameter) {
- convert_to_string(param->parameter);
- /* accomodate a string that needs to be fully quoted
- bind placeholders are at least 2 characters, so
- the accomodate their own "'s
- */
- newbuffer_len += padding * Z_STRLEN_P(param->parameter);
- }
- zend_hash_move_forward(params);
- }
- }
- *outquery = (char *) emalloc(newbuffer_len + 1);
- *outquery_len = 0;
-
- ptr = *outquery;
- s.cur = inquery;
- while((t = scan(&s)) != PDO_PARSER_EOI) {
- if(t == PDO_PARSER_TEXT) {
- memcpy(ptr, s.tok, s.cur - s.tok);
- ptr += (s.cur - s.tok);
- *outquery_len += (s.cur - s.tok);
- }
- else if(t == PDO_PARSER_BIND) {
- if(!params) {
- /* error */
- efree(*outquery);
- *outquery = NULL;
- return (int) (s.cur - inquery);
- }
- /* lookup bind first via hash and then index */
- /* stupid keys need to be null-terminated, even though we know their length */
- if((SUCCESS == zend_hash_find(params, s.tok, s.cur-s.tok,(void **)&param))
- ||
- (SUCCESS == zend_hash_index_find(params, bindno, (void **)&param)))
- {
- char *quotedstr;
- int quotedstrlen;
- /* restore the in-string key, doesn't need null-termination here */
- /* currently everything is a string here */
-
- /* quote the bind value if necessary */
- if(stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter),
- Z_STRLEN_P(param->parameter), &quotedstr, &quotedstrlen TSRMLS_CC))
- {
- memcpy(ptr, quotedstr, quotedstrlen);
- ptr += quotedstrlen;
- *outquery_len += quotedstrlen;
- efree(quotedstr);
- } else {
- memcpy(ptr, Z_STRVAL_P(param->parameter), Z_STRLEN_P(param->parameter));
- ptr += Z_STRLEN_P(param->parameter);
- *outquery_len += (Z_STRLEN_P(param->parameter));
- }
- }
- else {
- /* error and cleanup */
- efree(*outquery);
- *outquery = NULL;
- return (int) (s.cur - inquery);
- }
- bindno++;
- }
- else if(t == PDO_PARSER_BIND_POS) {
- if(!params) {
- /* error */
- efree(*outquery);
- *outquery = NULL;
- return (int) (s.cur - inquery);
- }
- /* lookup bind by index */
- if(SUCCESS == zend_hash_index_find(params, bindno, (void **)&param))
- {
- char *quotedstr;
- int quotedstrlen;
- /* currently everything is a string here */
-
- /* quote the bind value if necessary */
- if(stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter),
- Z_STRLEN_P(param->parameter), &quotedstr, &quotedstrlen TSRMLS_CC))
- {
- memcpy(ptr, quotedstr, quotedstrlen);
- ptr += quotedstrlen;
- *outquery_len += quotedstrlen;
- efree(quotedstr);
- } else {
- memcpy(ptr, Z_STRVAL_P(param->parameter), Z_STRLEN_P(param->parameter));
- ptr += Z_STRLEN_P(param->parameter);
- *outquery_len += (Z_STRLEN_P(param->parameter));
- }
- }
- else {
- /* error and cleanup */
- efree(*outquery);
- *outquery = NULL;
- return (int) (s.cur - inquery);
- }
- bindno++;
- }
- }
- *ptr = '\0';
- return 0;
-}
-#endif
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: noet sw=4 ts=4 fdm=marker ft=c
- * vim<600: noet sw=4 ts=4
- */
diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re
index 55ae5e38d..fee5bdcc8 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-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sql_parser.re 314451 2011-08-08 00:07:54Z iliaa $ */
+/* $Id: pdo_sql_parser.re 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_pdo_driver.h"
diff --git a/ext/pdo/pdo_sqlstate.c b/ext/pdo/pdo_sqlstate.c
index ad3e7c929..575154a9a 100644
--- a/ext/pdo/pdo_sqlstate.c
+++ b/ext/pdo/pdo_sqlstate.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sqlstate.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pdo_sqlstate.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 04cdad030..2ee207909 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_stmt.c 312258 2011-06-18 15:56:14Z felipe $ */
+/* $Id: pdo_stmt.c 321634 2012-01-01 13:15:04Z felipe $ */
/* The PDO Statement Handle Class */
@@ -2351,6 +2351,7 @@ static zend_object_value dbstmt_clone_obj(zval *zobject TSRMLS_DC)
}
zend_object_handlers pdo_dbstmt_object_handlers;
+static int pdo_row_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC);
void pdo_stmt_init(TSRMLS_D)
{
@@ -2374,6 +2375,7 @@ void pdo_stmt_init(TSRMLS_D)
pdo_row_ce = zend_register_internal_class(&ce TSRMLS_CC);
pdo_row_ce->ce_flags |= ZEND_ACC_FINAL_CLASS; /* when removing this a lot of handlers need to be redone */
pdo_row_ce->create_object = pdo_row_new;
+ pdo_row_ce->serialize = pdo_row_serialize;
}
static void free_statement(pdo_stmt_t *stmt TSRMLS_DC)
@@ -2797,6 +2799,12 @@ zend_object_value pdo_row_new(zend_class_entry *ce TSRMLS_DC)
return retval;
}
+
+static int pdo_row_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC)
+{
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PDORow instances may not be serialized");
+ return FAILURE;
+}
/* }}} */
/*
diff --git a/ext/pdo/php_pdo.h b/ext/pdo/php_pdo.h
index 866151ded..79115b523 100755
--- a/ext/pdo/php_pdo.h
+++ b/ext/pdo/php_pdo.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_H
#define PHP_PDO_H
diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h
index e95c738ee..0bdc1cea2 100755
--- a/ext/pdo/php_pdo_driver.h
+++ b/ext/pdo/php_pdo_driver.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_driver.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_driver.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_DRIVER_H
#define PHP_PDO_DRIVER_H
diff --git a/ext/pdo/php_pdo_int.h b/ext/pdo/php_pdo_int.h
index 03c717958..8e3e1bea1 100755
--- a/ext/pdo/php_pdo_int.h
+++ b/ext/pdo/php_pdo_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_int.h 314450 2011-08-07 23:46:00Z iliaa $ */
+/* $Id: php_pdo_int.h 321634 2012-01-01 13:15:04Z felipe $ */
/* Stuff private to the PDO extension and not for consumption by PDO drivers
* */
diff --git a/ext/pdo/tests/bug_34630.phpt b/ext/pdo/tests/bug_34630.phpt
index 22ad2e820..070217baf 100644
--- a/ext/pdo/tests/bug_34630.phpt
+++ b/ext/pdo/tests/bug_34630.phpt
@@ -45,8 +45,6 @@ $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
var_dump($db->query("SELECT * from test")->fetchAll(PDO::FETCH_ASSOC));
?>
---XFAIL--
-This bug might be still open on aix5.2-ppc64 and hpux11.23-ia64
--EXPECT--
array(1) {
[0]=>
diff --git a/ext/pdo/tests/bug_36798.phpt b/ext/pdo/tests/bug_36798.phpt
index 5a40bb78c..9da703e84 100644
--- a/ext/pdo/tests/bug_36798.phpt
+++ b/ext/pdo/tests/bug_36798.phpt
@@ -7,6 +7,12 @@ $dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
require_once $dir . 'pdo_test.inc';
PDOTest::skip();
+
+if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))){
+ if (!strpos(strtolower(getenv('PDOTEST_DSN')), 'charset=we8mswin1252')) die('skip expected output valid for Oracle with WE8MSWIN1252 character set');
+
+}
+
?>
--FILE--
<?php
diff --git a/ext/pdo/tests/bug_43130.phpt b/ext/pdo/tests/bug_43130.phpt
index bb40f894d..a35138a07 100644
--- a/ext/pdo/tests/bug_43130.phpt
+++ b/ext/pdo/tests/bug_43130.phpt
@@ -7,6 +7,7 @@ $dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
if (!strncasecmp(getenv('PDOTEST_DSN'), 'sqlite', strlen('sqlite'))) die('skip not relevant for sqlite driver');
if (!strncasecmp(getenv('PDOTEST_DSN'), 'pgsql', strlen('pgsql'))) die('skip not relevant for pgsql driver');
+if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))) die('skip not relevant for oci driver - Hyphen is not legal for bind names in Oracle DB');
require_once $dir . 'pdo_test.inc';
PDOTest::skip();
?>
diff --git a/ext/pdo/tests/bug_43139.phpt b/ext/pdo/tests/bug_43139.phpt
index 2c04d79fa..87bfd4e58 100644
--- a/ext/pdo/tests/bug_43139.phpt
+++ b/ext/pdo/tests/bug_43139.phpt
@@ -20,6 +20,8 @@ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$from = '';
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') {
$from = 'from dual';
+} else if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') {
+ $from = 'FROM RDB$DATABASE';
}
var_dump($db->query("select 0 as abc, 1 as xyz, 2 as def $from")->fetchAll(PDO::FETCH_GROUP));
diff --git a/ext/pdo/tests/bug_44861.phpt b/ext/pdo/tests/bug_44861.phpt
index 3612561ed..cb8e657e9 100644
--- a/ext/pdo/tests/bug_44861.phpt
+++ b/ext/pdo/tests/bug_44861.phpt
@@ -28,11 +28,13 @@ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') {
$from = 'FROM DUAL';
+ $ob = '1';
} else {
$from = '';
+ $ob = 'r';
}
-$query = "SELECT 'row1' AS r $from UNION SELECT 'row2' $from UNION SELECT 'row3' $from UNION SELECT 'row4' $from ORDER BY r";
+$query = "SELECT 'row1' AS r $from UNION SELECT 'row2' $from UNION SELECT 'row3' $from UNION SELECT 'row4' $from ORDER BY $ob";
$aParams = array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL);
$res = $db->prepare($query, $aParams);
diff --git a/ext/pdo/tests/pdo_016.phpt b/ext/pdo/tests/pdo_016.phpt
index f3aba13e0..12c951723 100644
--- a/ext/pdo/tests/pdo_016.phpt
+++ b/ext/pdo/tests/pdo_016.phpt
@@ -5,6 +5,7 @@ PDO Common: PDO::FETCH_BOUND
if (!extension_loaded('pdo')) die('skip');
$dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
+if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))) die('skip not relevant for oci driver - cannot reexecute after closing cursors without reparse');
require_once $dir . 'pdo_test.inc';
PDOTest::skip();
?>
diff --git a/ext/pdo/tests/pdo_016a.phpt b/ext/pdo/tests/pdo_016a.phpt
index 00b75aeca..72f4b4224 100755
--- a/ext/pdo/tests/pdo_016a.phpt
+++ b/ext/pdo/tests/pdo_016a.phpt
@@ -6,6 +6,7 @@ if (!extension_loaded('pdo')) die('skip');
$dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
require_once $dir . 'pdo_test.inc';
+if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))) die('skip not relevant for oci driver - cannot reexecute after closing cursors without reparse');
PDOTest::skip();
?>
--FILE--
diff --git a/ext/pdo/tests/pdo_036.phpt b/ext/pdo/tests/pdo_036.phpt
index 6bd38cb06..94006c9e8 100644
--- a/ext/pdo/tests/pdo_036.phpt
+++ b/ext/pdo/tests/pdo_036.phpt
@@ -1,5 +1,7 @@
--TEST--
Testing PDORow and PDOStatement instances with Reflection
+--SKIPIF--
+<?php if (!extension_loaded('pdo')) die('skip'); ?>
--FILE--
<?php
diff --git a/ext/pdo/tests/pdorow.phpt b/ext/pdo/tests/pdorow.phpt
index b33dd155d..bcfd8ff22 100644
--- a/ext/pdo/tests/pdorow.phpt
+++ b/ext/pdo/tests/pdorow.phpt
@@ -1,5 +1,7 @@
--TEST--
Trying instantiate a PDORow object manually
+--SKIPIF--
+<?php if (!extension_loaded('pdo')) die('skip'); ?>
--FILE--
<?php
diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c
index bd6b8ef39..7f152efea 100644
--- a/ext/pdo_dblib/dblib_driver.c
+++ b/ext/pdo_dblib/dblib_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dblib_driver.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dblib_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c
index 1f5af7fa7..cc4e642c2 100644
--- a/ext/pdo_dblib/dblib_stmt.c
+++ b/ext/pdo_dblib/dblib_stmt.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dblib_stmt.c 312860 2011-07-03 19:01:42Z felipe $ */
+/* $Id: dblib_stmt.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c
index d189c33a2..e5b30c543 100644
--- a/ext/pdo_dblib/pdo_dblib.c
+++ b/ext/pdo_dblib/pdo_dblib.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dblib.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_dblib.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/pdo_dblib/php_pdo_dblib.h b/ext/pdo_dblib/php_pdo_dblib.h
index 34e93d666..7038dc50a 100644
--- a/ext/pdo_dblib/php_pdo_dblib.h
+++ b/ext/pdo_dblib/php_pdo_dblib.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_dblib.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_dblib.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_DBLIB_H
#define PHP_PDO_DBLIB_H
diff --git a/ext/pdo_dblib/php_pdo_dblib_int.h b/ext/pdo_dblib/php_pdo_dblib_int.h
index 6f29ef399..a267e73a6 100644
--- a/ext/pdo_dblib/php_pdo_dblib_int.h
+++ b/ext/pdo_dblib/php_pdo_dblib_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_dblib_int.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_dblib_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_DBLIB_INT_H
#define PHP_PDO_DBLIB_INT_H
diff --git a/ext/pdo_firebird/firebird_driver.c b/ext/pdo_firebird/firebird_driver.c
index 0efd6a158..deec3b1a3 100644
--- a/ext/pdo_firebird/firebird_driver.c
+++ b/ext/pdo_firebird/firebird_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: firebird_driver.c 312225 2011-06-17 02:00:20Z felipe $ */
+/* $Id: firebird_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -433,14 +433,17 @@ static int firebird_alloc_prepare_stmt(pdo_dbh_t *dbh, const char *sql, long sql
case ':':
in_param = 1;
ppname = pname;
+ *ppname++ = sql[l];
case '?':
*c++ = '?';
++pindex;
continue;
}
} else {
- if ((in_param &= (sql[l] == '_') || (sql[l] >= 'A' && sql[l] <= 'Z')
- || (sql[l] >= 'a' && sql[l] <= 'z') || (sql[l] >= '0' && sql[l] <= '9'))) {
+ if ((in_param &= ((sql[l] >= 'A' && sql[l] <= 'Z') || (sql[l] >= 'a' && sql[l] <= 'z')
+ || (sql[l] >= '0' && sql[l] <= '9') || sql[l] == '_' || sql[l] == '-'))) {
+
+
*ppname++ = sql[l];
continue;
} else {
diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c
index 562b047a9..9529288de 100644
--- a/ext/pdo_firebird/firebird_statement.c
+++ b/ext/pdo_firebird/firebird_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: firebird_statement.c 312225 2011-06-17 02:00:20Z felipe $ */
+/* $Id: firebird_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -582,6 +582,12 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat
break;
case PDO_PARAM_EVT_FETCH_POST:
+ if (param->paramno == -1) {
+ return 0;
+ }
+ if (param->is_param) {
+ break;
+ }
value = NULL;
value_len = 0;
caller_frees = 0;
@@ -598,6 +604,15 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat
ZVAL_LONG(param->parameter, *(long*)value);
break;
}
+ case PDO_PARAM_EVT_NORMALIZE:
+ if (!param->is_param) {
+ char *s = param->name;
+ while (*s != '\0') {
+ *s = toupper(*s);
+ s++;
+ }
+ }
+ break;
default:
ZVAL_NULL(param->parameter);
}
diff --git a/ext/pdo_firebird/pdo_firebird.c b/ext/pdo_firebird/pdo_firebird.c
index 8dd35aff7..98000da45 100644
--- a/ext/pdo_firebird/pdo_firebird.c
+++ b/ext/pdo_firebird/pdo_firebird.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_firebird.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_firebird.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_firebird/php_pdo_firebird.h b/ext/pdo_firebird/php_pdo_firebird.h
index 0dc4d9939..fba536380 100644
--- a/ext/pdo_firebird/php_pdo_firebird.h
+++ b/ext/pdo_firebird/php_pdo_firebird.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_firebird.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_firebird.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_FIREBIRD_H
#define PHP_PDO_FIREBIRD_H
diff --git a/ext/pdo_firebird/php_pdo_firebird_int.h b/ext/pdo_firebird/php_pdo_firebird_int.h
index 71e83d7e3..653e86ace 100644
--- a/ext/pdo_firebird/php_pdo_firebird_int.h
+++ b/ext/pdo_firebird/php_pdo_firebird_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_firebird_int.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_firebird_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_FIREBIRD_INT_H
#define PHP_PDO_FIREBIRD_INT_H
diff --git a/ext/pdo_firebird/tests/bug_47415.phpt b/ext/pdo_firebird/tests/bug_47415.phpt
new file mode 100644
index 000000000..cedc2c45b
--- /dev/null
+++ b/ext/pdo_firebird/tests/bug_47415.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Bug #47415 PDO_Firebird segfaults when passing lowercased column name to bindColumn()
+--SKIPIF--
+<?php extension_loaded("pdo_firebird") or die("skip"); ?>
+--FILE--
+<?php
+
+require("testdb.inc");
+
+$dbh = new PDO("firebird:dbname=$test_base",$user,$password) or die;
+$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$value = '2';
+@$dbh->exec('DROP TABLE testz');
+$dbh->exec('CREATE TABLE testz (idx int NOT NULL PRIMARY KEY, txt VARCHAR(20))');
+$dbh->exec('INSERT INTO testz VALUES(0, \'String0\')');
+$dbh->commit();
+
+$query = "SELECT idx, txt FROM testz ORDER by idx";
+$idx = $txt = 0;
+$stmt = $dbh->prepare($query);
+$stmt->bindColumn('idx', $idx);
+$stmt->bindColumn('txt', $txt);
+$stmt->execute();
+$rows = $stmt->fetch(PDO::FETCH_BOUND);
+var_dump($stmt->fetch());
+var_dump($stmt->rowCount());
+
+
+$stmt = $dbh->prepare('DELETE FROM testz');
+$stmt->execute();
+
+$dbh->commit();
+
+$dbh->exec('DROP TABLE testz');
+
+unset($stmt);
+unset($dbh);
+
+?>
+--EXPECT--
+bool(false)
+int(1)
diff --git a/ext/pdo_firebird/tests/bug_48877.phpt b/ext/pdo_firebird/tests/bug_48877.phpt
new file mode 100644
index 000000000..290cd7a3a
--- /dev/null
+++ b/ext/pdo_firebird/tests/bug_48877.phpt
@@ -0,0 +1,42 @@
+--TEST--
+PDO_Firebird: bug 48877 The "bindValue" and "bindParam" do not work for PDO Firebird if we use named parameters (:parameter).
+--SKIPIF--
+<?php extension_loaded("pdo_firebird") or die("skip"); ?>
+--FILE--
+<?php
+
+require("testdb.inc");
+
+$dbh = new PDO("firebird:dbname=$test_base",$user,$password) or die;
+$value = '2';
+@$dbh->exec('DROP TABLE testz');
+$dbh->exec('CREATE TABLE testz (A integer)');
+$dbh->exec("INSERT INTO testz VALUES ('1')");
+$dbh->exec("INSERT INTO testz VALUES ('2')");
+$dbh->exec("INSERT INTO testz VALUES ('3')");
+$dbh->commit();
+
+$query = "SELECT * FROM testz WHERE A = :paramno";
+
+$stmt = $dbh->prepare($query);
+$stmt->bindParam(':paramno', $value, PDO::PARAM_STR);
+$stmt->execute();
+$rows = $stmt->fetch();
+var_dump($stmt->fetch());
+var_dump($stmt->rowCount());
+
+
+$stmt = $dbh->prepare('DELETE FROM testz');
+$stmt->execute();
+
+$dbh->commit();
+
+$dbh->exec('DROP TABLE testz');
+
+unset($stmt);
+unset($dbh);
+
+?>
+--EXPECT--
+bool(false)
+int(1)
diff --git a/ext/pdo_firebird/tests/bug_53280.phpt b/ext/pdo_firebird/tests/bug_53280.phpt
new file mode 100644
index 000000000..cc030dd49
--- /dev/null
+++ b/ext/pdo_firebird/tests/bug_53280.phpt
@@ -0,0 +1,63 @@
+--TEST--
+PDO_Firebird: bug 53280 segfaults if query column count is less than param count
+--SKIPIF--
+<?php extension_loaded("pdo_firebird") or die("skip"); ?>
+--FILE--
+<?php
+
+require("testdb.inc");
+
+$dbh = new PDO("firebird:dbname=$test_base",$user,$password) or die;
+$value = '2';
+@$dbh->exec('DROP TABLE testz');
+$dbh->exec('CREATE TABLE testz(A VARCHAR(30), B VARCHAR(30), C VARCHAR(30))');
+$dbh->exec("INSERT INTO testz VALUES ('A', 'B', 'C')");
+$dbh->commit();
+
+$stmt1 = "SELECT B FROM testz WHERE A = ? AND B = ?";
+$stmt2 = "SELECT B, C FROM testz WHERE A = ? AND B = ?";
+
+$stmth2 = $dbh->prepare($stmt2);
+$stmth2->execute(array('A', 'B'));
+$rows = $stmth2->fetchAll(); // <------ OK
+var_dump($rows);
+
+$stmth1 = $dbh->prepare($stmt1);
+$stmth1->execute(array('A', 'B'));
+$rows = $stmth1->fetchAll(); // <------- segfault
+var_dump($rows);
+
+$stmt = $dbh->prepare('DELETE FROM testz');
+$stmt->execute();
+
+$dbh->commit();
+
+$dbh->exec('DROP TABLE testz');
+
+unset($stmt);
+unset($dbh);
+
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ array(4) {
+ ["B"]=>
+ string(1) "B"
+ [0]=>
+ string(1) "B"
+ ["C"]=>
+ string(1) "C"
+ [1]=>
+ string(1) "C"
+ }
+}
+array(1) {
+ [0]=>
+ array(2) {
+ ["B"]=>
+ string(1) "B"
+ [0]=>
+ string(1) "B"
+ }
+}
diff --git a/ext/pdo_firebird/tests/rowCount.phpt b/ext/pdo_firebird/tests/rowCount.phpt
index 1cb09e1e9..54ab55471 100644
--- a/ext/pdo_firebird/tests/rowCount.phpt
+++ b/ext/pdo_firebird/tests/rowCount.phpt
@@ -3,7 +3,7 @@ PDO_Firebird: rowCount
--SKIPIF--
<?php extension_loaded("pdo_firebird") or die("skip"); ?>
--FILE--
-<?php /* $Id: rowCount.phpt 305476 2010-11-18 01:24:00Z felipe $ */
+<?php /* $Id: rowCount.phpt 316542 2011-09-12 13:43:42Z mariuz $ */
require("testdb.inc");
@@ -38,6 +38,7 @@ $dbh->commit();
$dbh->exec('DROP TABLE testz');
+unset($stmt);
unset($dbh);
?>
diff --git a/ext/pdo_mysql/get_error_codes.php b/ext/pdo_mysql/get_error_codes.php
index 2785c93b9..a1ed85016 100644
--- a/ext/pdo_mysql/get_error_codes.php
+++ b/ext/pdo_mysql/get_error_codes.php
@@ -5,7 +5,7 @@
while (!feof(STDIN)) {
$line = fgets(STDIN);
- if (ereg('^(ER_.*),[[:space:]]+"(.*)",[[:space:]]+"(.*)"', $line, $matches)) {
+ if (ereg('^\{[[:space:]]+(ER_.*)[[:space:]]+,[[:space:]]*"(.*)",[[:space:]]*"(.*)"', $line, $matches)) {
$codes[$matches[1]] = $matches[2];
$maxlen = max($maxlen, strlen($matches[1]));
}
@@ -24,4 +24,4 @@
}
-?> \ No newline at end of file
+?>
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index ff161f7f6..88b2ba6ed 100755
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_driver.c 310239 2011-04-15 14:24:40Z rrichards $ */
+/* $Id: mysql_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -42,7 +42,7 @@
# define pdo_mysql_init(persistent) mysql_init(NULL)
#endif
-#if !HAVE_MYSQL_SQLSTATE && !PDO_USE_MYSQLND
+#if !defined(HAVE_MYSQL_SQLSTATE) && !defined(PDO_USE_MYSQLND)
static const char *pdo_mysql_get_sqlstate(unsigned int my_errno) { /* {{{ */
switch (my_errno) {
/* import auto-generated case: code */
@@ -54,7 +54,7 @@ static const char *pdo_mysql_get_sqlstate(unsigned int my_errno) { /* {{{ */
#endif
/* {{{ _pdo_mysql_error */
-int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int line TSRMLS_DC) /* {{{ */
+int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int line TSRMLS_DC)
{
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
pdo_error_type *pdo_err;
@@ -72,7 +72,7 @@ int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int lin
einfo = &H->einfo;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
+#if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
if (S && S->stmt) {
einfo->errcode = mysql_stmt_errno(S->stmt);
}
@@ -112,8 +112,8 @@ int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int lin
PDO_DBG_RETURN(0);
}
-#if HAVE_MYSQL_SQLSTATE || PDO_USE_MYSQLND
-# if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
+#if defined(HAVE_MYSQL_SQLSTATE) || defined(PDO_USE_MYSQLND)
+# if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
if (S && S->stmt) {
strcpy(*pdo_err, mysql_stmt_sqlstate(S->stmt));
} else
@@ -160,7 +160,7 @@ static int pdo_mysql_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *in
/* }}} */
/* {{{ mysql_handle_closer */
-static int mysql_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
+static int mysql_handle_closer(pdo_dbh_t *dbh TSRMLS_DC)
{
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
@@ -187,7 +187,7 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
{
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
pdo_mysql_stmt *S = ecalloc(1, sizeof(pdo_mysql_stmt));
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
+#if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
char *nsql = NULL;
int nsql_len = 0;
int ret;
@@ -206,7 +206,7 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
goto end;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
+#if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
server_version = mysql_get_server_version(H->server);
if (server_version < 40100) {
goto fallback;
@@ -255,7 +255,7 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
if (S->num_params) {
S->params_given = 0;
-#if PDO_USE_MYSQLND
+#ifdef PDO_USE_MYSQLND
S->params = NULL;
#else
S->params = ecalloc(S->num_params, sizeof(MYSQL_BIND));
@@ -296,7 +296,7 @@ static long mysql_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRM
PDO_DBG_RETURN(H->einfo.errcode ? -1 : 0);
} else {
-#if HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND
+#if defined(HAVE_MYSQL_NEXT_RESULT) || defined(PDO_USE_MYSQLND)
/* MULTI_QUERY support - eat up all unfetched result sets */
MYSQL_RES* result;
while (mysql_more_results(H->server)) {
@@ -324,6 +324,7 @@ static char *pdo_mysql_last_insert_id(pdo_dbh_t *dbh, const char *name, unsigned
*len = strlen(id);
PDO_DBG_RETURN(id);
}
+/* }}} */
/* {{{ mysql_handle_quoter */
static int mysql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type paramtype TSRMLS_DC)
@@ -361,6 +362,7 @@ static int mysql_handle_commit(pdo_dbh_t *dbh TSRMLS_DC)
PDO_DBG_RETURN(0 <= mysql_handle_doer(dbh, ZEND_STRL("COMMIT") TSRMLS_CC));
#endif
}
+/* }}} */
/* {{{ mysql_handle_rollback */
static int mysql_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC)
@@ -461,7 +463,7 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
break;
case PDO_ATTR_SERVER_INFO: {
char *tmp;
-#if PDO_USE_MYSQLND
+#ifdef PDO_USE_MYSQLND
unsigned int tmp_len;
if (mysqlnd_stat(H->server, &tmp, &tmp_len) == PASS) {
@@ -503,7 +505,7 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
/* }}} */
/* {{{ pdo_mysql_check_liveness */
-static int pdo_mysql_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
+static int pdo_mysql_check_liveness(pdo_dbh_t *dbh TSRMLS_DC)
{
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
#if MYSQL_VERSION_ID <= 32230
@@ -551,16 +553,15 @@ static struct pdo_dbh_methods mysql_methods = {
pdo_mysql_check_liveness
};
/* }}} */
-#ifdef PDO_USE_MYSQLND
-# ifdef PHP_WIN32
-# define MYSQL_UNIX_ADDR "MySQL"
-# else
-# define MYSQL_UNIX_ADDR PDO_MYSQL_G(default_socket)
-# endif
+
+#ifdef PHP_WIN32
+# define MYSQL_UNIX_ADDR NULL
+#else
+# define MYSQL_UNIX_ADDR PDO_MYSQL_G(default_socket)
#endif
/* {{{ pdo_mysql_handle_factory */
-static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) /* {{{ */
+static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC)
{
pdo_mysql_db_handle *H;
int i, ret = 0;
@@ -583,7 +584,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
#endif
;
-#if PDO_USE_MYSQLND
+#ifdef PDO_USE_MYSQLND
int dbname_len = 0;
int password_len = 0;
#endif
@@ -625,7 +626,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
char *default_file = NULL, *default_group = NULL;
long compress = 0;
#endif
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSLQND
+#if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
char *ssl_key = NULL, *ssl_cert = NULL, *ssl_ca = NULL, *ssl_capath = NULL, *ssl_cipher = NULL;
#endif
H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 1 TSRMLS_CC);
@@ -660,7 +661,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
{
local_infile = 0;
}
-#ifdef MYSQL_OPT_LOCAL_INFILE
+#if defined(MYSQL_OPT_LOCAL_INFILE) || defined(PDO_USE_MYSQLND)
if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE, (const char *)&local_infile)) {
pdo_mysql_error(dbh);
goto cleanup;
@@ -668,7 +669,9 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
#endif
#ifdef MYSQL_OPT_RECONNECT
/* since 5.0.3, the default for this option is 0 if not specified.
- * we want the old behaviour */
+ * we want the old behaviour
+ * mysqlnd doesn't support reconnect, thus we don't have "|| defined(PDO_USE_MYSQLND)"
+ */
{
long reconnect = 1;
mysql_options(H->server, MYSQL_OPT_RECONNECT, (const char*)&reconnect);
@@ -712,7 +715,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
}
}
#endif
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSLQND
+#if defined(HAVE_MYSQL_STMT_PREPARE) || defined(PDO_USE_MYSQLND)
ssl_key = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_KEY, NULL TSRMLS_CC);
ssl_cert = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CERT, NULL TSRMLS_CC);
ssl_ca = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CA, NULL TSRMLS_CC);
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index c2a593f1d..4c8c3559a 100755
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_statement.c 311088 2011-05-16 15:37:39Z johannes $ */
+/* $Id: mysql_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -335,7 +335,7 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
PDO_DBG_RETURN(1);
}
-/* {{{ */
+/* }}} */
static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
{
@@ -461,8 +461,7 @@ static const char * const pdo_param_event_names[] =
};
-static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param,
- enum pdo_param_event event_type TSRMLS_DC) /* {{{ */
+static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC) /* {{{ */
{
#ifndef PDO_USE_MYSQLND
PDO_MYSQL_PARAM_BIND *b;
@@ -604,8 +603,7 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_da
}
/* }}} */
-static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt,
- enum pdo_fetch_orientation ori, long offset TSRMLS_DC) /* {{{ */
+static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori, long offset TSRMLS_DC) /* {{{ */
{
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
#if PDO_USE_MYSQLND
@@ -777,7 +775,7 @@ static int pdo_mysql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsig
PDO_DBG_RETURN(1);
} /* }}} */
-static char *type_to_name_native(int type) /* }}} */
+static char *type_to_name_native(int type) /* {{{ */
{
#define PDO_MYSQL_NATIVE_TYPE_NAME(x) case FIELD_TYPE_##x: return #x;
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 85829e208..aa122efc9 100755
--- a/ext/pdo_mysql/pdo_mysql.c
+++ b/ext/pdo_mysql/pdo_mysql.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_mysql.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_mysql.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -37,12 +37,22 @@ ZEND_GET_MODULE(pdo_mysql)
ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql);
-#ifndef PHP_WIN32
-# ifndef PDO_MYSQL_UNIX_ADDR
-# ifdef PHP_MYSQL_UNIX_SOCK_ADDR
-# define PDO_MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
-# else
+/*
+ The default socket location is sometimes defined by configure.
+ With libmysql `mysql_config --socket` will fill PDO_MYSQL_UNIX_ADDR
+ and the user can use --with-mysql-sock=SOCKET which will fill
+ PDO_MYSQL_UNIX_ADDR. If both aren't set we're using mysqlnd and use
+ /tmp/mysql.sock as default on *nix and NULL for Windows (default
+ named pipe name is set in mysqlnd).
+*/
+#ifndef PDO_MYSQL_UNIX_ADDR
+# ifdef PHP_MYSQL_UNIX_SOCK_ADDR
+# define PDO_MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
+# else
+# if !PHP_WIN32
# define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock"
+# else
+# define PDO_MYSQL_UNIX_ADDR NULL
# endif
# endif
#endif
@@ -112,7 +122,7 @@ static PHP_MINFO_FUNCTION(pdo_mysql)
php_info_print_table_end();
-#ifdef PDO_USE_MYSQLND
+#ifndef PHP_WIN32
DISPLAY_INI_ENTRIES();
#endif
}
diff --git a/ext/pdo_mysql/php_pdo_mysql.h b/ext/pdo_mysql/php_pdo_mysql.h
index 8319b0774..1b55273f7 100755
--- a/ext/pdo_mysql/php_pdo_mysql.h
+++ b/ext/pdo_mysql/php_pdo_mysql.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_mysql.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_mysql.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_MYSQL_H
#define PHP_PDO_MYSQL_H
diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h
index 7a3c89995..1eae578a0 100755
--- a/ext/pdo_mysql/php_pdo_mysql_int.h
+++ b/ext/pdo_mysql/php_pdo_mysql_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_mysql_int.h 310850 2011-05-09 11:34:17Z johannes $ */
+/* $Id: php_pdo_mysql_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_MYSQL_INT_H
#define PHP_PDO_MYSQL_INT_H
diff --git a/ext/pdo_mysql/php_pdo_mysql_sqlstate.h b/ext/pdo_mysql/php_pdo_mysql_sqlstate.h
index 97724b72e..70fc95ef7 100644
--- a/ext/pdo_mysql/php_pdo_mysql_sqlstate.h
+++ b/ext/pdo_mysql/php_pdo_mysql_sqlstate.h
@@ -1,388 +1,646 @@
/* DO NOT EDIT THIS FILE!!! It is auto generated by get_error_codes.php */
-#ifdef ER_DUP_KEY
- case ER_DUP_KEY : return "23000";
+#ifdef ER_DUP_KEY
+ case ER_DUP_KEY : return "23000";
#endif
-#ifdef ER_OUTOFMEMORY
- case ER_OUTOFMEMORY : return "HY001";
+#ifdef ER_OUTOFMEMORY
+ case ER_OUTOFMEMORY : return "HY001";
#endif
-#ifdef ER_OUT_OF_SORTMEMORY
- case ER_OUT_OF_SORTMEMORY : return "HY001";
+#ifdef ER_OUT_OF_SORTMEMORY
+ case ER_OUT_OF_SORTMEMORY : return "HY001";
#endif
-#ifdef ER_CON_COUNT_ERROR
- case ER_CON_COUNT_ERROR : return "08004";
+#ifdef ER_CON_COUNT_ERROR
+ case ER_CON_COUNT_ERROR : return "08004";
#endif
-#ifdef ER_BAD_HOST_ERROR
- case ER_BAD_HOST_ERROR : return "08S01";
+#ifdef ER_BAD_HOST_ERROR
+ case ER_BAD_HOST_ERROR : return "08S01";
#endif
-#ifdef ER_HANDSHAKE_ERROR
- case ER_HANDSHAKE_ERROR : return "08S01";
+#ifdef ER_HANDSHAKE_ERROR
+ case ER_HANDSHAKE_ERROR : return "08S01";
#endif
-#ifdef ER_DBACCESS_DENIED_ERROR
- case ER_DBACCESS_DENIED_ERROR : return "42000";
+#ifdef ER_DBACCESS_DENIED_ERROR
+ case ER_DBACCESS_DENIED_ERROR : return "42000";
#endif
-#ifdef ER_ACCESS_DENIED_ERROR
- case ER_ACCESS_DENIED_ERROR : return "28000";
+#ifdef ER_ACCESS_DENIED_ERROR
+ case ER_ACCESS_DENIED_ERROR : return "28000";
#endif
-#ifdef ER_NO_DB_ERROR
- case ER_NO_DB_ERROR : return "3D000";
+#ifdef ER_NO_DB_ERROR
+ case ER_NO_DB_ERROR : return "3D000";
#endif
-#ifdef ER_UNKNOWN_COM_ERROR
- case ER_UNKNOWN_COM_ERROR : return "08S01";
+#ifdef ER_UNKNOWN_COM_ERROR
+ case ER_UNKNOWN_COM_ERROR : return "08S01";
#endif
-#ifdef ER_BAD_NULL_ERROR
- case ER_BAD_NULL_ERROR : return "23000";
+#ifdef ER_BAD_NULL_ERROR
+ case ER_BAD_NULL_ERROR : return "23000";
#endif
-#ifdef ER_BAD_DB_ERROR
- case ER_BAD_DB_ERROR : return "42000";
+#ifdef ER_BAD_DB_ERROR
+ case ER_BAD_DB_ERROR : return "42000";
#endif
-#ifdef ER_TABLE_EXISTS_ERROR
- case ER_TABLE_EXISTS_ERROR : return "42S01";
+#ifdef ER_TABLE_EXISTS_ERROR
+ case ER_TABLE_EXISTS_ERROR : return "42S01";
#endif
-#ifdef ER_BAD_TABLE_ERROR
- case ER_BAD_TABLE_ERROR : return "42S02";
+#ifdef ER_BAD_TABLE_ERROR
+ case ER_BAD_TABLE_ERROR : return "42S02";
#endif
-#ifdef ER_NON_UNIQ_ERROR
- case ER_NON_UNIQ_ERROR : return "23000";
+#ifdef ER_NON_UNIQ_ERROR
+ case ER_NON_UNIQ_ERROR : return "23000";
#endif
-#ifdef ER_SERVER_SHUTDOWN
- case ER_SERVER_SHUTDOWN : return "08S01";
+#ifdef ER_SERVER_SHUTDOWN
+ case ER_SERVER_SHUTDOWN : return "08S01";
#endif
-#ifdef ER_BAD_FIELD_ERROR
- case ER_BAD_FIELD_ERROR : return "42S22";
+#ifdef ER_BAD_FIELD_ERROR
+ case ER_BAD_FIELD_ERROR : return "42S22";
#endif
-#ifdef ER_WRONG_FIELD_WITH_GROUP
- case ER_WRONG_FIELD_WITH_GROUP : return "42000";
+#ifdef ER_WRONG_FIELD_WITH_GROUP
+ case ER_WRONG_FIELD_WITH_GROUP : return "42000";
#endif
-#ifdef ER_WRONG_GROUP_FIELD
- case ER_WRONG_GROUP_FIELD : return "42000";
+#ifdef ER_WRONG_GROUP_FIELD
+ case ER_WRONG_GROUP_FIELD : return "42000";
#endif
-#ifdef ER_WRONG_SUM_SELECT
- case ER_WRONG_SUM_SELECT : return "42000";
+#ifdef ER_WRONG_SUM_SELECT
+ case ER_WRONG_SUM_SELECT : return "42000";
#endif
-#ifdef ER_WRONG_VALUE_COUNT
- case ER_WRONG_VALUE_COUNT : return "21S01";
+#ifdef ER_WRONG_VALUE_COUNT
+ case ER_WRONG_VALUE_COUNT : return "21S01";
#endif
-#ifdef ER_TOO_LONG_IDENT
- case ER_TOO_LONG_IDENT : return "42000";
+#ifdef ER_TOO_LONG_IDENT
+ case ER_TOO_LONG_IDENT : return "42000";
#endif
-#ifdef ER_DUP_FIELDNAME
- case ER_DUP_FIELDNAME : return "42S21";
+#ifdef ER_DUP_FIELDNAME
+ case ER_DUP_FIELDNAME : return "42S21";
#endif
-#ifdef ER_DUP_KEYNAME
- case ER_DUP_KEYNAME : return "42000";
+#ifdef ER_DUP_KEYNAME
+ case ER_DUP_KEYNAME : return "42000";
#endif
-#ifdef ER_DUP_ENTRY
- case ER_DUP_ENTRY : return "23000";
+#ifdef ER_DUP_ENTRY
+ case ER_DUP_ENTRY : return "23000";
#endif
-#ifdef ER_WRONG_FIELD_SPEC
- case ER_WRONG_FIELD_SPEC : return "42000";
+#ifdef ER_WRONG_FIELD_SPEC
+ case ER_WRONG_FIELD_SPEC : return "42000";
#endif
-#ifdef ER_PARSE_ERROR
- case ER_PARSE_ERROR : return "42000";
+#ifdef ER_PARSE_ERROR
+ case ER_PARSE_ERROR : return "42000";
#endif
-#ifdef ER_NONUNIQ_TABLE
- case ER_NONUNIQ_TABLE : return "42000";
+#ifdef ER_EMPTY_QUERY
+ case ER_EMPTY_QUERY : return "42000";
#endif
-#ifdef ER_INVALID_DEFAULT
- case ER_INVALID_DEFAULT : return "42000";
+#ifdef ER_NONUNIQ_TABLE
+ case ER_NONUNIQ_TABLE : return "42000";
#endif
-#ifdef ER_MULTIPLE_PRI_KEY
- case ER_MULTIPLE_PRI_KEY : return "42000";
+#ifdef ER_INVALID_DEFAULT
+ case ER_INVALID_DEFAULT : return "42000";
#endif
-#ifdef ER_TOO_MANY_KEYS
- case ER_TOO_MANY_KEYS : return "42000";
+#ifdef ER_MULTIPLE_PRI_KEY
+ case ER_MULTIPLE_PRI_KEY : return "42000";
#endif
-#ifdef ER_TOO_MANY_KEY_PARTS
- case ER_TOO_MANY_KEY_PARTS : return "42000";
+#ifdef ER_TOO_MANY_KEYS
+ case ER_TOO_MANY_KEYS : return "42000";
#endif
-#ifdef ER_TOO_LONG_KEY
- case ER_TOO_LONG_KEY : return "42000";
+#ifdef ER_TOO_MANY_KEY_PARTS
+ case ER_TOO_MANY_KEY_PARTS : return "42000";
#endif
-#ifdef ER_KEY_COLUMN_DOES_NOT_EXITS
- case ER_KEY_COLUMN_DOES_NOT_EXITS : return "42000";
+#ifdef ER_TOO_LONG_KEY
+ case ER_TOO_LONG_KEY : return "42000";
#endif
-#ifdef ER_BLOB_USED_AS_KEY
- case ER_BLOB_USED_AS_KEY : return "42000";
+#ifdef ER_KEY_COLUMN_DOES_NOT_EXITS
+ case ER_KEY_COLUMN_DOES_NOT_EXITS : return "42000";
#endif
-#ifdef ER_TOO_BIG_FIELDLENGTH
- case ER_TOO_BIG_FIELDLENGTH : return "42000";
+#ifdef ER_BLOB_USED_AS_KEY
+ case ER_BLOB_USED_AS_KEY : return "42000";
#endif
-#ifdef ER_WRONG_AUTO_KEY
- case ER_WRONG_AUTO_KEY : return "42000";
+#ifdef ER_TOO_BIG_FIELDLENGTH
+ case ER_TOO_BIG_FIELDLENGTH : return "42000";
#endif
-#ifdef ER_FORCING_CLOSE
- case ER_FORCING_CLOSE : return "08S01";
+#ifdef ER_WRONG_AUTO_KEY
+ case ER_WRONG_AUTO_KEY : return "42000";
#endif
-#ifdef ER_IPSOCK_ERROR
- case ER_IPSOCK_ERROR : return "08S01";
+#ifdef ER_FORCING_CLOSE
+ case ER_FORCING_CLOSE : return "08S01";
#endif
-#ifdef ER_NO_SUCH_INDEX
- case ER_NO_SUCH_INDEX : return "42S12";
+#ifdef ER_IPSOCK_ERROR
+ case ER_IPSOCK_ERROR : return "08S01";
#endif
-#ifdef ER_WRONG_FIELD_TERMINATORS
- case ER_WRONG_FIELD_TERMINATORS : return "42000";
+#ifdef ER_NO_SUCH_INDEX
+ case ER_NO_SUCH_INDEX : return "42S12";
#endif
-#ifdef ER_BLOBS_AND_NO_TERMINATED
- case ER_BLOBS_AND_NO_TERMINATED : return "42000";
+#ifdef ER_WRONG_FIELD_TERMINATORS
+ case ER_WRONG_FIELD_TERMINATORS : return "42000";
#endif
-#ifdef ER_CANT_REMOVE_ALL_FIELDS
- case ER_CANT_REMOVE_ALL_FIELDS : return "42000";
+#ifdef ER_BLOBS_AND_NO_TERMINATED
+ case ER_BLOBS_AND_NO_TERMINATED : return "42000";
#endif
-#ifdef ER_CANT_DROP_FIELD_OR_KEY
- case ER_CANT_DROP_FIELD_OR_KEY : return "42000";
+#ifdef ER_CANT_REMOVE_ALL_FIELDS
+ case ER_CANT_REMOVE_ALL_FIELDS : return "42000";
#endif
-#ifdef ER_BLOB_CANT_HAVE_DEFAULT
- case ER_BLOB_CANT_HAVE_DEFAULT : return "42000";
+#ifdef ER_CANT_DROP_FIELD_OR_KEY
+ case ER_CANT_DROP_FIELD_OR_KEY : return "42000";
#endif
-#ifdef ER_WRONG_DB_NAME
- case ER_WRONG_DB_NAME : return "42000";
+#ifdef ER_BLOB_CANT_HAVE_DEFAULT
+ case ER_BLOB_CANT_HAVE_DEFAULT : return "42000";
#endif
-#ifdef ER_WRONG_TABLE_NAME
- case ER_WRONG_TABLE_NAME : return "42000";
+#ifdef ER_WRONG_DB_NAME
+ case ER_WRONG_DB_NAME : return "42000";
#endif
-#ifdef ER_TOO_BIG_SELECT
- case ER_TOO_BIG_SELECT : return "42000";
+#ifdef ER_WRONG_TABLE_NAME
+ case ER_WRONG_TABLE_NAME : return "42000";
#endif
-#ifdef ER_UNKNOWN_PROCEDURE
- case ER_UNKNOWN_PROCEDURE : return "42000";
+#ifdef ER_TOO_BIG_SELECT
+ case ER_TOO_BIG_SELECT : return "42000";
#endif
-#ifdef ER_WRONG_PARAMCOUNT_TO_PROCEDURE
- case ER_WRONG_PARAMCOUNT_TO_PROCEDURE : return "42000";
+#ifdef ER_UNKNOWN_PROCEDURE
+ case ER_UNKNOWN_PROCEDURE : return "42000";
#endif
-#ifdef ER_UNKNOWN_TABLE
- case ER_UNKNOWN_TABLE : return "42S02";
+#ifdef ER_WRONG_PARAMCOUNT_TO_PROCEDURE
+ case ER_WRONG_PARAMCOUNT_TO_PROCEDURE : return "42000";
#endif
-#ifdef ER_FIELD_SPECIFIED_TWICE
- case ER_FIELD_SPECIFIED_TWICE : return "42000";
+#ifdef ER_UNKNOWN_TABLE
+ case ER_UNKNOWN_TABLE : return "42S02";
#endif
-#ifdef ER_UNSUPPORTED_EXTENSION
- case ER_UNSUPPORTED_EXTENSION : return "42000";
+#ifdef ER_FIELD_SPECIFIED_TWICE
+ case ER_FIELD_SPECIFIED_TWICE : return "42000";
#endif
-#ifdef ER_TABLE_MUST_HAVE_COLUMNS
- case ER_TABLE_MUST_HAVE_COLUMNS : return "42000";
+#ifdef ER_UNSUPPORTED_EXTENSION
+ case ER_UNSUPPORTED_EXTENSION : return "42000";
#endif
-#ifdef ER_UNKNOWN_CHARACTER_SET
- case ER_UNKNOWN_CHARACTER_SET : return "42000";
+#ifdef ER_TABLE_MUST_HAVE_COLUMNS
+ case ER_TABLE_MUST_HAVE_COLUMNS : return "42000";
#endif
-#ifdef ER_TOO_BIG_ROWSIZE
- case ER_TOO_BIG_ROWSIZE : return "42000";
+#ifdef ER_UNKNOWN_CHARACTER_SET
+ case ER_UNKNOWN_CHARACTER_SET : return "42000";
#endif
-#ifdef ER_WRONG_OUTER_JOIN
- case ER_WRONG_OUTER_JOIN : return "42000";
+#ifdef ER_TOO_BIG_ROWSIZE
+ case ER_TOO_BIG_ROWSIZE : return "42000";
#endif
-#ifdef ER_NULL_COLUMN_IN_INDEX
- case ER_NULL_COLUMN_IN_INDEX : return "42000";
+#ifdef ER_WRONG_OUTER_JOIN
+ case ER_WRONG_OUTER_JOIN : return "42000";
#endif
-#ifdef ER_PASSWORD_ANONYMOUS_USER
- case ER_PASSWORD_ANONYMOUS_USER : return "42000";
+#ifdef ER_NULL_COLUMN_IN_INDEX
+ case ER_NULL_COLUMN_IN_INDEX : return "42000";
#endif
-#ifdef ER_PASSWORD_NOT_ALLOWED
- case ER_PASSWORD_NOT_ALLOWED : return "42000";
+#ifdef ER_PASSWORD_ANONYMOUS_USER
+ case ER_PASSWORD_ANONYMOUS_USER : return "42000";
#endif
-#ifdef ER_PASSWORD_NO_MATCH
- case ER_PASSWORD_NO_MATCH : return "42000";
+#ifdef ER_PASSWORD_NOT_ALLOWED
+ case ER_PASSWORD_NOT_ALLOWED : return "42000";
#endif
-#ifdef ER_WRONG_VALUE_COUNT_ON_ROW
- case ER_WRONG_VALUE_COUNT_ON_ROW : return "21S01";
+#ifdef ER_PASSWORD_NO_MATCH
+ case ER_PASSWORD_NO_MATCH : return "42000";
#endif
-#ifdef ER_INVALID_USE_OF_NULL
- case ER_INVALID_USE_OF_NULL : return "42000";
+#ifdef ER_WRONG_VALUE_COUNT_ON_ROW
+ case ER_WRONG_VALUE_COUNT_ON_ROW : return "21S01";
#endif
-#ifdef ER_REGEXP_ERROR
- case ER_REGEXP_ERROR : return "42000";
+#ifdef ER_INVALID_USE_OF_NULL
+ case ER_INVALID_USE_OF_NULL : return "22004";
#endif
-#ifdef ER_NONEXISTING_GRANT
- case ER_NONEXISTING_GRANT : return "42000";
+#ifdef ER_REGEXP_ERROR
+ case ER_REGEXP_ERROR : return "42000";
#endif
-#ifdef ER_TABLEACCESS_DENIED_ERROR
- case ER_TABLEACCESS_DENIED_ERROR : return "42000";
+#ifdef ER_MIX_OF_GROUP_FUNC_AND_FIELDS
+ case ER_MIX_OF_GROUP_FUNC_AND_FIELDS : return "42000";
#endif
-#ifdef ER_COLUMNACCESS_DENIED_ERROR
- case ER_COLUMNACCESS_DENIED_ERROR : return "42000";
+#ifdef ER_NONEXISTING_GRANT
+ case ER_NONEXISTING_GRANT : return "42000";
#endif
-#ifdef ER_ILLEGAL_GRANT_FOR_TABLE
- case ER_ILLEGAL_GRANT_FOR_TABLE : return "42000";
+#ifdef ER_TABLEACCESS_DENIED_ERROR
+ case ER_TABLEACCESS_DENIED_ERROR : return "42000";
#endif
-#ifdef ER_GRANT_WRONG_HOST_OR_USER
- case ER_GRANT_WRONG_HOST_OR_USER : return "42000";
+#ifdef ER_COLUMNACCESS_DENIED_ERROR
+ case ER_COLUMNACCESS_DENIED_ERROR : return "42000";
#endif
-#ifdef ER_NO_SUCH_TABLE
- case ER_NO_SUCH_TABLE : return "42S02";
+#ifdef ER_ILLEGAL_GRANT_FOR_TABLE
+ case ER_ILLEGAL_GRANT_FOR_TABLE : return "42000";
#endif
-#ifdef ER_NONEXISTING_TABLE_GRANT
- case ER_NONEXISTING_TABLE_GRANT : return "42000";
+#ifdef ER_GRANT_WRONG_HOST_OR_USER
+ case ER_GRANT_WRONG_HOST_OR_USER : return "42000";
#endif
-#ifdef ER_NOT_ALLOWED_COMMAND
- case ER_NOT_ALLOWED_COMMAND : return "42000";
+#ifdef ER_NO_SUCH_TABLE
+ case ER_NO_SUCH_TABLE : return "42S02";
#endif
-#ifdef ER_SYNTAX_ERROR
- case ER_SYNTAX_ERROR : return "42000";
+#ifdef ER_NONEXISTING_TABLE_GRANT
+ case ER_NONEXISTING_TABLE_GRANT : return "42000";
#endif
-#ifdef ER_ABORTING_CONNECTION
- case ER_ABORTING_CONNECTION : return "08S01";
+#ifdef ER_NOT_ALLOWED_COMMAND
+ case ER_NOT_ALLOWED_COMMAND : return "42000";
#endif
-#ifdef ER_NET_PACKET_TOO_LARGE
- case ER_NET_PACKET_TOO_LARGE : return "08S01";
+#ifdef ER_SYNTAX_ERROR
+ case ER_SYNTAX_ERROR : return "42000";
#endif
-#ifdef ER_NET_READ_ERROR_FROM_PIPE
- case ER_NET_READ_ERROR_FROM_PIPE : return "08S01";
+#ifdef ER_ABORTING_CONNECTION
+ case ER_ABORTING_CONNECTION : return "08S01";
#endif
-#ifdef ER_NET_FCNTL_ERROR
- case ER_NET_FCNTL_ERROR : return "08S01";
+#ifdef ER_NET_PACKET_TOO_LARGE
+ case ER_NET_PACKET_TOO_LARGE : return "08S01";
#endif
-#ifdef ER_NET_PACKETS_OUT_OF_ORDER
- case ER_NET_PACKETS_OUT_OF_ORDER : return "08S01";
+#ifdef ER_NET_READ_ERROR_FROM_PIPE
+ case ER_NET_READ_ERROR_FROM_PIPE : return "08S01";
#endif
-#ifdef ER_NET_UNCOMPRESS_ERROR
- case ER_NET_UNCOMPRESS_ERROR : return "08S01";
+#ifdef ER_NET_FCNTL_ERROR
+ case ER_NET_FCNTL_ERROR : return "08S01";
#endif
-#ifdef ER_NET_READ_ERROR
- case ER_NET_READ_ERROR : return "08S01";
+#ifdef ER_NET_PACKETS_OUT_OF_ORDER
+ case ER_NET_PACKETS_OUT_OF_ORDER : return "08S01";
#endif
-#ifdef ER_NET_READ_INTERRUPTED
- case ER_NET_READ_INTERRUPTED : return "08S01";
+#ifdef ER_NET_UNCOMPRESS_ERROR
+ case ER_NET_UNCOMPRESS_ERROR : return "08S01";
#endif
-#ifdef ER_NET_ERROR_ON_WRITE
- case ER_NET_ERROR_ON_WRITE : return "08S01";
+#ifdef ER_NET_READ_ERROR
+ case ER_NET_READ_ERROR : return "08S01";
#endif
-#ifdef ER_NET_WRITE_INTERRUPTED
- case ER_NET_WRITE_INTERRUPTED : return "08S01";
+#ifdef ER_NET_READ_INTERRUPTED
+ case ER_NET_READ_INTERRUPTED : return "08S01";
#endif
-#ifdef ER_TOO_LONG_STRING
- case ER_TOO_LONG_STRING : return "42000";
+#ifdef ER_NET_ERROR_ON_WRITE
+ case ER_NET_ERROR_ON_WRITE : return "08S01";
#endif
-#ifdef ER_TABLE_CANT_HANDLE_BLOB
- case ER_TABLE_CANT_HANDLE_BLOB : return "42000";
+#ifdef ER_NET_WRITE_INTERRUPTED
+ case ER_NET_WRITE_INTERRUPTED : return "08S01";
#endif
-#ifdef ER_TABLE_CANT_HANDLE_AUTO_INCREMENT
- case ER_TABLE_CANT_HANDLE_AUTO_INCREMENT : return "42000";
+#ifdef ER_TOO_LONG_STRING
+ case ER_TOO_LONG_STRING : return "42000";
#endif
-#ifdef ER_WRONG_COLUMN_NAME
- case ER_WRONG_COLUMN_NAME : return "42000";
+#ifdef ER_TABLE_CANT_HANDLE_BLOB
+ case ER_TABLE_CANT_HANDLE_BLOB : return "42000";
#endif
-#ifdef ER_WRONG_KEY_COLUMN
- case ER_WRONG_KEY_COLUMN : return "42000";
+#ifdef ER_TABLE_CANT_HANDLE_AUTO_INCREMENT
+ case ER_TABLE_CANT_HANDLE_AUTO_INCREMENT : return "42000";
#endif
-#ifdef ER_DUP_UNIQUE
- case ER_DUP_UNIQUE : return "23000";
+#ifdef ER_WRONG_COLUMN_NAME
+ case ER_WRONG_COLUMN_NAME : return "42000";
#endif
-#ifdef ER_BLOB_KEY_WITHOUT_LENGTH
- case ER_BLOB_KEY_WITHOUT_LENGTH : return "42000";
+#ifdef ER_WRONG_KEY_COLUMN
+ case ER_WRONG_KEY_COLUMN : return "42000";
#endif
-#ifdef ER_PRIMARY_CANT_HAVE_NULL
- case ER_PRIMARY_CANT_HAVE_NULL : return "42000";
+#ifdef ER_DUP_UNIQUE
+ case ER_DUP_UNIQUE : return "23000";
#endif
-#ifdef ER_TOO_MANY_ROWS
- case ER_TOO_MANY_ROWS : return "42000";
+#ifdef ER_BLOB_KEY_WITHOUT_LENGTH
+ case ER_BLOB_KEY_WITHOUT_LENGTH : return "42000";
#endif
-#ifdef ER_REQUIRES_PRIMARY_KEY
- case ER_REQUIRES_PRIMARY_KEY : return "42000";
+#ifdef ER_PRIMARY_CANT_HAVE_NULL
+ case ER_PRIMARY_CANT_HAVE_NULL : return "42000";
#endif
-#ifdef ER_CHECK_NO_SUCH_TABLE
- case ER_CHECK_NO_SUCH_TABLE : return "42000";
+#ifdef ER_TOO_MANY_ROWS
+ case ER_TOO_MANY_ROWS : return "42000";
#endif
-#ifdef ER_CHECK_NOT_IMPLEMENTED
- case ER_CHECK_NOT_IMPLEMENTED : return "42000";
+#ifdef ER_REQUIRES_PRIMARY_KEY
+ case ER_REQUIRES_PRIMARY_KEY : return "42000";
#endif
-#ifdef ER_CANT_DO_THIS_DURING_AN_TRANSACTION
- case ER_CANT_DO_THIS_DURING_AN_TRANSACTION: return "25000";
+#ifdef ER_KEY_DOES_NOT_EXITS
+ case ER_KEY_DOES_NOT_EXITS : return "42000";
#endif
-#ifdef ER_NEW_ABORTING_CONNECTION
- case ER_NEW_ABORTING_CONNECTION : return "08S01";
+#ifdef ER_CHECK_NO_SUCH_TABLE
+ case ER_CHECK_NO_SUCH_TABLE : return "42000";
#endif
-#ifdef ER_MASTER_NET_READ
- case ER_MASTER_NET_READ : return "08S01";
+#ifdef ER_CHECK_NOT_IMPLEMENTED
+ case ER_CHECK_NOT_IMPLEMENTED : return "42000";
#endif
-#ifdef ER_MASTER_NET_WRITE
- case ER_MASTER_NET_WRITE : return "08S01";
+#ifdef ER_CANT_DO_THIS_DURING_AN_TRANSACTION
+ case ER_CANT_DO_THIS_DURING_AN_TRANSACTION : return "25000";
#endif
-#ifdef ER_TOO_MANY_USER_CONNECTIONS
- case ER_TOO_MANY_USER_CONNECTIONS : return "42000";
+#ifdef ER_NEW_ABORTING_CONNECTION
+ case ER_NEW_ABORTING_CONNECTION : return "08S01";
#endif
-#ifdef ER_READ_ONLY_TRANSACTION
- case ER_READ_ONLY_TRANSACTION : return "25000";
+#ifdef ER_MASTER_NET_READ
+ case ER_MASTER_NET_READ : return "08S01";
#endif
-#ifdef ER_LOCK_DEADLOCK
- case ER_LOCK_DEADLOCK : return "40001";
+#ifdef ER_MASTER_NET_WRITE
+ case ER_MASTER_NET_WRITE : return "08S01";
#endif
-#ifdef ER_NO_REFERENCED_ROW
- case ER_NO_REFERENCED_ROW : return "23000";
+#ifdef ER_TOO_MANY_USER_CONNECTIONS
+ case ER_TOO_MANY_USER_CONNECTIONS : return "42000";
#endif
-#ifdef ER_ROW_IS_REFERENCED
- case ER_ROW_IS_REFERENCED : return "23000";
+#ifdef ER_READ_ONLY_TRANSACTION
+ case ER_READ_ONLY_TRANSACTION : return "25000";
#endif
-#ifdef ER_CONNECT_TO_MASTER
- case ER_CONNECT_TO_MASTER : return "08S01";
+#ifdef ER_NO_PERMISSION_TO_CREATE_USER
+ case ER_NO_PERMISSION_TO_CREATE_USER : return "42000";
#endif
-#ifdef ER_USER_LIMIT_REACHED
- case ER_USER_LIMIT_REACHED : return "42000";
+#ifdef ER_LOCK_DEADLOCK
+ case ER_LOCK_DEADLOCK : return "40001";
#endif
-#ifdef ER_NO_DEFAULT
- case ER_NO_DEFAULT : return "42000";
+#ifdef ER_NO_REFERENCED_ROW
+ case ER_NO_REFERENCED_ROW : return "23000";
#endif
-#ifdef ER_WRONG_VALUE_FOR_VAR
- case ER_WRONG_VALUE_FOR_VAR : return "42000";
+#ifdef ER_ROW_IS_REFERENCED
+ case ER_ROW_IS_REFERENCED : return "23000";
#endif
-#ifdef ER_WRONG_TYPE_FOR_VAR
- case ER_WRONG_TYPE_FOR_VAR : return "42000";
+#ifdef ER_CONNECT_TO_MASTER
+ case ER_CONNECT_TO_MASTER : return "08S01";
#endif
-#ifdef ER_CANT_USE_OPTION_HERE
- case ER_CANT_USE_OPTION_HERE : return "42000";
+#ifdef ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
+ case ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT : return "21000";
#endif
-#ifdef ER_NOT_SUPPORTED_YET
- case ER_NOT_SUPPORTED_YET : return "42000";
+#ifdef ER_USER_LIMIT_REACHED
+ case ER_USER_LIMIT_REACHED : return "42000";
#endif
-#ifdef ER_WRONG_FK_DEF
- case ER_WRONG_FK_DEF : return "42000";
+#ifdef ER_SPECIFIC_ACCESS_DENIED_ERROR
+ case ER_SPECIFIC_ACCESS_DENIED_ERROR : return "42000";
#endif
-#ifdef ER_OPERAND_COLUMNS
- case ER_OPERAND_COLUMNS : return "21000";
+#ifdef ER_NO_DEFAULT
+ case ER_NO_DEFAULT : return "42000";
#endif
-#ifdef ER_SUBQUERY_NO_1_ROW
- case ER_SUBQUERY_NO_1_ROW : return "21000";
+#ifdef ER_WRONG_VALUE_FOR_VAR
+ case ER_WRONG_VALUE_FOR_VAR : return "42000";
#endif
-#ifdef ER_ILLEGAL_REFERENCE
- case ER_ILLEGAL_REFERENCE : return "42S22";
+#ifdef ER_WRONG_TYPE_FOR_VAR
+ case ER_WRONG_TYPE_FOR_VAR : return "42000";
#endif
-#ifdef ER_DERIVED_MUST_HAVE_ALIAS
- case ER_DERIVED_MUST_HAVE_ALIAS : return "42000";
+#ifdef ER_CANT_USE_OPTION_HERE
+ case ER_CANT_USE_OPTION_HERE : return "42000";
#endif
-#ifdef ER_SELECT_REDUCED
- case ER_SELECT_REDUCED : return "01000";
+#ifdef ER_NOT_SUPPORTED_YET
+ case ER_NOT_SUPPORTED_YET : return "42000";
#endif
-#ifdef ER_TABLENAME_NOT_ALLOWED_HERE
- case ER_TABLENAME_NOT_ALLOWED_HERE : return "42000";
+#ifdef ER_WRONG_FK_DEF
+ case ER_WRONG_FK_DEF : return "42000";
#endif
-#ifdef ER_NOT_SUPPORTED_AUTH_MODE
- case ER_NOT_SUPPORTED_AUTH_MODE : return "08004";
+#ifdef ER_OPERAND_COLUMNS
+ case ER_OPERAND_COLUMNS : return "21000";
#endif
-#ifdef ER_SPATIAL_CANT_HAVE_NULL
- case ER_SPATIAL_CANT_HAVE_NULL : return "42000";
+#ifdef ER_SUBQUERY_NO_1_ROW
+ case ER_SUBQUERY_NO_1_ROW : return "21000";
#endif
-#ifdef ER_COLLATION_CHARSET_MISMATCH
- case ER_COLLATION_CHARSET_MISMATCH : return "42000";
+#ifdef ER_ILLEGAL_REFERENCE
+ case ER_ILLEGAL_REFERENCE : return "42S22";
#endif
-#ifdef ER_WARN_TOO_FEW_RECORDS
- case ER_WARN_TOO_FEW_RECORDS : return "01000";
+#ifdef ER_DERIVED_MUST_HAVE_ALIAS
+ case ER_DERIVED_MUST_HAVE_ALIAS : return "42000";
#endif
-#ifdef ER_WARN_TOO_MANY_RECORDS
- case ER_WARN_TOO_MANY_RECORDS : return "01000";
+#ifdef ER_SELECT_REDUCED
+ case ER_SELECT_REDUCED : return "01000";
#endif
-#ifdef ER_WARN_NULL_TO_NOTNULL
- case ER_WARN_NULL_TO_NOTNULL : return "01000";
+#ifdef ER_TABLENAME_NOT_ALLOWED_HERE
+ case ER_TABLENAME_NOT_ALLOWED_HERE : return "42000";
#endif
-#ifdef ER_WARN_DATA_OUT_OF_RANGE
- case ER_WARN_DATA_OUT_OF_RANGE : return "01000";
+#ifdef ER_NOT_SUPPORTED_AUTH_MODE
+ case ER_NOT_SUPPORTED_AUTH_MODE : return "08004";
#endif
-#ifdef ER_WARN_DATA_TRUNCATED
- case ER_WARN_DATA_TRUNCATED : return "01000";
+#ifdef ER_SPATIAL_CANT_HAVE_NULL
+ case ER_SPATIAL_CANT_HAVE_NULL : return "42000";
#endif
-#ifdef ER_WRONG_NAME_FOR_INDEX
- case ER_WRONG_NAME_FOR_INDEX : return "42000";
+#ifdef ER_COLLATION_CHARSET_MISMATCH
+ case ER_COLLATION_CHARSET_MISMATCH : return "42000";
#endif
-#ifdef ER_WRONG_NAME_FOR_CATALOG
- case ER_WRONG_NAME_FOR_CATALOG : return "42000";
+#ifdef ER_WARN_TOO_FEW_RECORDS
+ case ER_WARN_TOO_FEW_RECORDS : return "01000";
#endif
-#ifdef ER_UNKNOWN_STORAGE_ENGINE
- case ER_UNKNOWN_STORAGE_ENGINE : return "42000";
+#ifdef ER_WARN_TOO_MANY_RECORDS
+ case ER_WARN_TOO_MANY_RECORDS : return "01000";
+#endif
+#ifdef ER_WARN_NULL_TO_NOTNULL
+ case ER_WARN_NULL_TO_NOTNULL : return "22004";
+#endif
+#ifdef ER_WARN_DATA_OUT_OF_RANGE
+ case ER_WARN_DATA_OUT_OF_RANGE : return "22003";
+#endif
+#ifdef ER_WRONG_NAME_FOR_INDEX
+ case ER_WRONG_NAME_FOR_INDEX : return "42000";
+#endif
+#ifdef ER_WRONG_NAME_FOR_CATALOG
+ case ER_WRONG_NAME_FOR_CATALOG : return "42000";
+#endif
+#ifdef ER_UNKNOWN_STORAGE_ENGINE
+ case ER_UNKNOWN_STORAGE_ENGINE : return "42000";
+#endif
+#ifdef ER_TRUNCATED_WRONG_VALUE
+ case ER_TRUNCATED_WRONG_VALUE : return "22007";
+#endif
+#ifdef ER_SP_NO_RECURSIVE_CREATE
+ case ER_SP_NO_RECURSIVE_CREATE : return "2F003";
+#endif
+#ifdef ER_SP_ALREADY_EXISTS
+ case ER_SP_ALREADY_EXISTS : return "42000";
+#endif
+#ifdef ER_SP_DOES_NOT_EXIST
+ case ER_SP_DOES_NOT_EXIST : return "42000";
+#endif
+#ifdef ER_SP_LILABEL_MISMATCH
+ case ER_SP_LILABEL_MISMATCH : return "42000";
+#endif
+#ifdef ER_SP_LABEL_REDEFINE
+ case ER_SP_LABEL_REDEFINE : return "42000";
+#endif
+#ifdef ER_SP_LABEL_MISMATCH
+ case ER_SP_LABEL_MISMATCH : return "42000";
+#endif
+#ifdef ER_SP_UNINIT_VAR
+ case ER_SP_UNINIT_VAR : return "01000";
+#endif
+#ifdef ER_SP_BADSELECT
+ case ER_SP_BADSELECT : return "0A000";
+#endif
+#ifdef ER_SP_BADRETURN
+ case ER_SP_BADRETURN : return "42000";
+#endif
+#ifdef ER_SP_BADSTATEMENT
+ case ER_SP_BADSTATEMENT : return "0A000";
+#endif
+#ifdef ER_UPDATE_LOG_DEPRECATED_IGNORED
+ case ER_UPDATE_LOG_DEPRECATED_IGNORED : return "42000";
+#endif
+#ifdef ER_UPDATE_LOG_DEPRECATED_TRANSLATED
+ case ER_UPDATE_LOG_DEPRECATED_TRANSLATED : return "42000";
+#endif
+#ifdef ER_QUERY_INTERRUPTED
+ case ER_QUERY_INTERRUPTED : return "70100";
+#endif
+#ifdef ER_SP_WRONG_NO_OF_ARGS
+ case ER_SP_WRONG_NO_OF_ARGS : return "42000";
+#endif
+#ifdef ER_SP_COND_MISMATCH
+ case ER_SP_COND_MISMATCH : return "42000";
+#endif
+#ifdef ER_SP_NORETURN
+ case ER_SP_NORETURN : return "42000";
+#endif
+#ifdef ER_SP_NORETURNEND
+ case ER_SP_NORETURNEND : return "2F005";
+#endif
+#ifdef ER_SP_BAD_CURSOR_QUERY
+ case ER_SP_BAD_CURSOR_QUERY : return "42000";
+#endif
+#ifdef ER_SP_BAD_CURSOR_SELECT
+ case ER_SP_BAD_CURSOR_SELECT : return "42000";
+#endif
+#ifdef ER_SP_CURSOR_MISMATCH
+ case ER_SP_CURSOR_MISMATCH : return "42000";
+#endif
+#ifdef ER_SP_CURSOR_ALREADY_OPEN
+ case ER_SP_CURSOR_ALREADY_OPEN : return "24000";
+#endif
+#ifdef ER_SP_CURSOR_NOT_OPEN
+ case ER_SP_CURSOR_NOT_OPEN : return "24000";
+#endif
+#ifdef ER_SP_UNDECLARED_VAR
+ case ER_SP_UNDECLARED_VAR : return "42000";
+#endif
+#ifdef ER_SP_FETCH_NO_DATA
+ case ER_SP_FETCH_NO_DATA : return "02000";
+#endif
+#ifdef ER_SP_DUP_PARAM
+ case ER_SP_DUP_PARAM : return "42000";
+#endif
+#ifdef ER_SP_DUP_VAR
+ case ER_SP_DUP_VAR : return "42000";
+#endif
+#ifdef ER_SP_DUP_COND
+ case ER_SP_DUP_COND : return "42000";
+#endif
+#ifdef ER_SP_DUP_CURS
+ case ER_SP_DUP_CURS : return "42000";
+#endif
+#ifdef ER_SP_SUBSELECT_NYI
+ case ER_SP_SUBSELECT_NYI : return "0A000";
+#endif
+#ifdef ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
+ case ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG : return "0A000";
+#endif
+#ifdef ER_SP_VARCOND_AFTER_CURSHNDLR
+ case ER_SP_VARCOND_AFTER_CURSHNDLR : return "42000";
+#endif
+#ifdef ER_SP_CURSOR_AFTER_HANDLER
+ case ER_SP_CURSOR_AFTER_HANDLER : return "42000";
+#endif
+#ifdef ER_SP_CASE_NOT_FOUND
+ case ER_SP_CASE_NOT_FOUND : return "20000";
+#endif
+#ifdef ER_DIVISION_BY_ZERO
+ case ER_DIVISION_BY_ZERO : return "22012";
+#endif
+#ifdef ER_ILLEGAL_VALUE_FOR_TYPE
+ case ER_ILLEGAL_VALUE_FOR_TYPE : return "22007";
+#endif
+#ifdef ER_PROCACCESS_DENIED_ERROR
+ case ER_PROCACCESS_DENIED_ERROR : return "42000";
+#endif
+#ifdef ER_XAER_NOTA
+ case ER_XAER_NOTA : return "XAE04";
+#endif
+#ifdef ER_XAER_INVAL
+ case ER_XAER_INVAL : return "XAE05";
+#endif
+#ifdef ER_XAER_RMFAIL
+ case ER_XAER_RMFAIL : return "XAE07";
+#endif
+#ifdef ER_XAER_OUTSIDE
+ case ER_XAER_OUTSIDE : return "XAE09";
+#endif
+#ifdef ER_XAER_RMERR
+ case ER_XAER_RMERR : return "XAE03";
+#endif
+#ifdef ER_XA_RBROLLBACK
+ case ER_XA_RBROLLBACK : return "XA100";
+#endif
+#ifdef ER_NONEXISTING_PROC_GRANT
+ case ER_NONEXISTING_PROC_GRANT : return "42000";
+#endif
+#ifdef ER_DATA_TOO_LONG
+ case ER_DATA_TOO_LONG : return "22001";
+#endif
+#ifdef ER_SP_BAD_SQLSTATE
+ case ER_SP_BAD_SQLSTATE : return "42000";
+#endif
+#ifdef ER_CANT_CREATE_USER_WITH_GRANT
+ case ER_CANT_CREATE_USER_WITH_GRANT : return "42000";
+#endif
+#ifdef ER_SP_DUP_HANDLER
+ case ER_SP_DUP_HANDLER : return "42000";
+#endif
+#ifdef ER_SP_NOT_VAR_ARG
+ case ER_SP_NOT_VAR_ARG : return "42000";
+#endif
+#ifdef ER_SP_NO_RETSET
+ case ER_SP_NO_RETSET : return "0A000";
+#endif
+#ifdef ER_CANT_CREATE_GEOMETRY_OBJECT
+ case ER_CANT_CREATE_GEOMETRY_OBJECT : return "22003";
+#endif
+#ifdef ER_TOO_BIG_SCALE
+ case ER_TOO_BIG_SCALE : return "42000";
+#endif
+#ifdef ER_TOO_BIG_PRECISION
+ case ER_TOO_BIG_PRECISION : return "42000";
+#endif
+#ifdef ER_M_BIGGER_THAN_D
+ case ER_M_BIGGER_THAN_D : return "42000";
+#endif
+#ifdef ER_TOO_LONG_BODY
+ case ER_TOO_LONG_BODY : return "42000";
+#endif
+#ifdef ER_TOO_BIG_DISPLAYWIDTH
+ case ER_TOO_BIG_DISPLAYWIDTH : return "42000";
+#endif
+#ifdef ER_XAER_DUPID
+ case ER_XAER_DUPID : return "XAE08";
+#endif
+#ifdef ER_DATETIME_FUNCTION_OVERFLOW
+ case ER_DATETIME_FUNCTION_OVERFLOW : return "22008";
+#endif
+#ifdef ER_ROW_IS_REFERENCED_2
+ case ER_ROW_IS_REFERENCED_2 : return "23000";
+#endif
+#ifdef ER_NO_REFERENCED_ROW_2
+ case ER_NO_REFERENCED_ROW_2 : return "23000";
+#endif
+#ifdef ER_SP_BAD_VAR_SHADOW
+ case ER_SP_BAD_VAR_SHADOW : return "42000";
+#endif
+#ifdef ER_SP_WRONG_NAME
+ case ER_SP_WRONG_NAME : return "42000";
+#endif
+#ifdef ER_SP_NO_AGGREGATE
+ case ER_SP_NO_AGGREGATE : return "42000";
+#endif
+#ifdef ER_MAX_PREPARED_STMT_COUNT_REACHED
+ case ER_MAX_PREPARED_STMT_COUNT_REACHED : return "42000";
+#endif
+#ifdef ER_NON_GROUPING_FIELD_USED
+ case ER_NON_GROUPING_FIELD_USED : return "42000";
+#endif
+#ifdef ER_FOREIGN_DUPLICATE_KEY
+ case ER_FOREIGN_DUPLICATE_KEY : return "23000";
+#endif
+#ifdef ER_CANT_CHANGE_TX_ISOLATION
+ case ER_CANT_CHANGE_TX_ISOLATION : return "25001";
+#endif
+#ifdef ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
+ case ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT : return "42000";
+#endif
+#ifdef ER_WRONG_PARAMETERS_TO_NATIVE_FCT
+ case ER_WRONG_PARAMETERS_TO_NATIVE_FCT : return "42000";
+#endif
+#ifdef ER_WRONG_PARAMETERS_TO_STORED_FCT
+ case ER_WRONG_PARAMETERS_TO_STORED_FCT : return "42000";
+#endif
+#ifdef ER_DUP_ENTRY_WITH_KEY_NAME
+ case ER_DUP_ENTRY_WITH_KEY_NAME : return "23000";
+#endif
+#ifdef ER_XA_RBTIMEOUT
+ case ER_XA_RBTIMEOUT : return "XA106";
+#endif
+#ifdef ER_XA_RBDEADLOCK
+ case ER_XA_RBDEADLOCK : return "XA102";
+#endif
+#ifdef ER_FUNC_INEXISTENT_NAME_COLLISION
+ case ER_FUNC_INEXISTENT_NAME_COLLISION : return "42000";
+#endif
+#ifdef ER_DUP_SIGNAL_SET
+ case ER_DUP_SIGNAL_SET : return "42000";
+#endif
+#ifdef ER_SIGNAL_WARN
+ case ER_SIGNAL_WARN : return "01000";
+#endif
+#ifdef ER_SIGNAL_NOT_FOUND
+ case ER_SIGNAL_NOT_FOUND : return "02000";
+#endif
+#ifdef ER_SIGNAL_EXCEPTION
+ case ER_SIGNAL_EXCEPTION : return "HY000";
+#endif
+#ifdef ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
+ case ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER : return "0K000";
+#endif
+#ifdef ER_SPATIAL_MUST_HAVE_GEOM_COL
+ case ER_SPATIAL_MUST_HAVE_GEOM_COL : return "42000";
+#endif
+#ifdef ER_DATA_OUT_OF_RANGE
+ case ER_DATA_OUT_OF_RANGE : return "22003";
#endif
diff --git a/ext/pdo_mysql/tests/mysql_pdo_test.inc b/ext/pdo_mysql/tests/mysql_pdo_test.inc
index 0af2e6df6..115aeadc5 100644
--- a/ext/pdo_mysql/tests/mysql_pdo_test.inc
+++ b/ext/pdo_mysql/tests/mysql_pdo_test.inc
@@ -141,12 +141,19 @@ class MySQLPDOTest extends PDOTest {
}
- static function detect_transactional_mysql_engine($db) {
+ static function detect_transactional_mysql_engine($db) {
foreach ($db->query("show variables like 'have%'") as $row) {
- if ($row[1] == 'YES' && ($row[0] == 'have_innodb' || $row[0] == 'have_bdb')) {
+ if (!empty($row) && $row[1] == 'YES' && ($row[0] == 'have_innodb' || $row[0] == 'have_bdb')) {
return str_replace("have_", "", $row[0]);
}
}
+ /* MySQL 5.6.1+ */
+ foreach ($db->query("SHOW ENGINES") as $row) {
+ if (isset($row['engine']) && isset($row['support'])) {
+ if ('InnoDB' == $row['engine'] && ('YES' == $row['support'] || 'DEFAULT' == $row['support']))
+ return 'innodb';
+ }
+ }
return false;
}
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
index 46015533d..9092004fe 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct.phpt
@@ -294,7 +294,7 @@ MySQLPDOTest::skip();
[005] invalid data source name, [n/a] n/a
[006] invalid data source name, [n/a] n/a
[007] could not find driver, [n/a] n/a
-[009] SQLSTATE[28000] [1045] Access denied for user 'dont%s'@'%s' (using password: YES), [n/a] n/a
-[010] SQLSTATE[28000] [1045] Access denied for user 'dont%s'@'%s' (using password: YES), [n/a] n/a
+[009] SQLSTATE[%s] [1045] Access denied for user 'dont%s'@'%s' (using password: YES), [n/a] n/a
+[010] SQLSTATE[%s] [1045] Access denied for user 'dont%s'@'%s' (using password: YES), [n/a] n/a
[017] DSN=%s, SQLSTATE[%s] [%d] %s
[033] DSN = mysql:%s, character sets has not been set, @@character_set_connection reports 'latin1', expecting 'latin2'done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
index ea25cdc32..29b3c11f7 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_options.phpt
@@ -3,6 +3,8 @@ MySQL PDO->__construct(), options
--SKIPIF--
<?php
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
?>
--FILE--
<?php
diff --git a/ext/pdo_mysql/tests/pdo_mysql_interface.phpt b/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
index 9e13908a5..24b19ae3f 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_interface.phpt
@@ -4,7 +4,8 @@ MySQL PDO class interface
<?php
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-$db = MySQLPDOTest::getDriver();
+MySQLPDOTest::skip();
+$db = MySQLPDOTest::factory();
if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
die("skip Transactional engine not found");
?>
diff --git a/ext/pdo_oci/oci_driver.c b/ext/pdo_oci/oci_driver.c
index 0544a2934..cb1e89267 100755
--- a/ext/pdo_oci/oci_driver.c
+++ b/ext/pdo_oci/oci_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci_driver.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: oci_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -141,12 +141,27 @@ ub4 _oci_error(OCIError *err, pdo_dbh_t *dbh, pdo_stmt_t *stmt, char *what, swor
case 12154: /* ORA-12154: TNS:could not resolve service name */
strcpy(*pdo_err, "42S02");
break;
-
- case 22: /* ORA-00022: invalid session id */
- case 1012: /* ORA-01012: */
- case 3113: /* ORA-03133: end of file on communication channel */
- case 604:
- case 1041:
+
+ case 22: /* ORA-00022: invalid session id */
+ case 378:
+ case 602:
+ case 603:
+ case 604:
+ case 609:
+ case 1012: /* ORA-01012: */
+ case 1033:
+ case 1041:
+ case 1043:
+ case 1089:
+ case 1090:
+ case 1092:
+ case 3113: /* ORA-03133: end of file on communication channel */
+ case 3114:
+ case 3122:
+ case 3135:
+ case 12153:
+ case 27146:
+ case 28511:
/* consider the connection closed */
dbh->is_closed = 1;
H->attached = 0;
@@ -516,6 +531,43 @@ static int oci_handle_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_valu
}
/* }}} */
+static int pdo_oci_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
+{
+ pdo_oci_db_handle *H = (pdo_oci_db_handle *)dbh->driver_data;
+ sb4 error_code = 0;
+ char version[256];
+
+ /* TODO move attached check to PDO level */
+ if (H->attached == 0) {
+ return FAILURE;
+ }
+ /* TODO add persistent_timeout check at PDO level */
+
+
+ /* Use OCIPing instead of OCIServerVersion. If OCIPing returns ORA-1010 (invalid OCI operation)
+ * such as from Pre-10.1 servers, the error is still from the server and we would have
+ * successfully performed a roundtrip and validated the connection. Use OCIServerVersion for
+ * Pre-10.2 clients
+ */
+#if ((OCI_MAJOR_VERSION > 10) || ((OCI_MAJOR_VERSION == 10) && (OCI_MINOR_VERSION >= 2))) /* OCIPing available 10.2 onwards */
+ H->last_err = OCIPing (H->svc, H->err, OCI_DEFAULT);
+#else
+ /* use good old OCIServerVersion() */
+ H->last_err = OCIServerVersion (H->svc, H->err, (text *)version, sizeof(version), OCI_HTYPE_SVCCTX);
+#endif
+ if (H->last_err == OCI_SUCCESS) {
+ return SUCCESS;
+ }
+
+ OCIErrorGet (H->err, (ub4)1, NULL, &error_code, NULL, 0, OCI_HTYPE_ERROR);
+
+ if (error_code == 1010) {
+ return SUCCESS;
+ }
+ return FAILURE;
+}
+/* }}} */
+
static struct pdo_dbh_methods oci_methods = {
oci_handle_closer,
oci_handle_preparer,
@@ -528,7 +580,7 @@ static struct pdo_dbh_methods oci_methods = {
NULL,
pdo_oci_fetch_error_func,
oci_handle_get_attribute,
- NULL, /* check_liveness */
+ pdo_oci_check_liveness, /* check_liveness */
NULL /* get_driver_methods */
};
@@ -675,6 +727,7 @@ static inline ub4 pdo_oci_sanitize_prefetch(long prefetch) /* {{{ */
}
/* }}} */
+
/*
* Local variables:
* tab-width: 4
diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c
index 5608b0c07..a1e489e5a 100755
--- a/ext/pdo_oci/oci_statement.c
+++ b/ext/pdo_oci/oci_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci_statement.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: oci_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_oci/pdo_oci.c b/ext/pdo_oci/pdo_oci.c
index ebd5591cd..be76ffcd1 100755
--- a/ext/pdo_oci/pdo_oci.c
+++ b/ext/pdo_oci/pdo_oci.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_oci.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_oci.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_oci/php_pdo_oci.h b/ext/pdo_oci/php_pdo_oci.h
index 9e26438df..074dc5753 100755
--- a/ext/pdo_oci/php_pdo_oci.h
+++ b/ext/pdo_oci/php_pdo_oci.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_oci.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_oci.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_OCI_H
#define PHP_PDO_OCI_H
diff --git a/ext/pdo_oci/php_pdo_oci_int.h b/ext/pdo_oci/php_pdo_oci_int.h
index ea47648b0..4c707cf10 100755
--- a/ext/pdo_oci/php_pdo_oci_int.h
+++ b/ext/pdo_oci/php_pdo_oci_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_oci_int.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_oci_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#include <oci.h>
diff --git a/ext/pdo_oci/tests/bug46274.phpt b/ext/pdo_oci/tests/bug46274.phpt
index 23ee8ee20..77f2a0115 100644
--- a/ext/pdo_oci/tests/bug46274.phpt
+++ b/ext/pdo_oci/tests/bug46274.phpt
@@ -56,6 +56,8 @@ var_dump($res->fetch());
$db->exec("DROP TABLE test_one_blob");
?>
+--XFAIL--
+Corrupts memory
--EXPECTF--
array(2) {
["blob1"]=>
diff --git a/ext/pdo_oci/tests/bug46274_2.phpt b/ext/pdo_oci/tests/bug46274_2.phpt
index cbadcef4f..9e9225415 100644
--- a/ext/pdo_oci/tests/bug46274_2.phpt
+++ b/ext/pdo_oci/tests/bug46274_2.phpt
@@ -60,6 +60,8 @@ fclose($row[0]);
$db->exec("DROP TABLE test_one_blob");
?>
+--XFAIL--
+Corrupts memory
--EXPECTF--
array(2) {
["blob1"]=>
diff --git a/ext/pdo_oci/tests/common.phpt b/ext/pdo_oci/tests/common.phpt
index 413b57bbf..5107828ce 100644
--- a/ext/pdo_oci/tests/common.phpt
+++ b/ext/pdo_oci/tests/common.phpt
@@ -18,9 +18,9 @@ if (false !== getenv('PDO_OCI_TEST_DSN')) {
$config['ENV']['PDOTEST_PASS'] = getenv('PDO_OCI_TEST_PASS');
$config['ENV']['PDOTEST_ATTR'] = getenv('PDO_OCI_TEST_ATTR');
} else {
- $config['ENV']['PDOTEST_DSN'] = 'oci:dbname=test';
+ $config['ENV']['PDOTEST_DSN'] = 'oci:dbname=localhost/xe;charset=WE8MSWIN1252';
$config['ENV']['PDOTEST_USER'] = 'SYSTEM';
- $config['ENV']['PDOTEST_PASS'] = 'PASSWORD';
+ $config['ENV']['PDOTEST_PASS'] = 'oracle';
}
return $config;
diff --git a/ext/pdo_oci/tests/pdo_oci_fread_1.phpt b/ext/pdo_oci/tests/pdo_oci_fread_1.phpt
index 9604ef586..26a92f01b 100644
--- a/ext/pdo_oci/tests/pdo_oci_fread_1.phpt
+++ b/ext/pdo_oci/tests/pdo_oci_fread_1.phpt
@@ -4,6 +4,7 @@ PDO_OCI: check fread() EOF
<?php
if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not loaded');
require(dirname(__FILE__).'/../../pdo/tests/pdo_test.inc');
+if (!strpos(strtolower(getenv('PDOTEST_DSN')), 'charset=we8mswin1252')) die('skip expected output valid for WE8MSWIN1252 character set');
PDOTest::skip();
?>
--FILE--
diff --git a/ext/pdo_oci/tests/pdo_oci_stream_1.phpt b/ext/pdo_oci/tests/pdo_oci_stream_1.phpt
index d054f88d4..27a28b9bb 100644
--- a/ext/pdo_oci/tests/pdo_oci_stream_1.phpt
+++ b/ext/pdo_oci/tests/pdo_oci_stream_1.phpt
@@ -4,6 +4,7 @@ PDO_OCI: stream_get_contents length & offset test
<?php
if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not loaded');
require(dirname(__FILE__).'/../../pdo/tests/pdo_test.inc');
+if (!strpos(strtolower(getenv('PDOTEST_DSN')), 'charset=we8mswin1252')) die('skip expected output valid for WE8MSWIN1252 character set');
PDOTest::skip();
?>
--FILE--
diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c
index 8eea0c66a..b9b69310c 100755
--- a/ext/pdo_odbc/odbc_driver.c
+++ b/ext/pdo_odbc/odbc_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: odbc_driver.c 312506 2011-06-27 01:36:39Z felipe $ */
+/* $Id: odbc_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c
index fb7605486..d80c70d0d 100755
--- a/ext/pdo_odbc/odbc_stmt.c
+++ b/ext/pdo_odbc/odbc_stmt.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: odbc_stmt.c 312506 2011-06-27 01:36:39Z felipe $ */
+/* $Id: odbc_stmt.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_odbc/pdo_odbc.c b/ext/pdo_odbc/pdo_odbc.c
index 046bf4c3a..31e4403ae 100755
--- a/ext/pdo_odbc/pdo_odbc.c
+++ b/ext/pdo_odbc/pdo_odbc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_odbc.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_odbc.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_odbc/php_pdo_odbc.h b/ext/pdo_odbc/php_pdo_odbc.h
index dcea1e56e..eef6c43a1 100644
--- a/ext/pdo_odbc/php_pdo_odbc.h
+++ b/ext/pdo_odbc/php_pdo_odbc.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_odbc.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_odbc.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_ODBC_H
#define PHP_PDO_ODBC_H
diff --git a/ext/pdo_odbc/php_pdo_odbc_int.h b/ext/pdo_odbc/php_pdo_odbc_int.h
index 2f9a6cc60..a16d63489 100755
--- a/ext/pdo_odbc/php_pdo_odbc_int.h
+++ b/ext/pdo_odbc/php_pdo_odbc_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_odbc_int.h 312506 2011-06-27 01:36:39Z felipe $ */
+/* $Id: php_pdo_odbc_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef PHP_WIN32
# define PDO_ODBC_TYPE "Win32"
diff --git a/ext/pdo_pgsql/pdo_pgsql.c b/ext/pdo_pgsql/pdo_pgsql.c
index 3ad08ad23..2c53624b7 100644
--- a/ext/pdo_pgsql/pdo_pgsql.c
+++ b/ext/pdo_pgsql/pdo_pgsql.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_pgsql.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_pgsql.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -116,7 +116,7 @@ PHP_MINFO_FUNCTION(pdo_pgsql)
php_info_print_table_row(2, "PostgreSQL(libpq) Version", PG_VERSION);
#endif
php_info_print_table_row(2, "Module version", pdo_pgsql_module_entry.version);
- php_info_print_table_row(2, "Revision", " $Id: pdo_pgsql.c 314376 2011-08-06 14:47:44Z felipe $ ");
+ php_info_print_table_row(2, "Revision", " $Id: pdo_pgsql.c 321634 2012-01-01 13:15:04Z felipe $ ");
php_info_print_table_end();
}
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 44df82b27..78cc926b1 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql_driver.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: pgsql_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index e70387413..7cc9d86f0 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql_statement.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pgsql_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_pgsql/php_pdo_pgsql.h b/ext/pdo_pgsql/php_pdo_pgsql.h
index ccc4fc9c6..b5f3dba5b 100644
--- a/ext/pdo_pgsql/php_pdo_pgsql.h
+++ b/ext/pdo_pgsql/php_pdo_pgsql.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_pgsql.h 311631 2011-05-31 08:59:32Z iliaa $ */
+/* $Id: php_pdo_pgsql.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_PGSQL_H
#define PHP_PDO_PGSQL_H
diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h
index 8c2b9c0e4..1d4424255 100644
--- a/ext/pdo_pgsql/php_pdo_pgsql_int.h
+++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_pgsql_int.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_pgsql_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_PGSQL_INT_H
#define PHP_PDO_PGSQL_INT_H
diff --git a/ext/pdo_sqlite/pdo_sqlite.c b/ext/pdo_sqlite/pdo_sqlite.c
index 9ac167a8b..534727514 100644
--- a/ext/pdo_sqlite/pdo_sqlite.c
+++ b/ext/pdo_sqlite/pdo_sqlite.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sqlite.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: pdo_sqlite.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_sqlite/php_pdo_sqlite.h b/ext/pdo_sqlite/php_pdo_sqlite.h
index 3adeab1b2..8c33801e7 100644
--- a/ext/pdo_sqlite/php_pdo_sqlite.h
+++ b/ext/pdo_sqlite/php_pdo_sqlite.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_sqlite.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_sqlite.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_SQLITE_H
diff --git a/ext/pdo_sqlite/php_pdo_sqlite_int.h b/ext/pdo_sqlite/php_pdo_sqlite_int.h
index 3cba7fbf1..319d08325 100644
--- a/ext/pdo_sqlite/php_pdo_sqlite_int.h
+++ b/ext/pdo_sqlite/php_pdo_sqlite_int.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_sqlite_int.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pdo_sqlite_int.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PDO_SQLITE_INT_H
#define PHP_PDO_SQLITE_INT_H
diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c
index 2eb78fc63..4949d3a2b 100644
--- a/ext/pdo_sqlite/sqlite_driver.c
+++ b/ext/pdo_sqlite/sqlite_driver.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite_driver.c 314451 2011-08-08 00:07:54Z iliaa $ */
+/* $Id: sqlite_driver.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c
index 74c6b1a96..bb792fc1c 100644
--- a/ext/pdo_sqlite/sqlite_statement.c
+++ b/ext/pdo_sqlite/sqlite_statement.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite_statement.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: sqlite_statement.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index d6dea8e6f..3a91cfc0e 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: pgsql.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
@@ -2452,6 +2452,10 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,
} else {
convert_to_long(zrow);
row = Z_LVAL_P(zrow);
+ if (row < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The row parameter must be greater or equal to zero");
+ RETURN_FALSE;
+ }
}
use_row = ZEND_NUM_ARGS() > 1 && row != -1;
@@ -4798,10 +4802,24 @@ PHP_FUNCTION(pg_get_notify)
if (result_type & PGSQL_NUM) {
add_index_string(return_value, 0, pgsql_notify->relname, 1);
add_index_long(return_value, 1, pgsql_notify->be_pid);
+#if HAVE_PQPROTOCOLVERSION && HAVE_PQPARAMETERSTATUS
+ if (PQprotocolVersion(pgsql) >= 3 && atof(PQparameterStatus(pgsql, "server_version")) >= 9.0) {
+#else
+ if (atof(PG_VERSION) >= 9.0) {
+#endif
+ add_index_string(return_value, 2, pgsql_notify->extra, 1);
+ }
}
if (result_type & PGSQL_ASSOC) {
add_assoc_string(return_value, "message", pgsql_notify->relname, 1);
add_assoc_long(return_value, "pid", pgsql_notify->be_pid);
+#if HAVE_PQPROTOCOLVERSION && HAVE_PQPARAMETERSTATUS
+ if (PQprotocolVersion(pgsql) >= 3 && atof(PQparameterStatus(pgsql, "server_version")) >= 9.0) {
+#else
+ if (atof(PG_VERSION) >= 9.0) {
+#endif
+ add_assoc_string(return_value, "payload", pgsql_notify->extra, 1);
+ }
}
PQfreemem(pgsql_notify);
}
diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h
index c22d6a470..40bfd9e19 100644
--- a/ext/pgsql/php_pgsql.h
+++ b/ext/pgsql/php_pgsql.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pgsql.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pgsql.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PGSQL_H
#define PHP_PGSQL_H
diff --git a/ext/pgsql/tests/09notice.phpt b/ext/pgsql/tests/09notice.phpt
index b7611b98c..316706916 100644
--- a/ext/pgsql/tests/09notice.phpt
+++ b/ext/pgsql/tests/09notice.phpt
@@ -1,16 +1,25 @@
--TEST--
PostgreSQL notice function
--SKIPIF--
-<?php include("skipif.inc"); ?>
+<?php
+
+include("skipif.inc");
+
+_skip_lc_messages();
+
+?>
--INI--
pgsql.log_notice=1
pgsql.ignore_notices=0
--FILE--
<?php
include 'config.inc';
+include 'lcmess.inc';
$db = pg_connect($conn_str);
-pg_exec($db, "SET LC_MESSAGES='C';");
+
+_set_lc_messages();
+
pg_query($db, "BEGIN;");
pg_query($db, "BEGIN;");
diff --git a/ext/pgsql/tests/22pg_fetch_object.phpt b/ext/pgsql/tests/22pg_fetch_object.phpt
index 4f2f5dc18..76a3fbeed 100755
--- a/ext/pgsql/tests/22pg_fetch_object.phpt
+++ b/ext/pgsql/tests/22pg_fetch_object.phpt
@@ -16,7 +16,7 @@ class test_class {
$db = pg_connect($conn_str);
-$sql = "SELECT * FROM $table_name";
+$sql = "SELECT * FROM $table_name WHERE num = 0";
$result = pg_query($db, $sql) or die('Cannot qeury db');
$rows = pg_num_rows($result);
diff --git a/ext/pgsql/tests/80_bug32223.phpt b/ext/pgsql/tests/80_bug32223.phpt
index b201d320c..573742c6e 100755
--- a/ext/pgsql/tests/80_bug32223.phpt
+++ b/ext/pgsql/tests/80_bug32223.phpt
@@ -3,6 +3,8 @@ Bug #32223 (weird behaviour of pg_last_notice)
--SKIPIF--
<?php
require_once('skipif.inc');
+
+_skip_lc_messages();
@pg_query($conn, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
$res = @pg_query($conn, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
@@ -17,14 +19,15 @@ if (!$res) die('skip PLPGSQL not available');
<?php
require_once('config.inc');
+require_once('lcmess.inc');
$dbh = @pg_connect($conn_str);
if (!$dbh) {
die ("Could not connect to the server");
}
-pg_exec($dbh, "SET LC_MESSAGES='C';");
-//@pg_query($dbh, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
+_set_lc_messages();
+
$res = pg_query($dbh, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
begin
RAISE NOTICE ''11111'';
diff --git a/ext/pgsql/tests/80_bug32223b.phpt b/ext/pgsql/tests/80_bug32223b.phpt
index 98e472388..aada3f01b 100755
--- a/ext/pgsql/tests/80_bug32223b.phpt
+++ b/ext/pgsql/tests/80_bug32223b.phpt
@@ -3,6 +3,8 @@ Bug #32223 (weird behaviour of pg_last_notice using define)
--SKIPIF--
<?php
require_once('skipif.inc');
+
+_skip_lc_messages();
@pg_query($conn, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
$res = @pg_query($conn, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
@@ -17,14 +19,15 @@ if (!$res) die('skip PLPGSQL not available');
<?php
require_once('config.inc');
+require_once('lcmess.inc');
define('dbh', pg_connect($conn_str));
if (!dbh) {
die ("Could not connect to the server");
}
-pg_exec(dbh, "SET LC_MESSAGES='C';");
-//@pg_query(dbh, "CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'");
+_set_lc_messages();
+
$res = pg_query(dbh, "CREATE OR REPLACE FUNCTION test_notice() RETURNS boolean AS '
begin
RAISE NOTICE ''11111'';
diff --git a/ext/pgsql/tests/bug60244.phpt b/ext/pgsql/tests/bug60244.phpt
new file mode 100644
index 000000000..94568b603
--- /dev/null
+++ b/ext/pgsql/tests/bug60244.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Bug #60244 (pg_fetch_* functions do not validate that row param is >0)
+--SKIPIF--
+<?php
+include("skipif.inc");
+?>
+--FILE--
+<?php
+
+include 'config.inc';
+
+$db = pg_connect($conn_str);
+$result = pg_query("select 'a' union select 'b'");
+
+var_dump(pg_fetch_array($result, -1));
+var_dump(pg_fetch_assoc($result, -1));
+var_dump(pg_fetch_object($result, -1));
+var_dump(pg_fetch_row($result, -1));
+
+var_dump(pg_fetch_array($result, 0));
+var_dump(pg_fetch_assoc($result, 0));
+var_dump(pg_fetch_object($result, 0));
+var_dump(pg_fetch_row($result, 0));
+
+pg_close($db);
+
+?>
+--EXPECTF--
+Warning: pg_fetch_array(): The row parameter must be greater or equal to zero in %sbug60244.php on line %d
+bool(false)
+
+Warning: pg_fetch_assoc(): The row parameter must be greater or equal to zero in %sbug60244.php on line %d
+bool(false)
+
+Warning: pg_fetch_object(): The row parameter must be greater or equal to zero in %sbug60244.php on line %d
+bool(false)
+
+Warning: pg_fetch_row(): The row parameter must be greater or equal to zero in %sbug60244.php on line %d
+bool(false)
+array(2) {
+ [0]=>
+ string(1) "a"
+ ["?column?"]=>
+ string(1) "a"
+}
+array(1) {
+ ["?column?"]=>
+ string(1) "a"
+}
+object(stdClass)#1 (1) {
+ ["?column?"]=>
+ string(1) "a"
+}
+array(1) {
+ [0]=>
+ string(1) "a"
+}
diff --git a/ext/pgsql/tests/lcmess.inc b/ext/pgsql/tests/lcmess.inc
new file mode 100644
index 000000000..6e0ac25b1
--- /dev/null
+++ b/ext/pgsql/tests/lcmess.inc
@@ -0,0 +1,21 @@
+<?php
+
+function _skip_lc_messages($lc_messages = 'C')
+{
+ if (!_set_lc_messages($lc_messages)) {
+ die("skip Cannot set LC_MESSAGES to '{$lc_messages}'\n");
+ }
+}
+
+function _set_lc_messages($lc_messages = 'C')
+{
+ if (pg_result(pg_query("SHOW LC_MESSAGES"), 0, 0) != $lc_messages) {
+ if (!@pg_exec("SET LC_MESSAGES='{$lc_messages}'")) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+?>
diff --git a/ext/pgsql/tests/skipif.inc b/ext/pgsql/tests/skipif.inc
index 74b27b3ad..7c5153e6f 100644
--- a/ext/pgsql/tests/skipif.inc
+++ b/ext/pgsql/tests/skipif.inc
@@ -7,6 +7,7 @@
// database
include("config.inc");
+include("lcmess.inc");
if (!extension_loaded("pgsql")) {
die("skip\n");
diff --git a/ext/phar/dirstream.c b/ext/phar/dirstream.c
index 4b6fd586f..a1c5b09ab 100644
--- a/ext/phar/dirstream.c
+++ b/ext/phar/dirstream.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar:// stream wrapper support |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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/phar/dirstream.h b/ext/phar/dirstream.h
index eed6e6677..b4a05c463 100644
--- a/ext/phar/dirstream.h
+++ b/ext/phar/dirstream.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dirstream.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: dirstream.h 321634 2012-01-01 13:15:04Z felipe $ */
BEGIN_EXTERN_C()
int phar_wrapper_mkdir(php_stream_wrapper *wrapper, char *url_from, int mode, int options, php_stream_context *context TSRMLS_DC);
diff --git a/ext/phar/func_interceptors.c b/ext/phar/func_interceptors.c
index 216cb05e3..b2582bc39 100644
--- a/ext/phar/func_interceptors.c
+++ b/ext/phar/func_interceptors.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: func_interceptors.c 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: func_interceptors.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "phar_internal.h"
diff --git a/ext/phar/func_interceptors.h b/ext/phar/func_interceptors.h
index 3f738a9a7..9a8378a8b 100644
--- a/ext/phar/func_interceptors.h
+++ b/ext/phar/func_interceptors.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: func_interceptors.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: func_interceptors.h 321634 2012-01-01 13:15:04Z felipe $ */
BEGIN_EXTERN_C()
void phar_intercept_functions(TSRMLS_D);
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 46a8e34e1..d16576a2d 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar.c 314419 2011-08-07 11:13:27Z laruence $ */
+/* $Id: phar.c 321634 2012-01-01 13:15:04Z felipe $ */
#define PHAR_MAIN 1
#include "phar_internal.h"
@@ -1569,7 +1569,9 @@ static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *a
const char zip_magic[] = "PK\x03\x04";
const char gz_magic[] = "\x1f\x8b\x08";
const char bz_magic[] = "BZh";
- char *pos, buffer[1024 + sizeof(token)], test = '\0';
+ char *pos, test = '\0';
+ const int window_size = 1024;
+ char buffer[1024 + sizeof(token)]; /* a 1024 byte window + the size of the halt_compiler token (moving window) */
const long readsize = sizeof(buffer) - sizeof(token);
const long tokenlen = sizeof(token) - 1;
long halt_offset;
@@ -1717,7 +1719,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *a
}
halt_offset += got;
- memmove(buffer, buffer + tokenlen, got + 1);
+ memmove(buffer, buffer + window_size, tokenlen); /* move the memory buffer by the size of the window */
}
MAPPHAR_ALLOC_FAIL("internal corruption of phar \"%s\" (__HALT_COMPILER(); not found)")
@@ -3103,9 +3105,7 @@ int phar_flush(phar_archive_data *phar, char *user_stub, long len, int convert,
/* this will have changed for all files that have either changed compression or been modified */
entry->offset = entry->offset_abs = offset;
offset += entry->compressed_filesize;
- phar_stream_copy_to_stream(file, newfile, entry->compressed_filesize, &wrote);
-
- if (entry->compressed_filesize != wrote) {
+ if (phar_stream_copy_to_stream(file, newfile, entry->compressed_filesize, &wrote) == FAILURE) {
if (closeoldfile) {
php_stream_close(oldfile);
}
@@ -3669,7 +3669,7 @@ PHP_MINFO_FUNCTION(phar) /* {{{ */
php_info_print_table_header(2, "Phar: PHP Archive support", "enabled");
php_info_print_table_row(2, "Phar EXT version", PHP_PHAR_VERSION);
php_info_print_table_row(2, "Phar API version", PHP_PHAR_API_VERSION);
- php_info_print_table_row(2, "SVN revision", "$Revision: 314419 $");
+ php_info_print_table_row(2, "SVN revision", "$Revision: 321634 $");
php_info_print_table_row(2, "Phar-based phar archives", "enabled");
php_info_print_table_row(2, "Tar-based phar archives", "enabled");
php_info_print_table_row(2, "ZIP-based phar archives", "enabled");
diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h
index 0b4b08395..ef9a7fa65 100644
--- a/ext/phar/phar_internal.h
+++ b/ext/phar/phar_internal.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_internal.h 308657 2011-02-25 09:32:17Z nlopess $ */
+/* $Id: phar_internal.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index f7dbc209c..959a2b483 100644
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_object.c 314653 2011-08-09 14:11:56Z iliaa $ */
+/* $Id: phar_object.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "phar_internal.h"
#include "func_interceptors.h"
diff --git a/ext/phar/phar_path_check.c b/ext/phar/phar_path_check.c
index c33d75f8b..cb73e7a82 100644
--- a/ext/phar/phar_path_check.c
+++ b/ext/phar/phar_path_check.c
@@ -4,7 +4,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2007-2011 The PHP Group |
+ | Copyright (c) 2007-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_path_check.c 308657 2011-02-25 09:32:17Z nlopess $ */
+/* $Id: phar_path_check.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "phar_internal.h"
diff --git a/ext/phar/phar_path_check.re b/ext/phar/phar_path_check.re
index 19da87cd0..46431749a 100644
--- a/ext/phar/phar_path_check.re
+++ b/ext/phar/phar_path_check.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2007-2011 The PHP Group |
+ | Copyright (c) 2007-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_path_check.re 308657 2011-02-25 09:32:17Z nlopess $ */
+/* $Id: phar_path_check.re 321634 2012-01-01 13:15:04Z felipe $ */
#include "phar_internal.h"
diff --git a/ext/phar/pharzip.h b/ext/phar/pharzip.h
index afc3ea2a9..e7471a5e8 100644
--- a/ext/phar/pharzip.h
+++ b/ext/phar/pharzip.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pharzip.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: pharzip.h 321634 2012-01-01 13:15:04Z felipe $ */
typedef struct _phar_zip_file_header {
char signature[4]; /* local file header signature 4 bytes (0x04034b50) */
diff --git a/ext/phar/php_phar.h b/ext/phar/php_phar.h
index 0dc642967..87bc0a2bc 100644
--- a/ext/phar/php_phar.h
+++ b/ext/phar/php_phar.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_phar.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: php_phar.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PHAR_H
#define PHP_PHAR_H
diff --git a/ext/phar/stream.c b/ext/phar/stream.c
index cf2c53620..7e74ed60f 100644
--- a/ext/phar/stream.c
+++ b/ext/phar/stream.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar:// stream wrapper support |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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/phar/stream.h b/ext/phar/stream.h
index 045186c54..138285997 100644
--- a/ext/phar/stream.h
+++ b/ext/phar/stream.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2011 The PHP Group |
+ | Copyright (c) 2006-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: stream.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: stream.h 321634 2012-01-01 13:15:04Z felipe $ */
BEGIN_EXTERN_C()
diff --git a/ext/phar/stub.h b/ext/phar/stub.h
index 6a68464b4..cf20f25c8 100644
--- a/ext/phar/stub.h
+++ b/ext/phar/stub.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| phar php single-file executable PHP extension generated stub |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: stub.h 306941 2011-01-01 02:48:19Z felipe $ */
+/* $Id: stub.h 321634 2012-01-01 13:15:04Z felipe $ */
static inline void phar_get_stub(const char *index_php, const char *web, size_t *len, char **stub, const int name_len, const int web_len TSRMLS_DC)
{
diff --git a/ext/phar/tar.c b/ext/phar/tar.c
index 38c3f4f85..9d1e5bcb1 100644
--- a/ext/phar/tar.c
+++ b/ext/phar/tar.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| TAR archive support for Phar |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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/phar/tar.h b/ext/phar/tar.h
index 950cace9f..ed9934647 100644
--- a/ext/phar/tar.h
+++ b/ext/phar/tar.h
@@ -4,7 +4,7 @@
+----------------------------------------------------------------------+
| TAR archive support for Phar |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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/phar/tests/bug53872.phpt b/ext/phar/tests/bug53872.phpt
new file mode 100644
index 000000000..fd332fdf0
--- /dev/null
+++ b/ext/phar/tests/bug53872.phpt
@@ -0,0 +1,28 @@
+--TEST--
+bug#53872 (internal corruption of phar)
+--SKIPIF--
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("zlib")) die("skip Test needs ext/zlib");
+?>
+--INI--
+phar.readonly=0
+--FILE--
+<?php
+$p=new Phar('bug53872-phar.phar');
+$p->buildFromDirectory(__DIR__ . "/bug53872/");
+$p->setStub('<?php __HALT_COMPILER();?\>');
+$p->compressFiles(Phar::GZ);
+
+print(file_get_contents('phar://bug53872-phar.phar/first.txt'));
+print(file_get_contents('phar://bug53872-phar.phar/second.txt'));
+print(file_get_contents('phar://bug53872-phar.phar/third.txt'));
+?>
+--CLEAN--
+<?php
+unlink("bug53872-phar.phar");
+?>
+--EXPECT--
+content of first.txt
+content of third.txt
+
diff --git a/ext/phar/tests/bug53872/first.txt b/ext/phar/tests/bug53872/first.txt
new file mode 100644
index 000000000..90a4d1f09
--- /dev/null
+++ b/ext/phar/tests/bug53872/first.txt
@@ -0,0 +1 @@
+content of first.txt
diff --git a/ext/phar/tests/bug53872/second.txt b/ext/phar/tests/bug53872/second.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ext/phar/tests/bug53872/second.txt
diff --git a/ext/phar/tests/bug53872/third.txt b/ext/phar/tests/bug53872/third.txt
new file mode 100644
index 000000000..4f283cd78
--- /dev/null
+++ b/ext/phar/tests/bug53872/third.txt
@@ -0,0 +1 @@
+content of third.txt
diff --git a/ext/phar/tests/bug60164.phpt b/ext/phar/tests/bug60164.phpt
new file mode 100644
index 000000000..8fd5de514
--- /dev/null
+++ b/ext/phar/tests/bug60164.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Phar: verify stub of specific length does not break __HALT_COMPILER(); scanning in php
+--SKIPIF--
+<?php
+if (!extension_loaded("phar")) die("skip");
+?>
+--INI--
+phar.require_hash=0
+phar.readonly=0
+--FILE--
+<?php
+$phar = __DIR__ . '/files/stuboflength1041.phar';
+foreach (new RecursiveIteratorIterator(new Phar($phar, null, 'stuboflength1041.phar')) as $item) {
+ var_dump($item->getFileName());
+}
+?>
+===DONE===
+--EXPECT--
+string(5) "a.php"
+string(5) "b.php"
+===DONE=== \ No newline at end of file
diff --git a/ext/phar/tests/bug60261.phpt b/ext/phar/tests/bug60261.phpt
new file mode 100644
index 000000000..1b6cd7a7c
--- /dev/null
+++ b/ext/phar/tests/bug60261.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Bug #60261 (phar dos null pointer)
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+
+$nx = new Phar();
+try {
+ $nx->getLinkTarget();
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+}
+
+?>
+--EXPECTF--
+
+Warning: Phar::__construct() expects at least 1 parameter, 0 given in %s on line %d
+SplFileInfo::getLinkTarget(): Empty filename
diff --git a/ext/phar/tests/files/stuboflength1041.phar b/ext/phar/tests/files/stuboflength1041.phar
new file mode 100644
index 000000000..d90fb8f10
--- /dev/null
+++ b/ext/phar/tests/files/stuboflength1041.phar
Binary files differ
diff --git a/ext/phar/tests/files/stuboflength1041.phar.inc b/ext/phar/tests/files/stuboflength1041.phar.inc
new file mode 100644
index 000000000..4a26a41a0
--- /dev/null
+++ b/ext/phar/tests/files/stuboflength1041.phar.inc
@@ -0,0 +1,42 @@
+<?php
+
+@unlink(__DIR__ . '/stuboflength1041.phar');
+
+$phar = new Phar('./stuboflength1041.phar');
+$phar['a.php'] = 'hi1';
+$phar['b.php'] = 'hi2';
+
+$phar->setStub('<?php
+/***stub of length 1041 including the halt compiler*********************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+*********************************************/
+__HALT_COMPILER();');
+<?php
+
+@unlink(__DIR__ . '/stuboflength1041.phar');
+
+$phar = new Phar('./stuboflength1041.phar');
+$phar['a.php'] = 'hi1';
+$phar['b.php'] = 'hi2';
+
+$phar->setStub('<?php
+/***stub of length 1041 including the halt compiler*********************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+************************************************************************************************
+*********************************************/
+__HALT_COMPILER();'); \ No newline at end of file
diff --git a/ext/phar/tests/fopen_edgecases2.phpt b/ext/phar/tests/fopen_edgecases2.phpt
index 6c5ac7b45..c7ccd34af 100644
--- a/ext/phar/tests/fopen_edgecases2.phpt
+++ b/ext/phar/tests/fopen_edgecases2.phpt
@@ -2,7 +2,7 @@
Phar: test edge cases of fopen() function interception #2
--SKIPIF--
<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (version_compare(php_version(), '6.0', '>=')) die('skip parameter parsing changed in 6.0'); ?>
+<?php if (version_compare(phpversion(), '6.0', '>=')) die('skip parameter parsing changed in 6.0'); ?>
--INI--
phar.readonly=0
--FILE--
diff --git a/ext/phar/tests/phar_commitwrite.phpt b/ext/phar/tests/phar_commitwrite.phpt
index 36d473e5c..8e3668133 100644
--- a/ext/phar/tests/phar_commitwrite.phpt
+++ b/ext/phar/tests/phar_commitwrite.phpt
@@ -39,4 +39,4 @@ Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER(); ?>
"
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/phar/tests/phar_create_in_cwd.phpt b/ext/phar/tests/phar_create_in_cwd.phpt
index 4b0e6594f..1828fe745 100644
--- a/ext/phar/tests/phar_create_in_cwd.phpt
+++ b/ext/phar/tests/phar_create_in_cwd.phpt
@@ -42,4 +42,4 @@ Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER(); ?>
"
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/phar/tests/phar_gobyebye-win32.phpt b/ext/phar/tests/phar_gobyebye-win32.phpt
new file mode 100644
index 000000000..43c8c7782
--- /dev/null
+++ b/ext/phar/tests/phar_gobyebye-win32.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Phar: test edge cases of intercepted functions when the underlying phar archive has been unlinkArchive()d
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip");
+if (strpos(PHP_OS, 'WIN') === false) die("skip Extra warning on Windows.");
+?>
+--INI--
+phar.readonly=0
+--FILE--
+<?php
+Phar::interceptFileFuncs();
+$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
+$fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.php';
+$pname = 'phar://' . $fname;
+file_put_contents($fname2, '<?php Phar::unlinkArchive("' . addslashes($fname) . '");');
+file_put_contents($pname . '/foo/hi', '<?php
+include "' . addslashes($fname2) . '";
+readfile("foo/hi");
+fopen("foo/hi", "r");
+echo file_get_contents("foo/hi");
+var_dump(is_file("foo/hi"),is_link("foo/hi"),is_dir("foo/hi"),file_exists("foo/hi"),stat("foo/hi"));
+opendir("foo/hi");
+?>
+');
+include $pname . '/foo/hi';
+?>
+===DONE===
+--CLEAN--
+<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
+<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.php'); ?>
+--EXPECTF--
+Warning: readfile(foo/hi): failed to open stream: No such file or directory in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+
+Warning: fopen(foo/hi): failed to open stream: No such file or directory in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+
+Warning: file_get_contents(foo/hi): failed to open stream: No such file or directory in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+
+Warning: stat(): stat failed for foo/hi in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+Warning: opendir(foo/hi,foo/hi): The system cannot find the path specified. (code: 3) in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+
+Warning: opendir(foo/hi): failed to open dir: No such file or directory in phar://%sphar_gobyebye-win32.phar.php/foo/hi on line %d
+===DONE===
diff --git a/ext/phar/tests/phar_gobyebye.phpt b/ext/phar/tests/phar_gobyebye.phpt
index d55bef0c3..608e95076 100644
--- a/ext/phar/tests/phar_gobyebye.phpt
+++ b/ext/phar/tests/phar_gobyebye.phpt
@@ -1,7 +1,10 @@
--TEST--
Phar: test edge cases of intercepted functions when the underlying phar archive has been unlinkArchive()d
--SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip");?>
+<?php
+if (defined('PHP_WINDOWS_VERSION_MAJOR')) die("skip");
+if (!extension_loaded("phar")) die("skip");
+?>
--INI--
phar.readonly=0
--FILE--
diff --git a/ext/phar/tests/phar_oo_001.phpt b/ext/phar/tests/phar_oo_001.phpt
index f211394e5..7a81bbb4b 100755
--- a/ext/phar/tests/phar_oo_001.phpt
+++ b/ext/phar/tests/phar_oo_001.phpt
@@ -30,14 +30,14 @@ try
$phar = new MyPhar();
var_dump($phar->getVersion());
}
-catch (BadMethodCallException $e)
+catch (LogicException $e)
{
var_dump($e->getMessage());
}
try {
$phar = new Phar('test.phar');
$phar->__construct('oops');
-} catch (BadMethodCallException $e)
+} catch (LogicException $e)
{
var_dump($e->getMessage());
}
diff --git a/ext/phar/util.c b/ext/phar/util.c
index 983ca38d1..c92d796eb 100644
--- a/ext/phar/util.c
+++ b/ext/phar/util.c
@@ -3,7 +3,7 @@
| phar php single-file executable PHP extension |
| utility functions |
+----------------------------------------------------------------------+
- | Copyright (c) 2005-2011 The PHP Group |
+ | Copyright (c) 2005-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: util.c 314419 2011-08-07 11:13:27Z laruence $ */
+/* $Id: util.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "phar_internal.h"
#ifdef PHAR_HASH_OK
@@ -1000,10 +1000,12 @@ int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TS
php_stream_filter_append(&ufp->writefilters, filter);
php_stream_seek(phar_get_entrypfp(entry TSRMLS_CC), phar_get_fp_offset(entry TSRMLS_CC), SEEK_SET);
- if (SUCCESS != phar_stream_copy_to_stream(phar_get_entrypfp(entry TSRMLS_CC), ufp, entry->compressed_filesize, NULL)) {
- spprintf(error, 4096, "phar error: internal corruption of phar \"%s\" (actual filesize mismatch on file \"%s\")", phar->fname, entry->filename);
- php_stream_filter_remove(filter, 1 TSRMLS_CC);
- return FAILURE;
+ if (entry->uncompressed_filesize) {
+ if (SUCCESS != phar_stream_copy_to_stream(phar_get_entrypfp(entry TSRMLS_CC), ufp, entry->compressed_filesize, NULL)) {
+ spprintf(error, 4096, "phar error: internal corruption of phar \"%s\" (actual filesize mismatch on file \"%s\")", phar->fname, entry->filename);
+ php_stream_filter_remove(filter, 1 TSRMLS_CC);
+ return FAILURE;
+ }
}
php_stream_filter_flush(filter, 1);
diff --git a/ext/phar/zip.c b/ext/phar/zip.c
index a8ac63aeb..ced975cb3 100644
--- a/ext/phar/zip.c
+++ b/ext/phar/zip.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| ZIP archive support for Phar |
+----------------------------------------------------------------------+
- | Copyright (c) 2007-2011 The PHP Group |
+ | Copyright (c) 2007-2012 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/posix/php_posix.h b/ext/posix/php_posix.h
index 64ce54f48..f4e6baee3 100644
--- a/ext/posix/php_posix.h
+++ b/ext/posix/php_posix.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
*/
-/* $Id: php_posix.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_posix.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_POSIX_H
#define PHP_POSIX_H
diff --git a/ext/posix/posix.c b/ext/posix/posix.c
index 18aa87fda..557252aeb 100644
--- a/ext/posix/posix.c
+++ b/ext/posix/posix.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: posix.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: posix.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -310,7 +310,7 @@ const zend_function_entry posix_functions[] = {
static PHP_MINFO_FUNCTION(posix)
{
php_info_print_table_start();
- php_info_print_table_row(2, "Revision", "$Revision: 313665 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
php_info_print_table_end();
}
/* }}} */
diff --git a/ext/posix/tests/posix_getpgid_error.phpt b/ext/posix/tests/posix_getpgid_error.phpt
index e703b8fdc..b15a3c39b 100644
--- a/ext/posix/tests/posix_getpgid_error.phpt
+++ b/ext/posix/tests/posix_getpgid_error.phpt
@@ -2,7 +2,7 @@
Test posix_getpgid() function : error conditions
--SKIPIF--
<?php
-if((!extension_loaded("posix")) || (!function_exists(posix_getpgid))) {
+if((!extension_loaded("posix")) || (!function_exists("posix_getpgid"))) {
print "skip - POSIX extension not loaded or posix_getpgid() does not exist";
}
?>
diff --git a/ext/posix/tests/posix_getpgid_variation.phpt b/ext/posix/tests/posix_getpgid_variation.phpt
index 34a4beb0a..e53d58f39 100644
--- a/ext/posix/tests/posix_getpgid_variation.phpt
+++ b/ext/posix/tests/posix_getpgid_variation.phpt
@@ -2,7 +2,7 @@
Test posix_getpgid() function : variation
--SKIPIF--
<?php
-if((!extension_loaded("posix")) || (!function_exists(posix_getpgid))) {
+if((!extension_loaded("posix")) || (!function_exists("posix_getpgid"))) {
print "skip - POSIX extension not loaded or posix_getpgid() does not exist";
}
?>
diff --git a/ext/posix/tests/posix_ttyname_error.phpt b/ext/posix/tests/posix_ttyname_error.phpt
index e3ec695e5..f7b011e77 100644
--- a/ext/posix/tests/posix_ttyname_error.phpt
+++ b/ext/posix/tests/posix_ttyname_error.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by calling it more than or less than its expected
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation1.phpt b/ext/posix/tests/posix_ttyname_variation1.phpt
index 072b9fa67..efbf64a4b 100644
--- a/ext/posix/tests/posix_ttyname_variation1.phpt
+++ b/ext/posix/tests/posix_ttyname_variation1.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with array values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation2.phpt b/ext/posix/tests/posix_ttyname_variation2.phpt
index f46821b0c..324614275 100644
--- a/ext/posix/tests/posix_ttyname_variation2.phpt
+++ b/ext/posix/tests/posix_ttyname_variation2.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with boolean values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation3.phpt b/ext/posix/tests/posix_ttyname_variation3.phpt
index 30054265a..a3ebc8cc5 100644
--- a/ext/posix/tests/posix_ttyname_variation3.phpt
+++ b/ext/posix/tests/posix_ttyname_variation3.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with emptyUnsetUndefNul
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation4.phpt b/ext/posix/tests/posix_ttyname_variation4.phpt
index 321549279..da999341e 100644
--- a/ext/posix/tests/posix_ttyname_variation4.phpt
+++ b/ext/posix/tests/posix_ttyname_variation4.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with float values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation5.phpt b/ext/posix/tests/posix_ttyname_variation5.phpt
index 661dd606f..7290f07dc 100644
--- a/ext/posix/tests/posix_ttyname_variation5.phpt
+++ b/ext/posix/tests/posix_ttyname_variation5.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with int values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation6.phpt b/ext/posix/tests/posix_ttyname_variation6.phpt
index 020aef115..eecae6769 100644
--- a/ext/posix/tests/posix_ttyname_variation6.phpt
+++ b/ext/posix/tests/posix_ttyname_variation6.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with object values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/posix/tests/posix_ttyname_variation7.phpt b/ext/posix/tests/posix_ttyname_variation7.phpt
index b39916c5b..8a92ef627 100644
--- a/ext/posix/tests/posix_ttyname_variation7.phpt
+++ b/ext/posix/tests/posix_ttyname_variation7.phpt
@@ -4,6 +4,12 @@ Test function posix_ttyname() by substituting argument 1 with string values.
Marco Fabbri mrfabbri@gmail.com
Francesco Fullone ff@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+if (!extension_loaded('posix')) {
+ die('SKIP The posix extension is not loaded.');
+}
+?>
--FILE--
<?php
diff --git a/ext/pspell/php_pspell.h b/ext/pspell/php_pspell.h
index ee26a8158..e084fbb13 100644
--- a/ext/pspell/php_pspell.h
+++ b/ext/pspell/php_pspell.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pspell.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_pspell.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef _PSPELL_H
#define _PSPELL_H
diff --git a/ext/pspell/pspell.c b/ext/pspell/pspell.c
index ff01c6679..aaefadd70 100644
--- a/ext/pspell/pspell.c
+++ b/ext/pspell/pspell.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pspell.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: pspell.c 321634 2012-01-01 13:15:04Z felipe $ */
#define IS_EXT_MODULE
diff --git a/ext/readline/php_readline.h b/ext/readline/php_readline.h
index c6979e193..b0b3a7d82 100644
--- a/ext/readline/php_readline.h
+++ b/ext/readline/php_readline.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_readline.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_readline.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_READLINE_H
#define PHP_READLINE_H
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 1d2341a3e..9bf1e15ef 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: readline.c 313831 2011-07-28 10:42:45Z pajoye $ */
+/* $Id: readline.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes & prototypes */
diff --git a/ext/recode/php_recode.h b/ext/recode/php_recode.h
index c131da699..50fa4a80e 100644
--- a/ext/recode/php_recode.h
+++ b/ext/recode/php_recode.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_recode.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_recode.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_RECODE_H
#define PHP_RECODE_H
diff --git a/ext/recode/recode.c b/ext/recode/recode.c
index 6eaba2a43..02bb43a9a 100644
--- a/ext/recode/recode.c
+++ b/ext/recode/recode.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: recode.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: recode.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes & prototypes */
@@ -135,7 +135,7 @@ PHP_MINFO_FUNCTION(recode)
{
php_info_print_table_start();
php_info_print_table_row(2, "Recode Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 313665 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
php_info_print_table_end();
}
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index a4d8cb71d..a73b67026 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_reflection.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_reflection.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -2635,7 +2635,7 @@ ZEND_METHOD(reflection_method, invoke)
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
- fcc.called_scope = obj_ce;
+ fcc.called_scope = intern->ce;
fcc.object_ptr = object_ptr;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -5545,7 +5545,7 @@ PHP_MINFO_FUNCTION(reflection) /* {{{ */
php_info_print_table_start();
php_info_print_table_header(2, "Reflection", "enabled");
- php_info_print_table_row(2, "Version", "$Revision: 313665 $");
+ php_info_print_table_row(2, "Version", "$Revision: 321634 $");
php_info_print_table_end();
} /* }}} */
@@ -5559,7 +5559,7 @@ zend_module_entry reflection_module_entry = { /* {{{ */
NULL,
NULL,
PHP_MINFO(reflection),
- "$Revision: 313665 $",
+ "$Revision: 321634 $",
STANDARD_MODULE_PROPERTIES
}; /* }}} */
diff --git a/ext/reflection/php_reflection.h b/ext/reflection/php_reflection.h
index 0607f7f64..71bacaae4 100644
--- a/ext/reflection/php_reflection.h
+++ b/ext/reflection/php_reflection.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_reflection.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_reflection.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_REFLECTION_H
#define PHP_REFLECTION_H
diff --git a/ext/reflection/tests/bug60367.phpt b/ext/reflection/tests/bug60367.phpt
new file mode 100644
index 000000000..31e8a2e94
--- /dev/null
+++ b/ext/reflection/tests/bug60367.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60367 (Reflection and Late Static Binding)
+--FILE--
+<?php
+abstract class A {
+
+ const WHAT = 'A';
+
+ public static function call() {
+ echo static::WHAT;
+ }
+
+}
+
+class B extends A {
+
+ const WHAT = 'B';
+
+}
+
+$method = new ReflectionMethod("b::call");
+$method->invoke(null);
+$method = new ReflectionMethod("A::call");
+$method->invoke(null);
+--EXPECTF--
+BA
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index a25a7db0e..a7aac29d2 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_files.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_files.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/session/mod_files.h b/ext/session/mod_files.h
index 357a12059..ff6838cd7 100644
--- a/ext/session/mod_files.h
+++ b/ext/session/mod_files.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_files.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_files.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MOD_FILES_H
#define MOD_FILES_H
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index e84d4f584..0d5a0bdcc 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_mm.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_mm.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
@@ -278,7 +278,7 @@ PHP_MINIT_FUNCTION(ps_mm)
ps_mm_path = emalloc(save_path_len + 1 + (sizeof(PS_MM_FILE) - 1) + mod_name_len + euid_len + 1);
memcpy(ps_mm_path, PS(save_path), save_path_len);
- if (PS(save_path)[save_path_len - 1] != DEFAULT_SLASH) {
+ if (save_path_len && PS(save_path)[save_path_len - 1] != DEFAULT_SLASH) {
ps_mm_path[save_path_len] = DEFAULT_SLASH;
save_path_len++;
}
diff --git a/ext/session/mod_mm.h b/ext/session/mod_mm.h
index 638bd77b1..bd69117ab 100644
--- a/ext/session/mod_mm.h
+++ b/ext/session/mod_mm.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_mm.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_mm.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MOD_MM_H
#define MOD_MM_H
diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c
index 6431f3a12..8a6ff8609 100644
--- a/ext/session/mod_user.c
+++ b/ext/session/mod_user.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_user.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_user.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_session.h"
diff --git a/ext/session/mod_user.h b/ext/session/mod_user.h
index e3a8dd716..27330bf66 100644
--- a/ext/session/mod_user.h
+++ b/ext/session/mod_user.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_user.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mod_user.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MOD_USER_H
#define MOD_USER_H
diff --git a/ext/session/php_session.h b/ext/session/php_session.h
index f93adf69f..07cb89dc5 100644
--- a/ext/session/php_session.h
+++ b/ext/session/php_session.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_session.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_session.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SESSION_H
#define PHP_SESSION_H
diff --git a/ext/session/session.c b/ext/session/session.c
index 432048dc7..19fa3cc38 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: session.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: session.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1742,7 +1742,7 @@ static PHP_FUNCTION(session_regenerate_id)
return;
}
- if (SG(headers_sent)) {
+ if (SG(headers_sent) && PS(use_cookies)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot regenerate session id - headers already sent");
RETURN_FALSE;
}
diff --git a/ext/session/tests/014.phpt b/ext/session/tests/014.phpt
index be1119d9a..09ad0f5b1 100644
--- a/ext/session/tests/014.phpt
+++ b/ext/session/tests/014.phpt
@@ -3,7 +3,7 @@ a script should not be able to modify session.use_trans_sid
--SKIPIF--
<?php include('skipif.inc'); ?>
--INI--
-session.use_trans_sid=1
+session.use_trans_sid=0
session.use_cookies=0
session.cache_limiter=
register_globals=1
@@ -22,11 +22,11 @@ session_start();
?>
<a href="/link">
<?php
-ini_set("session.use_trans_sid","0");
+ini_set("session.use_trans_sid","1");
?>
<a href="/link">
<?php
-ini_set("session.use_trans_sid","1");
+ini_set("session.use_trans_sid","0");
?>
<a href="/link">
<?php
@@ -34,10 +34,10 @@ session_destroy();
?>
--EXPECTF--
Deprecated: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0
-<a href="/link?PHPSESSID=abtest">
+<a href="/link">
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line %d
-<a href="/link?PHPSESSID=abtest">
+<a href="/link">
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line %d
-<a href="/link?PHPSESSID=abtest">
+<a href="/link">
diff --git a/ext/session/tests/015.phpt b/ext/session/tests/015.phpt
index e747e08fb..7d7b73734 100644
--- a/ext/session/tests/015.phpt
+++ b/ext/session/tests/015.phpt
@@ -5,6 +5,7 @@ use_trans_sid should not affect SID
--INI--
session.use_trans_sid=1
session.use_cookies=0
+session.use_only_cookies=0
session.cache_limiter=
arg_separator.output=&
session.name=PHPSESSID
diff --git a/ext/session/tests/018.phpt b/ext/session/tests/018.phpt
index 3450d1e3f..def1f419c 100644
--- a/ext/session/tests/018.phpt
+++ b/ext/session/tests/018.phpt
@@ -4,6 +4,7 @@ rewriter correctly handles attribute names which contain dashes
<?php include('skipif.inc'); ?>
--INI--
session.use_cookies=0
+session.use_only_cookies=0
session.cache_limiter=
session.use_trans_sid=1
session.name=PHPSESSID
diff --git a/ext/session/tests/020.phpt b/ext/session/tests/020.phpt
index 82997a8f0..f43bac5d1 100644
--- a/ext/session/tests/020.phpt
+++ b/ext/session/tests/020.phpt
@@ -4,6 +4,7 @@ rewriter uses arg_seperator.output for modifying URLs
<?php include('skipif.inc'); ?>
--INI--
session.use_cookies=0
+session.use_only_cookies=0
session.cache_limiter=
session.use_trans_sid=1
arg_separator.output="&amp;"
diff --git a/ext/session/tests/021.phpt b/ext/session/tests/021.phpt
index 9d95b86d0..1ad3c5d5f 100644
--- a/ext/session/tests/021.phpt
+++ b/ext/session/tests/021.phpt
@@ -4,6 +4,7 @@ rewriter handles form and fieldset tags correctly
<?php include('skipif.inc'); ?>
--INI--
session.use_cookies=0
+session.use_only_cookies=0
session.cache_limiter=
session.use_trans_sid=1
url_rewriter.tags="a=href,area=href,frame=src,input=src,form=,fieldset="
diff --git a/ext/session/tests/bug36459.phpt b/ext/session/tests/bug36459.phpt
index 1488fb4dd..66a4ac1cb 100644
--- a/ext/session/tests/bug36459.phpt
+++ b/ext/session/tests/bug36459.phpt
@@ -1,41 +1,42 @@
---TEST--
-Bug #31454 (Incorrect adding PHPSESSID to links, which contains \r\n)
---SKIPIF--
-<?php include('skipif.inc'); ?>
---INI--
-session.use_trans_sid=1
-session.use_cookies=0
-session.name=sid
---FILE--
-<?php
-error_reporting(E_ALL);
-
-session_start();
-
-# Do not remove \r from this tests, they are essential!
-?>
-<html>
- <head>
- <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
- </head>
- <body>
- <p>See source html code</p>
- <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2"
- style="font: normal 11pt Times New Roman">incorrect link</a><br />
- <br />
- <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2" style="font: normal 11pt Times New Roman">correct link</a>
- </body>
-</html>
---EXPECTF--
-<html>
- <head>
- <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
- </head>
- <body>
- <p>See source html code</p>
- <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s"
- style="font: normal 11pt Times New Roman">incorrect link</a><br />
- <br />
- <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s" style="font: normal 11pt Times New Roman">correct link</a>
- </body>
-</html>
+--TEST--
+Bug #31454 (Incorrect adding PHPSESSID to links, which contains \r\n)
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--INI--
+session.use_trans_sid=1
+session.use_cookies=0
+session.use_only_cookies=0
+session.name=sid
+--FILE--
+<?php
+error_reporting(E_ALL);
+
+session_start();
+
+# Do not remove \r from this tests, they are essential!
+?>
+<html>
+ <head>
+ <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
+ </head>
+ <body>
+ <p>See source html code</p>
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2"
+ style="font: normal 11pt Times New Roman">incorrect link</a><br />
+ <br />
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2" style="font: normal 11pt Times New Roman">correct link</a>
+ </body>
+</html>
+--EXPECTF--
+<html>
+ <head>
+ <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
+ </head>
+ <body>
+ <p>See source html code</p>
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s"
+ style="font: normal 11pt Times New Roman">incorrect link</a><br />
+ <br />
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s" style="font: normal 11pt Times New Roman">correct link</a>
+ </body>
+</html>
diff --git a/ext/session/tests/bug41600.phpt b/ext/session/tests/bug41600.phpt
index 028fca79a..690347ac8 100644
--- a/ext/session/tests/bug41600.phpt
+++ b/ext/session/tests/bug41600.phpt
@@ -4,6 +4,7 @@ Bug #41600 (url rewriter tags doesn't work with namespaced tags)
<?php include('skipif.inc'); ?>
--INI--
session.use_cookies=0
+session.use_only_cookies=0
session.cache_limiter=
session.use_trans_sid=1
arg_separator.output="&amp;"
diff --git a/ext/session/tests/bug60634.phpt b/ext/session/tests/bug60634.phpt
new file mode 100644
index 000000000..2ec0c26c1
--- /dev/null
+++ b/ext/session/tests/bug60634.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write())
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ die("close: goodbye cruel world\n");
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ die("write: goodbye cruel world\n");
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+session_write_close();
+echo "um, hi\n";
+
+?>
+--EXPECTF--
+write: goodbye cruel world
diff --git a/ext/session/tests/bug60634_error_1.phpt b/ext/session/tests/bug60634_error_1.phpt
new file mode 100644
index 000000000..3b6e394ee
--- /dev/null
+++ b/ext/session/tests/bug60634_error_1.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in write during exec
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ echo "close: goodbye cruel world\n";
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ echo "write: goodbye cruel world\n";
+ undefined_function();
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+session_write_close();
+echo "um, hi\n";
+
+?>
+--EXPECTF--
+write: goodbye cruel world
+
+Fatal error: Call to undefined function undefined_function() in %s on line %d
diff --git a/ext/session/tests/bug60634_error_2.phpt b/ext/session/tests/bug60634_error_2.phpt
new file mode 100644
index 000000000..265fb303f
--- /dev/null
+++ b/ext/session/tests/bug60634_error_2.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - exception in write during exec
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ echo "close: goodbye cruel world\n";
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ echo "write: goodbye cruel world\n";
+ throw new Exception;
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+session_write_close();
+echo "um, hi\n";
+
+?>
+--EXPECTF--
+write: goodbye cruel world
+
+Fatal error: Uncaught exception 'Exception' in %s
diff --git a/ext/session/tests/bug60634_error_3.phpt b/ext/session/tests/bug60634_error_3.phpt
new file mode 100644
index 000000000..b2004d68b
--- /dev/null
+++ b/ext/session/tests/bug60634_error_3.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in write after exec
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ echo "close: goodbye cruel world\n";
+ exit;
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ echo "write: goodbye cruel world\n";
+ undefined_function();
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+
+?>
+--EXPECTF--
+write: goodbye cruel world
+
+Fatal error: Call to undefined function undefined_function() in %s on line %d
diff --git a/ext/session/tests/bug60634_error_4.phpt b/ext/session/tests/bug60634_error_4.phpt
new file mode 100644
index 000000000..60bc0dcf5
--- /dev/null
+++ b/ext/session/tests/bug60634_error_4.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - exception in write after exec
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ echo "close: goodbye cruel world\n";
+ exit;
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ echo "write: goodbye cruel world\n";
+ throw new Exception;
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+
+?>
+--EXPECTF--
+write: goodbye cruel world
+
+Fatal error: Uncaught exception 'Exception' in %s
diff --git a/ext/session/tests/bug60634_error_5.phpt b/ext/session/tests/bug60634_error_5.phpt
new file mode 100644
index 000000000..376b65f20
--- /dev/null
+++ b/ext/session/tests/bug60634_error_5.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in close during exec
+--XFAIL--
+Long term low priority bug, working on it
+--INI--
+session.save_path=
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+function open($save_path, $session_name) {
+ return true;
+}
+
+function close() {
+ echo "close: goodbye cruel world\n";
+ undefined_function();
+}
+
+function read($id) {
+ return '';
+}
+
+function write($id, $session_data) {
+ return true;
+}
+
+function destroy($id) {
+ return true;
+}
+
+function gc($maxlifetime) {
+ return true;
+}
+
+session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
+session_start();
+session_write_close();
+echo "um, hi\n";
+
+?>
+--EXPECTF--
+close: goodbye cruel world
+
+Fatal error: Call to undefined function undefined_function() in %s on line %d
diff --git a/ext/session/tests/session_save_path_variation4.phpt b/ext/session/tests/session_save_path_variation4.phpt
index 6ea725cd8..80db6caf7 100644
--- a/ext/session/tests/session_save_path_variation4.phpt
+++ b/ext/session/tests/session_save_path_variation4.phpt
@@ -1,10 +1,7 @@
--TEST--
Test session_save_path() function : variation
--SKIPIF--
-<?php include('skipif.inc');
-if(substr(PHP_OS, 0, 3) != "WIN")
- die("skip Only for Windows");
-?>
+<?php include('skipif.inc');?>
--INI--
open_basedir=.
session.save_handler=files
diff --git a/ext/shmop/php_shmop.h b/ext/shmop/php_shmop.h
index 7ad5ec2eb..89e5d2ad3 100644
--- a/ext/shmop/php_shmop.h
+++ b/ext/shmop/php_shmop.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/shmop/shmop.c b/ext/shmop/shmop.c
index b176ae501..cea2b3359 100644
--- a/ext/shmop/shmop.c
+++ b/ext/shmop/shmop.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
| Ilia Alshanetsky <ilia@prohost.org> |
+----------------------------------------------------------------------+
*/
-/* $Id: shmop.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: shmop.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/simplexml/php_simplexml.h b/ext/simplexml/php_simplexml.h
index eee70138a..2c37eda8b 100644
--- a/ext/simplexml/php_simplexml.h
+++ b/ext/simplexml/php_simplexml.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_simplexml.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_simplexml.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SIMPLEXML_H
#define PHP_SIMPLEXML_H
diff --git a/ext/simplexml/php_simplexml_exports.h b/ext/simplexml/php_simplexml_exports.h
index 313bb88eb..9c187ce66 100755
--- a/ext/simplexml/php_simplexml_exports.h
+++ b/ext/simplexml/php_simplexml_exports.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_simplexml_exports.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_simplexml_exports.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SIMPLEXML_EXPORTS_H
#define PHP_SIMPLEXML_EXPORTS_H
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 888a6c0fd..f9020026b 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: simplexml.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: simplexml.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1264,8 +1264,9 @@ SXE_METHOD(xpath)
result = retval->nodesetval;
+ array_init(return_value);
+
if (result != NULL) {
- array_init(return_value);
for (i = 0; i < result->nodeNr; ++i) {
nodeptr = result->nodeTab[i];
if (nodeptr->type == XML_TEXT_NODE || nodeptr->type == XML_ELEMENT_NODE || nodeptr->type == XML_ATTRIBUTE_NODE) {
@@ -1286,8 +1287,6 @@ SXE_METHOD(xpath)
add_next_index_zval(return_value, value);
}
}
- } else {
- RETVAL_FALSE;
}
xmlXPathFreeObject(retval);
@@ -2609,7 +2608,7 @@ PHP_MINFO_FUNCTION(simplexml)
{
php_info_print_table_start();
php_info_print_table_header(2, "Simplexml support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 314376 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
php_info_print_table_row(2, "Schema support",
#ifdef LIBXML_SCHEMAS_ENABLED
"enabled");
diff --git a/ext/simplexml/sxe.c b/ext/simplexml/sxe.c
index 815bea1db..ff36e4aa6 100755
--- a/ext/simplexml/sxe.c
+++ b/ext/simplexml/sxe.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sxe.c 312258 2011-06-18 15:56:14Z felipe $ */
+/* $Id: sxe.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/simplexml/sxe.h b/ext/simplexml/sxe.h
index c979d7ec0..65d119d80 100755
--- a/ext/simplexml/sxe.h
+++ b/ext/simplexml/sxe.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sxe.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: sxe.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SXE_H
#define SXE_H
diff --git a/ext/simplexml/tests/008.phpt b/ext/simplexml/tests/008.phpt
index 4fda204a2..8734ba4a4 100644
--- a/ext/simplexml/tests/008.phpt
+++ b/ext/simplexml/tests/008.phpt
@@ -25,7 +25,10 @@ EOF;
$sxe = simplexml_load_string($xml);
var_dump($sxe->xpath("elem1/elem2/elem3/elem4"));
+//valid expression
var_dump($sxe->xpath("***"));
+//invalid expression
+var_dump($sxe->xpath("**"));
?>
--EXPECTF--
array(1) {
@@ -36,4 +39,10 @@ array(1) {
}
}
}
+array(0) {
+}
+
+Warning: SimpleXMLElement::xpath(): Invalid expression in %s on line %d
+
+Warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in %s on line %d
bool(false)
diff --git a/ext/simplexml/tests/bug37076.phpt b/ext/simplexml/tests/bug37076.phpt
index a5b3801cc..c7f19b3cc 100644
--- a/ext/simplexml/tests/bug37076.phpt
+++ b/ext/simplexml/tests/bug37076.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #37076 (SimpleXML ignores .=)
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
--FILE--
<?php
$xml = simplexml_load_string("<root><foo /></root>");
diff --git a/ext/simplexml/tests/bug37076_1.phpt b/ext/simplexml/tests/bug37076_1.phpt
index d2260040c..d4f4e0333 100644
--- a/ext/simplexml/tests/bug37076_1.phpt
+++ b/ext/simplexml/tests/bug37076_1.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #37076 (SimpleXML ignores .=) (appending to unnamed attribute)
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
--FILE--
<?php
$xml = simplexml_load_string("<root><foo /></root>");
diff --git a/ext/simplexml/tests/bug51615.phpt b/ext/simplexml/tests/bug51615.phpt
index 75f6769ff..94c7b20c4 100644
--- a/ext/simplexml/tests/bug51615.phpt
+++ b/ext/simplexml/tests/bug51615.phpt
@@ -1,7 +1,9 @@
--TEST--
Bug #51615 (PHP crash with wrong HTML in SimpleXML)
--SKIPIF--
-<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+<?php if (!extension_loaded("simplexml")) print "skip";
+ if (!extension_loaded("dom")) print "skip";
+?>
--FILE--
<?php
diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h
index 6f17f9405..6b7f06d9b 100644
--- a/ext/snmp/php_snmp.h
+++ b/ext/snmp/php_snmp.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_snmp.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_snmp.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SNMP_H
#define PHP_SNMP_H
diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c
index 2c2a1138f..1b02220ae 100644
--- a/ext/snmp/snmp.c
+++ b/ext/snmp/snmp.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: snmp.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: snmp.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index b6f0fda32..342f70bc1 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c 314737 2011-08-10 13:44:48Z dmitry $ */
+/* $Id: php_encoding.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <time.h>
diff --git a/ext/soap/php_encoding.h b/ext/soap/php_encoding.h
index bf8ef5de8..5cd7d5b1c 100644
--- a/ext/soap/php_encoding.h
+++ b/ext/soap/php_encoding.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_encoding.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ENCODING_H
#define PHP_ENCODING_H
diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 63cd409f8..91ab27d52 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_http.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_soap.h"
#include "ext/standard/base64.h"
@@ -1383,7 +1383,7 @@ static int get_http_body(php_stream *stream, int close, char *headers, char **r
}
} else if (header_length) {
- if (header_length < 0) {
+ if (header_length < 0 || header_length >= INT_MAX) {
return FALSE;
}
http_buf = emalloc(header_length + 1);
diff --git a/ext/soap/php_http.h b/ext/soap/php_http.h
index b22dd1e5f..42a3ba4a7 100644
--- a/ext/soap/php_http.h
+++ b/ext/soap/php_http.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_http.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HTTP_H
#define PHP_HTTP_H
diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c
index a9c118f44..4f6fe33b6 100644
--- a/ext/soap/php_packet_soap.c
+++ b/ext/soap/php_packet_soap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_packet_soap.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_packet_soap.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_soap.h"
diff --git a/ext/soap/php_packet_soap.h b/ext/soap/php_packet_soap.h
index a062b4ad0..c6960b899 100644
--- a/ext/soap/php_packet_soap.h
+++ b/ext/soap/php_packet_soap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_packet_soap.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_packet_soap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_PACKET_SOAP_H
#define PHP_PACKET_SOAP_H
diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c
index 08122259d..7d4a33341 100644
--- a/ext/soap/php_schema.c
+++ b/ext/soap/php_schema.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_schema.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_schema.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_soap.h"
#include "libxml/uri.h"
@@ -1081,8 +1081,8 @@ static int schema_group(sdlPtr sdl, xmlAttrPtr tns, xmlNodePtr groupType, sdlTyp
nsptr = xmlSearchNs(groupType->doc, groupType, BAD_CAST(ns));
if (nsptr != NULL) {
smart_str_appends(&key, (char*)nsptr->href);
- smart_str_appendc(&key, ':');
}
+ smart_str_appendc(&key, ':');
smart_str_appends(&key, type);
smart_str_0(&key);
@@ -1508,9 +1508,9 @@ static int schema_element(sdlPtr sdl, xmlAttrPtr tns, xmlNodePtr element, sdlTyp
nsptr = xmlSearchNs(element->doc, element, BAD_CAST(ns));
if (nsptr != NULL) {
smart_str_appends(&nscat, (char*)nsptr->href);
- smart_str_appendc(&nscat, ':');
newType->namens = estrdup((char*)nsptr->href);
- }
+ }
+ smart_str_appendc(&nscat, ':');
smart_str_appends(&nscat, type);
newType->name = estrdup(type);
smart_str_0(&nscat);
@@ -1734,9 +1734,9 @@ static int schema_attribute(sdlPtr sdl, xmlAttrPtr tns, xmlNodePtr attrType, sdl
nsptr = xmlSearchNs(attrType->doc, attrType, BAD_CAST(ns));
if (nsptr != NULL) {
smart_str_appends(&key, (char*)nsptr->href);
- smart_str_appendc(&key, ':');
newAttr->namens = estrdup((char*)nsptr->href);
}
+ smart_str_appendc(&key, ':');
smart_str_appends(&key, attr_name);
smart_str_0(&key);
newAttr->ref = estrdup(key.c);
@@ -1970,8 +1970,8 @@ static int schema_attributeGroup(sdlPtr sdl, xmlAttrPtr tns, xmlNodePtr attrGrou
nsptr = xmlSearchNs(attrGroup->doc, attrGroup, BAD_CAST(ns));
if (nsptr != NULL) {
smart_str_appends(&key, (char*)nsptr->href);
- smart_str_appendc(&key, ':');
}
+ smart_str_appendc(&key, ':');
smart_str_appends(&key, group_name);
smart_str_0(&key);
newAttr->ref = estrdup(key.c);
diff --git a/ext/soap/php_schema.h b/ext/soap/php_schema.h
index 3b2042259..cf55bad02 100644
--- a/ext/soap/php_schema.h
+++ b/ext/soap/php_schema.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_schema.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_schema.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SCHEMA_H
#define PHP_SCHEMA_H
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 6eb016997..7750da9f1 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_sdl.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sdl.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_soap.h"
#include "ext/libxml/php_libxml.h"
diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h
index 3c1c0218f..f9f2ab17f 100644
--- a/ext/soap/php_sdl.h
+++ b/ext/soap/php_sdl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_sdl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sdl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SDL_H
#define PHP_SDL_H
diff --git a/ext/soap/php_soap.h b/ext/soap/php_soap.h
index 220bf8f30..d8f1c764f 100644
--- a/ext/soap/php_soap.h
+++ b/ext/soap/php_soap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_soap.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_soap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SOAP_H
#define PHP_SOAP_H
diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c
index 44961085e..8b0ede2e9 100644
--- a/ext/soap/php_xml.c
+++ b/ext/soap/php_xml.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_xml.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xml.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_soap.h"
#include "libxml/parser.h"
diff --git a/ext/soap/php_xml.h b/ext/soap/php_xml.h
index 62a4a185e..56fff3a71 100644
--- a/ext/soap/php_xml.h
+++ b/ext/soap/php_xml.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_xml.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xml.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SOAP_XML_H
#define PHP_SOAP_XML_H
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index d1660dc04..1639c7177 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: soap.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -99,6 +99,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
zend_bool _old_in_compilation = CG(in_compilation); \
zend_bool _old_in_execution = EG(in_execution); \
zend_execute_data *_old_current_execute_data = EG(current_execute_data); \
+ void **_old_stack_top = EG(argument_stack)->top; \
int _bailout = 0;\
SOAP_GLOBAL(use_soap_error_handler) = 1;\
SOAP_GLOBAL(error_code) = "Client";\
@@ -115,6 +116,16 @@ static void soap_error_handler(int error_num, const char *error_filename, const
!instanceof_function(Z_OBJCE_P(EG(exception)), soap_fault_class_entry TSRMLS_CC)) {\
_bailout = 1;\
}\
+ if (_old_stack_top != EG(argument_stack)->top) { \
+ while (EG(argument_stack)->prev != NULL && \
+ ((char*)_old_stack_top < (char*)EG(argument_stack) || \
+ (char*) _old_stack_top > (char*)EG(argument_stack)->end)) { \
+ zend_vm_stack tmp = EG(argument_stack)->prev; \
+ efree(EG(argument_stack)); \
+ EG(argument_stack) = tmp; \
+ } \
+ EG(argument_stack)->top = _old_stack_top; \
+ } \
} zend_end_try();\
SOAP_GLOBAL(use_soap_error_handler) = _old_handler;\
SOAP_GLOBAL(error_code) = _old_error_code;\
diff --git a/ext/soap/tests/bugs/bug44686.phpt b/ext/soap/tests/bugs/bug44686.phpt
new file mode 100644
index 000000000..cff97999c
--- /dev/null
+++ b/ext/soap/tests/bugs/bug44686.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #44686 (SOAP-ERROR: Parsing WSDL with references)
+--SKIPIF--
+<?php require_once 'skipif.inc'; ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+new SoapClient(dirname(__FILE__) . "/bug44686.wsdl");
+echo "ok\n";
+?>
+--EXPECT--
+ok
+
diff --git a/ext/soap/tests/bugs/bug44686.wsdl b/ext/soap/tests/bugs/bug44686.wsdl
new file mode 100644
index 000000000..87b4640b7
--- /dev/null
+++ b/ext/soap/tests/bugs/bug44686.wsdl
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.gomeznetworks.com/webservices/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.gomeznetworks.com/webservices/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified" targetNamespace="http://www.gomeznetworks.com/webservices/">
+ <s:element name="ProvisionMonitors">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" ref="ProvisioningOrder" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="ProvisionMonitorsResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" ref="ProvisioningOrderResponse" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ </s:schema>
+ <s:schema elementFormDefault="qualified">
+ <s:element name="ProvisioningOrder" type="ProvisioningOrder" />
+ <s:complexType name="ProvisioningOrder">
+ <s:complexContent mixed="false">
+ <s:extension base="CServiceObject">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorOrders" type="ArrayOfMonitorOrder" />
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorSites" type="ArrayOfMonitorSiteOrder" />
+ <s:element minOccurs="0" maxOccurs="1" name="ReportOrders" type="ArrayOfReportOrder" />
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorAttributes" type="ArrayOfMonitorAttribute" />
+ </s:sequence>
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="expirationDate" type="s:dateTime" use="required" />
+ <s:attribute name="autoDelete" type="s:boolean" use="required" />
+ </s:extension>
+ </s:complexContent>
+ </s:complexType>
+ <s:complexType name="CServiceObject" abstract="true" />
+ <s:complexType name="ArrayOfMonitorOrder">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="MonitorOrder" nillable="true" type="MonitorOrder" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="MonitorOrder">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorSites" type="ArrayOfMonitorSiteOrder" />
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorAttributes" type="ArrayOfMonitorAttribute" />
+ </s:sequence>
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="url" type="s:string" />
+ <s:attribute name="frequencyInMins" type="s:int" use="required" />
+ <s:attribute name="targetClass" type="MonitorTargetClass" use="required" />
+ <s:attribute name="fileSizeOverrideInKB" type="s:int" use="required" />
+ </s:complexType>
+ <s:complexType name="ArrayOfMonitorSiteOrder">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="MonitorSite" nillable="true" type="MonitorSiteOrder" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="MonitorSiteOrder">
+ <s:attribute name="siteId" type="s:int" use="required" />
+ </s:complexType>
+ <s:complexType name="ArrayOfMonitorAttribute">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="MonitorAttribute" nillable="true" type="MonitorAttribute" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="MonitorAttribute">
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="value" type="s:string" />
+ </s:complexType>
+ <s:simpleType name="MonitorTargetClass">
+ <s:restriction base="s:string">
+ <s:enumeration value="eTransaction" />
+ <s:enumeration value="eSingleURL" />
+ </s:restriction>
+ </s:simpleType>
+ <s:complexType name="ArrayOfReportOrder">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="ReportOrder" nillable="true" type="ReportOrder" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="ReportOrder">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="EmailTargets" type="ArrayOfEmailTarget" />
+ </s:sequence>
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="reportFormatType" type="ReportFormatType" use="required" />
+ <s:attribute name="reportDeliveryType" type="ReportDeliveryType" use="required" />
+ <s:attribute name="reportDelayInMins" type="s:int" use="required" />
+ </s:complexType>
+ <s:complexType name="ArrayOfEmailTarget">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="EmailTarget" nillable="true" type="EmailTarget" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="EmailTarget">
+ <s:attribute name="address" type="s:string" />
+ </s:complexType>
+ <s:simpleType name="ReportFormatType">
+ <s:restriction base="s:string">
+ <s:enumeration value="eBarChartTestByNode" />
+ </s:restriction>
+ </s:simpleType>
+ <s:simpleType name="ReportDeliveryType">
+ <s:restriction base="s:string">
+ <s:enumeration value="eHTML" />
+ </s:restriction>
+ </s:simpleType>
+ <s:element name="ProvisioningOrderResponse" type="ProvisioningOrderResponse" />
+ <s:complexType name="ProvisioningOrderResponse">
+ <s:complexContent mixed="false">
+ <s:extension base="CommonServiceResponse">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="MonitorOrderResponses" type="ArrayOfMonitorOrderResponse" />
+ <s:element minOccurs="0" maxOccurs="1" name="ReportOrderResponses" type="ArrayOfReportOrderResponse" />
+ </s:sequence>
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="groupId" type="s:int" use="required" />
+ </s:extension>
+ </s:complexContent>
+ </s:complexType>
+ <s:complexType name="CommonServiceResponse">
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="status" type="StatusType" />
+ <s:element minOccurs="0" maxOccurs="1" name="errorMessage" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ <s:simpleType name="StatusType">
+ <s:restriction base="s:string">
+ <s:enumeration value="SUCCESS" />
+ <s:enumeration value="FAILED" />
+ </s:restriction>
+ </s:simpleType>
+ <s:complexType name="ReportOrderResponse">
+ <s:complexContent mixed="false">
+ <s:extension base="CommonServiceResponse">
+ <s:attribute name="name" type="s:string" />
+ </s:extension>
+ </s:complexContent>
+ </s:complexType>
+ <s:complexType name="MonitorOrderResponse">
+ <s:complexContent mixed="false">
+ <s:extension base="CommonServiceResponse">
+ <s:attribute name="monitorId" type="s:int" use="required" />
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="url" type="s:string" />
+ </s:extension>
+ </s:complexContent>
+ </s:complexType>
+ <s:complexType name="ArrayOfMonitorOrderResponse">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="MonitorOrderResponse" nillable="true" type="MonitorOrderResponse" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="ArrayOfReportOrderResponse">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="ReportOrderResponse" nillable="true" type="ReportOrderResponse" />
+ </s:sequence>
+ </s:complexType>
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="ProvisionMonitorsSoapIn">
+ <wsdl:part name="parameters" element="tns:ProvisionMonitors" />
+ </wsdl:message>
+ <wsdl:message name="ProvisionMonitorsSoapOut">
+ <wsdl:part name="parameters" element="tns:ProvisionMonitorsResponse" />
+ </wsdl:message>
+ <wsdl:portType name="ProvisioningServiceSoap">
+ <wsdl:operation name="ProvisionMonitors">
+ <wsdl:input message="tns:ProvisionMonitorsSoapIn" />
+ <wsdl:output message="tns:ProvisionMonitorsSoapOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="ProvisioningServiceSoap" type="tns:ProvisioningServiceSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="ProvisionMonitors">
+ <soap:operation soapAction="http://www.gomeznetworks.com/webservices/ProvisionMonitors" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="ProvisioningService">
+ <wsdl:port name="ProvisioningServiceSoap" binding="tns:ProvisioningServiceSoap">
+ <soap:address location="test://" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/ext/soap/tests/bugs/bug54911.phpt b/ext/soap/tests/bugs/bug54911.phpt
new file mode 100644
index 000000000..da57383ac
--- /dev/null
+++ b/ext/soap/tests/bugs/bug54911.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #54911 (Access to a undefined member in inherit SoapClient may cause Segmentation Fault)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+ class XSoapClient extends SoapClient {
+ function __doRequest($request, $location, $action, $version, $one_way=false) {
+ echo self::$crash;
+ }
+ }
+ $client = new XSoapClient(null, array('uri'=>'', 'location'=>''));
+ $client->__soapCall('', array());
+?>
+--EXPECTF--
+Fatal error: Uncaught SoapFault exception: [Client] Access to undeclared static property: XSoapClient::$crash in %sbug54911.php:4
+Stack trace:
+#0 %sbug54911.php(4): XSoapClient::__doRequest()
+#1 [internal function]: XSoapClient->__doRequest('<?xml version="...', '', '#', 1, 0)
+#2 %sbug54911.php(8): SoapClient->__soapCall('', Array)
+#3 {main}
+ thrown in %sbug54911.php on line 4 \ No newline at end of file
diff --git a/ext/soap/tests/schema/schema064.phpt b/ext/soap/tests/schema/schema064.phpt
index 53e1b257b..899a2938f 100644
--- a/ext/soap/tests/schema/schema064.phpt
+++ b/ext/soap/tests/schema/schema064.phpt
@@ -1,7 +1,11 @@
--TEST--
SOAP XML Schema 64: standard date/time types
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
+ die('skip, windows has different TZ format');
+}
+require_once('skipif.inc'); ?>
--FILE--
<?php
include "test_schema.inc";
diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h
index c067532de..c599ab7e7 100644
--- a/ext/sockets/php_sockets.h
+++ b/ext/sockets/php_sockets.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -22,7 +22,7 @@
#ifndef PHP_SOCKETS_H
#define PHP_SOCKETS_H
-/* $Id: php_sockets.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sockets.h 321634 2012-01-01 13:15:04Z felipe $ */
#if HAVE_SOCKETS
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index dab8e3840..c11bcc730 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sockets.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: sockets.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -884,7 +884,7 @@ PHP_FUNCTION(socket_accept)
zval *arg1;
php_socket *php_sock, *new_sock;
php_sockaddr_storage sa;
- socklen_t sa_len = sizeof(sa);
+ socklen_t php_sa_len = sizeof(sa);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg1) == FAILURE) {
return;
@@ -892,7 +892,7 @@ PHP_FUNCTION(socket_accept)
ZEND_FETCH_RESOURCE(php_sock, php_socket *, &arg1, -1, le_socket_name, le_socket);
- if (!php_accept_connect(php_sock, &new_sock, (struct sockaddr*)&sa, &sa_len TSRMLS_CC)) {
+ if (!php_accept_connect(php_sock, &new_sock, (struct sockaddr*)&sa, &php_sa_len TSRMLS_CC)) {
RETURN_FALSE;
}
diff --git a/ext/sockets/tests/socket_strerror.phpt b/ext/sockets/tests/socket_strerror.phpt
index 52e7a0a48..7985fadba 100644
--- a/ext/sockets/tests/socket_strerror.phpt
+++ b/ext/sockets/tests/socket_strerror.phpt
@@ -5,11 +5,11 @@ Florian Anderiasch
fa@php.net
--SKIPIF--
<?php
- if (!extension_loaded('sockets')) {
+ if (!extension_loaded('sockets') || !function_exists('socket_strerror')) {
die('skip sockets extension not available.');
}
- if (!stristr(PHP_OS, "linux") {
- die('skip - test validtes linux error strings only.');
+ if (!stristr(PHP_OS, "Linux")) {
+ die('skip - test validates linux error strings only.');
}
?>
--FILE--
diff --git a/ext/sockets/unix_socket_constants.h b/ext/sockets/unix_socket_constants.h
index cf3efad2d..9f0218391 100644
--- a/ext/sockets/unix_socket_constants.h
+++ b/ext/sockets/unix_socket_constants.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: unix_socket_constants.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: unix_socket_constants.h 321634 2012-01-01 13:15:04Z felipe $ */
/* This file is to be included by sockets.c */
diff --git a/ext/sockets/win32_socket_constants.h b/ext/sockets/win32_socket_constants.h
index 34d106994..3823f9c5a 100644
--- a/ext/sockets/win32_socket_constants.h
+++ b/ext/sockets/win32_socket_constants.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: win32_socket_constants.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: win32_socket_constants.h 321634 2012-01-01 13:15:04Z felipe $ */
/* This file is to be included by sockets.c */
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 8e172efde..1ce09fe04 100755
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_spl.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -406,6 +406,7 @@ PHP_FUNCTION(spl_autoload_call)
zend_exception_save(TSRMLS_C);
if (retval) {
zval_ptr_dtor(&retval);
+ retval = NULL;
}
if (zend_hash_exists(EG(class_table), lc_name, class_name_len + 1)) {
break;
diff --git a/ext/spl/php_spl.h b/ext/spl/php_spl.h
index bafaf53d4..fb0765a81 100755
--- a/ext/spl/php_spl.h
+++ b/ext/spl/php_spl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 be24d48ed..c6cef638c 100755
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_array.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: spl_array.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -77,6 +77,7 @@ typedef struct _spl_array_object {
php_serialize_data_t *serialize_data;
php_unserialize_data_t *unserialize_data;
HashTable *debug_info;
+ unsigned char nApplyCount;
} spl_array_object;
static inline HashTable *spl_array_get_hash_table(spl_array_object* intern, int check_std_props TSRMLS_DC) { /* {{{ */
@@ -728,8 +729,16 @@ SPL_METHOD(Array, getArrayCopy)
static HashTable *spl_array_get_properties(zval *object TSRMLS_DC) /* {{{ */
{
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
+ HashTable *result;
- return spl_array_get_hash_table(intern, 1 TSRMLS_CC);
+ if (intern->nApplyCount > 1) {
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "Nesting level too deep - recursive dependency?");
+ }
+
+ intern->nApplyCount++;
+ result = spl_array_get_hash_table(intern, 1 TSRMLS_CC);
+ intern->nApplyCount--;
+ return result;
} /* }}} */
static HashTable* spl_array_get_debug_info(zval *obj, int *is_temp TSRMLS_DC) /* {{{ */
diff --git a/ext/spl/spl_array.h b/ext/spl/spl_array.h
index 90b8e6629..b2280e613 100755
--- a/ext/spl/spl_array.h
+++ b/ext/spl/spl_array.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_array.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_array.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_ARRAY_H
#define SPL_ARRAY_H
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index b7560915c..76183c550 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: spl_directory.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -1215,7 +1215,10 @@ SPL_METHOD(SplFileInfo, getLinkTarget)
zend_replace_error_handling(EH_THROW, spl_ce_RuntimeException, &error_handling TSRMLS_CC);
#if defined(PHP_WIN32) || HAVE_SYMLINK
- if (!IS_ABSOLUTE_PATH(intern->file_name, intern->file_name_len)) {
+ if (intern->file_name == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty filename");
+ RETURN_FALSE;
+ } else if (!IS_ABSOLUTE_PATH(intern->file_name, intern->file_name_len)) {
char expanded_path[MAXPATHLEN];
/* TODO: Fix expand_filepath to do not resolve links but only expand the path
diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h
index 1d97efedb..ec31b09bb 100755
--- a/ext/spl/spl_directory.h
+++ b/ext/spl/spl_directory.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_directory.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_DIRECTORY_H
#define SPL_DIRECTORY_H
@@ -117,7 +117,7 @@ static inline spl_filesystem_object* spl_filesystem_iterator_to_object(spl_files
#define SPL_FILE_OBJECT_DROP_NEW_LINE 0x00000001 /* drop new lines */
#define SPL_FILE_OBJECT_READ_AHEAD 0x00000002 /* read on rewind/next */
-#define SPL_FILE_OBJECT_SKIP_EMPTY 0x00000006 /* skip empty lines */
+#define SPL_FILE_OBJECT_SKIP_EMPTY 0x00000004 /* skip empty lines */
#define SPL_FILE_OBJECT_READ_CSV 0x00000008 /* read via fgetcsv */
#define SPL_FILE_OBJECT_MASK 0x0000000F /* read via fgetcsv */
diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c
index 7db3885c2..3533ec4d9 100644
--- a/ext/spl/spl_dllist.c
+++ b/ext/spl/spl_dllist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_dllist.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: spl_dllist.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/spl/spl_dllist.h b/ext/spl/spl_dllist.h
index 3bb8c28f1..dec421966 100644
--- a/ext/spl/spl_dllist.h
+++ b/ext/spl/spl_dllist.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_dllist.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_dllist.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_DLLIST_H
#define SPL_DLLIST_H
diff --git a/ext/spl/spl_engine.c b/ext/spl/spl_engine.c
index 0e922c564..9273308b1 100755
--- a/ext/spl/spl_engine.c
+++ b/ext/spl/spl_engine.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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_engine.h b/ext/spl/spl_engine.h
index f6c5f5ff1..c0d044bc3 100755
--- a/ext/spl/spl_engine.h
+++ b/ext/spl/spl_engine.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_engine.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_engine.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_ENGINE_H
#define SPL_ENGINE_H
diff --git a/ext/spl/spl_exceptions.c b/ext/spl/spl_exceptions.c
index 3cdcd1f7e..fe3f4b1e1 100755
--- a/ext/spl/spl_exceptions.c
+++ b/ext/spl/spl_exceptions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_exceptions.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_exceptions.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/spl/spl_exceptions.h b/ext/spl/spl_exceptions.h
index 3f0808db7..3c9c05788 100755
--- a/ext/spl/spl_exceptions.h
+++ b/ext/spl/spl_exceptions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_exceptions.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_exceptions.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_EXCEPTIONS_H
#define SPL_EXCEPTIONS_H
diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c
index 54b457b50..ad270ca52 100644
--- a/ext/spl/spl_fixedarray.c
+++ b/ext/spl/spl_fixedarray.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_fixedarray.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: spl_fixedarray.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/spl/spl_fixedarray.h b/ext/spl/spl_fixedarray.h
index a85ddb98e..071da5449 100644
--- a/ext/spl/spl_fixedarray.h
+++ b/ext/spl/spl_fixedarray.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_fixedarray.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_fixedarray.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_FIXEDARRAY_H
#define SPL_FIXEDARRAY_H
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c
index 48481f326..2c91ba9e5 100755
--- a/ext/spl/spl_functions.c
+++ b/ext/spl/spl_functions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_functions.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_functions.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/spl/spl_functions.h b/ext/spl/spl_functions.h
index eb96ff611..f5a4195ab 100755
--- a/ext/spl/spl_functions.h
+++ b/ext/spl/spl_functions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_functions.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_functions.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FUNCTIONS_H
#define PHP_FUNCTIONS_H
diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c
index 1001b3b3c..5152ce63d 100644
--- a/ext/spl/spl_heap.c
+++ b/ext/spl/spl_heap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_heap.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_heap.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/spl/spl_heap.h b/ext/spl/spl_heap.h
index 43bba03e1..13592821f 100644
--- a/ext/spl/spl_heap.h
+++ b/ext/spl/spl_heap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_heap.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_heap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_HEAP_H
#define SPL_HEAP_H
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index 3ef0595c3..369a17905 100755
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: spl_iterators.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -1868,7 +1868,7 @@ SPL_METHOD(RegexIterator, accept)
spl_dual_it_object *intern;
char *subject, tmp[32], *result;
int subject_len, use_copy, count = 0, result_len;
- zval subject_copy, zcount, *replacement;
+ zval subject_copy, zcount, *replacement, tmp_replacement;
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1937,6 +1937,12 @@ SPL_METHOD(RegexIterator, accept)
case REGIT_MODE_REPLACE:
replacement = zend_read_property(intern->std.ce, getThis(), "replacement", sizeof("replacement")-1, 1 TSRMLS_CC);
+ if (Z_TYPE_P(replacement) != IS_STRING) {
+ tmp_replacement = *replacement;
+ zval_copy_ctor(&tmp_replacement);
+ convert_to_string(&tmp_replacement);
+ replacement = &tmp_replacement;
+ }
result = php_pcre_replace_impl(intern->u.regex.pce, subject, subject_len, replacement, 0, &result_len, -1, &count TSRMLS_CC);
if (intern->u.regex.flags & REGIT_USE_KEY) {
@@ -1951,6 +1957,10 @@ SPL_METHOD(RegexIterator, accept)
MAKE_STD_ZVAL(intern->current.data);
ZVAL_STRINGL(intern->current.data, result, result_len, 0);
}
+
+ if (replacement == &tmp_replacement) {
+ zval_dtor(replacement);
+ }
RETVAL_BOOL(count > 0);
}
diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h
index dadd3a555..95aba831a 100755
--- a/ext/spl/spl_iterators.h
+++ b/ext/spl/spl_iterators.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_iterators.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_ITERATORS_H
#define SPL_ITERATORS_H
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index b41853032..c692734fe 100755
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 The PHP Group |
+----------------------------------------------------------------------+
| This source file is SplSubject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_observer.c 308784 2011-03-01 00:13:23Z felipe $ */
+/* $Id: spl_observer.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
diff --git a/ext/spl/spl_observer.h b/ext/spl/spl_observer.h
index ef246a068..4e85ce8b2 100755
--- a/ext/spl/spl_observer.h
+++ b/ext/spl/spl_observer.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_observer.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: spl_observer.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SPL_OBSERVER_H
#define SPL_OBSERVER_H
diff --git a/ext/spl/tests/DirectoryIterator_by_reference.phpt b/ext/spl/tests/DirectoryIterator_by_reference.phpt
index 5352a5df1..06127ec37 100644
--- a/ext/spl/tests/DirectoryIterator_by_reference.phpt
+++ b/ext/spl/tests/DirectoryIterator_by_reference.phpt
@@ -5,10 +5,10 @@ Havard Eide <nucleuz@gmail.com>
#PHPTestFest2009 Norway 2009-06-09 \o/
--FILE--
<?php
-$it = new DirectoryIterator("/tmp");
+$it = new DirectoryIterator(__DIR__);
foreach( $it as &$file ) {
echo $file . "\n";
}
?>
--EXPECTF--
-Fatal error: An iterator cannot be used with foreach by reference in %s on line %d \ No newline at end of file
+Fatal error: An iterator cannot be used with foreach by reference in %s on line %d
diff --git a/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt b/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt
index 20ef3bf36..7398d4b9d 100644
--- a/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt
+++ b/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt
@@ -1,5 +1,11 @@
--TEST--
SPL: DirectoryIterator::getExtension() basic test
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die('skip.. only for Unix');
+}
+?>
--FILE--
<?php
$dir = __DIR__ . DIRECTORY_SEPARATOR . md5('DirectoryIterator::getExtension') . DIRECTORY_SEPARATOR;
diff --git a/ext/spl/tests/DirectoryIterator_getGroup_basic.phpt b/ext/spl/tests/DirectoryIterator_getGroup_basic.phpt
index 9cc9fadbe..0c75bf4c0 100644
--- a/ext/spl/tests/DirectoryIterator_getGroup_basic.phpt
+++ b/ext/spl/tests/DirectoryIterator_getGroup_basic.phpt
@@ -1,15 +1,18 @@
---TEST--
-SPL: DirectoryIterator test getGroup
---CREDITS--
+--TEST--
+SPL: DirectoryIterator test getGroup
+--SKIPIF--
+<?php
+if (posix_geteuid() == 0) die('SKIP Cannot run test as root.');
+--CREDITS--
Cesare D'Amico <cesare.damico@gruppovolta.it>
Andrea Giorgini <agiorg@gmail.com>
Filippo De Santis <fd@ideato.it>
Daniel Londero <daniel.londero@gmail.com>
Francesco Trucchia <ft@ideato.it>
Jacopo Romei <jacopo@sviluppoagile.it>
-#Test Fest Cesena (Italy) on 2009-06-20
---FILE--
-<?php
+#Test Fest Cesena (Italy) on 2009-06-20
+--FILE--
+<?php
$dirname = 'DirectoryIterator_getGroup_basic';
mkdir($dirname);
$dir = new DirectoryIterator($dirname);
@@ -21,6 +24,6 @@ var_dump($expected == $actual);
<?php
$dirname = 'DirectoryIterator_getGroup_basic';
rmdir($dirname);
-?>
---EXPECTF--
+?>
+--EXPECTF--
bool(true)
diff --git a/ext/spl/tests/DirectoryIterator_getOwner_basic.phpt b/ext/spl/tests/DirectoryIterator_getOwner_basic.phpt
index c5e9f7c2c..a1092c2fe 100644
--- a/ext/spl/tests/DirectoryIterator_getOwner_basic.phpt
+++ b/ext/spl/tests/DirectoryIterator_getOwner_basic.phpt
@@ -1,5 +1,8 @@
--TEST--
SPL: DirectoryIterator test getOwner
+--SKIPIF--
+<?php
+if (posix_geteuid() == 0) die('SKIP Cannot run test as root.');
--CREDITS--
Cesare D'Amico <cesare.damico@gruppovolta.it>
Andrea Giorgini <agiorg@gmail.com>
diff --git a/ext/spl/tests/SplFileInfo_getGroup_basic.phpt b/ext/spl/tests/SplFileInfo_getGroup_basic.phpt
index c5808c57d..d27993563 100644
--- a/ext/spl/tests/SplFileInfo_getGroup_basic.phpt
+++ b/ext/spl/tests/SplFileInfo_getGroup_basic.phpt
@@ -10,7 +10,7 @@ Jacopo Romei <jacopo@sviluppoagile.it>
#Test Fest Cesena (Italy) on 2009-06-20
--FILE--
<?php
-$filename = basename(__FILE__, 'phpt').'tmp';
+$filename = __DIR__ . "/SplFileInfo_getGroup_basic";
touch($filename);
$fileInfo = new SplFileInfo($filename);
$expected = filegroup($filename);
@@ -19,7 +19,7 @@ var_dump($expected == $actual);
?>
--CLEAN--
<?php
-$filename = basename(__FILE__, 'phpt').'tmp';
+$filename = __DIR__ . "/SplFileInfo_getGroup_basic";
unlink($filename);
?>
--EXPECTF--
diff --git a/ext/spl/tests/SplFileInfo_getOwner_basic.phpt b/ext/spl/tests/SplFileInfo_getOwner_basic.phpt
index 790dcc69b..3df8e4858 100644
--- a/ext/spl/tests/SplFileInfo_getOwner_basic.phpt
+++ b/ext/spl/tests/SplFileInfo_getOwner_basic.phpt
@@ -10,7 +10,7 @@ Jacopo Romei <jacopo@sviluppoagile.it>
#Test Fest Cesena (Italy) on 2009-06-20
--FILE--
<?php
-$filename = basename(__FILE__, 'phpt').'tmp';
+$filename = __DIR__ . "/SplFileInfo_getOwner_basic";
touch($filename);
$fileInfo = new SplFileInfo($filename);
$expected = fileowner($filename);
@@ -19,7 +19,7 @@ var_dump($expected == $actual);
?>
--CLEAN--
<?php
-$filename = basename(__FILE__, 'phpt').'tmp';
+$filename = __DIR__ . "/SplFileInfo_getOwner_basic";
unlink($filename);
?>
--EXPECTF--
diff --git a/ext/spl/tests/bug53071.phpt b/ext/spl/tests/bug53071.phpt
index b0ea3aad8..c2c2605e2 100644
--- a/ext/spl/tests/bug53071.phpt
+++ b/ext/spl/tests/bug53071.phpt
@@ -1,26 +1,27 @@
---TEST--
-Bug #53071 (Usage of SPLObjectStorage defeats gc_collect_cycles)
---FILE--
-<?php
-class myClass
-{
- public $member;
-}
-function LimitedScope()
-{
- $myA = new myClass();
- $myB = new SplObjectStorage();
- $myC = new myClass();
- $myC->member = $myA; // myC has a referece to myA
- $myB->Attach($myC); // myB attaches myC
- $myA->member = $myB; // myA has myB, comleting the cycle
-}
-LimitedScope();
-var_dump(gc_collect_cycles());
-
-echo "Done.\n";
-
-?>
---EXPECTF--
-int(5)
-Done.
+--TEST--
+Bug #53071 (Usage of SPLObjectStorage defeats gc_collect_cycles)
+--FILE--
+<?php
+gc_enable();
+class myClass
+{
+ public $member;
+}
+function LimitedScope()
+{
+ $myA = new myClass();
+ $myB = new SplObjectStorage();
+ $myC = new myClass();
+ $myC->member = $myA; // myC has a referece to myA
+ $myB->Attach($myC); // myB attaches myC
+ $myA->member = $myB; // myA has myB, comleting the cycle
+}
+LimitedScope();
+var_dump(gc_collect_cycles());
+
+echo "Done.\n";
+
+?>
+--EXPECTF--
+int(5)
+Done.
diff --git a/ext/spl/tests/bug54304.phpt b/ext/spl/tests/bug54304.phpt
new file mode 100644
index 000000000..32cbe486a
--- /dev/null
+++ b/ext/spl/tests/bug54304.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #54304 (Setting replacement value for RegexIterator doesn't work)
+--FILE--
+<?php
+class foo extends ArrayIterator {
+ public function __construct( ) {
+ parent::__construct(array(
+ 'test3'=>'test999'));
+ }
+}
+
+$h = new foo;
+$i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
+$i->replacement = 42;
+var_dump($i->replacement);
+foreach ($i as $name=>$value) {
+ var_dump($name, $value);
+}
+var_dump($i->replacement);
+?>
+--EXPECT--
+int(42)
+string(5) "test3"
+string(2) "42"
+int(42)
+
diff --git a/ext/spl/tests/bug54971.phpt b/ext/spl/tests/bug54971.phpt
index 166613b43..07a470627 100644
--- a/ext/spl/tests/bug54971.phpt
+++ b/ext/spl/tests/bug54971.phpt
@@ -1,5 +1,9 @@
--TEST--
Bug #54971 (Wrong result when using iterator_to_array with use_keys on true)
+--SKIPIF--
+<?php
+if (!extension_loaded('dom')) die("skip this test needs --enable-dom");
+?>
--FILE--
<?php
diff --git a/ext/spl/tests/bug60082.phpt b/ext/spl/tests/bug60082.phpt
new file mode 100755
index 000000000..7aff2c416
--- /dev/null
+++ b/ext/spl/tests/bug60082.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #60082 (100% CPU / when using references with ArrayObject(&$ref))
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+if ((stristr(PHP_OS, 'freebsd'))) {
+ die('skip.. this test causes the run-tests.php to hang on Freebsd, see #60186');
+}
+?>
+--FILE--
+<?php
+$test = array();
+$test = new ArrayObject(&$test);
+$test['a'] = $test['b'];
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Deprecated: Call-time pass-by-reference has been deprecated in %sbug60082.php on line %d
+
+Fatal error: main(): Array was modified outside object and made a recursive object in %sbug60082.php on line %d
diff --git a/ext/spl/tests/spl_autoload_call_basic.phpt b/ext/spl/tests/spl_autoload_call_basic.phpt
new file mode 100644
index 000000000..2bd65c22b
--- /dev/null
+++ b/ext/spl/tests/spl_autoload_call_basic.phpt
@@ -0,0 +1,18 @@
+--TEST--
+spl_autoload_call() function - basic test for spl_autoload_call()
+--CREDITS--
+Jean-Marc Fontaine <jean-marc.fontaine@alterway.fr>
+# Alter Way Contribution Day 2011
+--FILE--
+<?php
+function customAutolader($class) {
+ require_once __DIR__ . '/testclass.class.inc';
+}
+spl_autoload_register('customAutolader');
+
+spl_autoload_call('TestClass');
+var_dump(class_exists('TestClass', false));
+?>
+--EXPECTF--
+%stestclass.class.inc
+bool(true)
diff --git a/ext/sqlite/libsqlite/src/parse.c b/ext/sqlite/libsqlite/src/parse.c
index 64ec3457d..ed00220ed 100644
--- a/ext/sqlite/libsqlite/src/parse.c
+++ b/ext/sqlite/libsqlite/src/parse.c
@@ -1,10 +1,10 @@
/* Driver template for the LEMON parser generator.
** The author disclaims copyright to this source code.
*/
-/* First off, code is include which follows the "include" declaration
-** in the input file. */
+/* First off, code is included that follows the "include" declaration
+** in the input grammar file. */
#include <stdio.h>
-#line 33 "ext/sqlite/libsqlite/src/parse.y"
+#line 33 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
#include "sqliteInt.h"
#include "parse.h"
@@ -29,7 +29,7 @@ struct LimitVal {
*/
struct TrigEvent { int a; IdList * b; };
-#line 34 "ext/sqlite/libsqlite/src/parse.c"
+#line 33 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
/* Next is all token values, in a form suitable for use by makeheaders.
** This section will be null unless lemon is run with the -m switch.
*/
@@ -68,7 +68,8 @@ struct TrigEvent { int a; IdList * b; };
** This is typically a union of many types, one of
** which is sqliteParserTOKENTYPE. The entry in the union
** for base tokens is called "yy0".
-** YYSTACKDEPTH is the maximum depth of the parser's stack.
+** YYSTACKDEPTH is the maximum depth of the parser's stack. If
+** zero the stack is dynamically sized using realloc()
** sqliteParserARG_SDECL A static variable declaration for the %extra_argument
** sqliteParserARG_PDECL A parameter declaration for the %extra_argument
** sqliteParserARG_STORE Code to store %extra_argument into yypParser
@@ -83,6 +84,7 @@ struct TrigEvent { int a; IdList * b; };
#define YYACTIONTYPE unsigned short int
#define sqliteParserTOKENTYPE Token
typedef union {
+ int yyinit;
sqliteParserTOKENTYPE yy0;
TriggerStep * yy19;
struct LimitVal yy124;
@@ -90,29 +92,44 @@ typedef union {
Expr * yy182;
Expr* yy242;
struct TrigEvent yy290;
- Token yy298;
SrcList* yy307;
IdList* yy320;
ExprList* yy322;
int yy372;
struct {int value; int mask;} yy407;
- int yy441;
} YYMINORTYPE;
+#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
+#endif
#define sqliteParserARG_SDECL Parse *pParse;
#define sqliteParserARG_PDECL ,Parse *pParse
#define sqliteParserARG_FETCH Parse *pParse = yypParser->pParse
#define sqliteParserARG_STORE yypParser->pParse = pParse
#define YYNSTATE 563
#define YYNRULE 293
-#define YYERRORSYMBOL 131
-#define YYERRSYMDT yy441
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
-/* Next are that tables used to determine what action to take based on the
+/* The yyzerominor constant is used to initialize instances of
+** YYMINORTYPE objects to zero. */
+static const YYMINORTYPE yyzerominor = { 0 };
+
+/* Define the yytestcase() macro to be a no-op if is not already defined
+** otherwise.
+**
+** Applications can choose to define yytestcase() in the %include section
+** to a macro that can assist in verifying code coverage. For production
+** code the yytestcase() macro should be turned off. But it is useful
+** for testing.
+*/
+#ifndef yytestcase
+# define yytestcase(X)
+#endif
+
+
+/* Next are the tables used to determine what action to take based on the
** current state and lookahead token. These tables are used to implement
** functions that take a state number and lookahead value and return an
** action integer.
@@ -159,455 +176,386 @@ typedef union {
** shifting non-terminals after a reduce.
** yy_default[] Default action for each state.
*/
+#define YY_ACTTAB_COUNT (1143)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 264, 5, 262, 119, 123, 117, 121, 129, 131, 133,
- /* 10 */ 135, 144, 146, 148, 150, 152, 154, 568, 106, 106,
- /* 20 */ 143, 857, 1, 562, 3, 142, 129, 131, 133, 135,
- /* 30 */ 144, 146, 148, 150, 152, 154, 174, 103, 8, 115,
- /* 40 */ 104, 139, 127, 125, 156, 161, 157, 162, 166, 119,
- /* 50 */ 123, 117, 121, 129, 131, 133, 135, 144, 146, 148,
- /* 60 */ 150, 152, 154, 31, 361, 392, 263, 143, 363, 369,
- /* 70 */ 374, 97, 142, 148, 150, 152, 154, 68, 75, 377,
- /* 80 */ 167, 64, 218, 46, 20, 289, 115, 104, 139, 127,
- /* 90 */ 125, 156, 161, 157, 162, 166, 119, 123, 117, 121,
- /* 100 */ 129, 131, 133, 135, 144, 146, 148, 150, 152, 154,
- /* 110 */ 193, 41, 336, 563, 44, 54, 60, 62, 308, 331,
- /* 120 */ 175, 20, 560, 561, 572, 333, 640, 18, 359, 144,
- /* 130 */ 146, 148, 150, 152, 154, 143, 181, 179, 303, 18,
- /* 140 */ 142, 84, 86, 20, 177, 66, 67, 111, 21, 22,
- /* 150 */ 112, 105, 83, 792, 115, 104, 139, 127, 125, 156,
- /* 160 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131,
- /* 170 */ 133, 135, 144, 146, 148, 150, 152, 154, 790, 560,
- /* 180 */ 561, 46, 13, 113, 183, 21, 22, 534, 361, 2,
- /* 190 */ 3, 14, 363, 369, 374, 338, 361, 690, 544, 542,
- /* 200 */ 363, 369, 374, 377, 836, 143, 15, 21, 22, 16,
- /* 210 */ 142, 377, 44, 54, 60, 62, 308, 331, 396, 535,
- /* 220 */ 17, 9, 191, 333, 115, 104, 139, 127, 125, 156,
- /* 230 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131,
- /* 240 */ 133, 135, 144, 146, 148, 150, 152, 154, 571, 230,
- /* 250 */ 340, 343, 143, 20, 536, 537, 538, 142, 402, 337,
- /* 260 */ 398, 339, 357, 68, 346, 347, 32, 64, 266, 391,
- /* 270 */ 37, 115, 104, 139, 127, 125, 156, 161, 157, 162,
- /* 280 */ 166, 119, 123, 117, 121, 129, 131, 133, 135, 144,
- /* 290 */ 146, 148, 150, 152, 154, 839, 193, 651, 291, 298,
- /* 300 */ 300, 221, 357, 43, 173, 689, 175, 251, 330, 36,
- /* 310 */ 37, 106, 232, 40, 335, 58, 137, 21, 22, 330,
- /* 320 */ 411, 143, 181, 179, 47, 59, 142, 358, 390, 174,
- /* 330 */ 177, 66, 67, 111, 448, 49, 112, 105, 583, 213,
- /* 340 */ 115, 104, 139, 127, 125, 156, 161, 157, 162, 166,
- /* 350 */ 119, 123, 117, 121, 129, 131, 133, 135, 144, 146,
- /* 360 */ 148, 150, 152, 154, 306, 301, 106, 249, 259, 113,
- /* 370 */ 183, 793, 70, 253, 281, 219, 20, 106, 20, 11,
- /* 380 */ 106, 482, 454, 444, 299, 143, 169, 10, 171, 172,
- /* 390 */ 142, 169, 73, 171, 172, 103, 688, 69, 174, 169,
- /* 400 */ 252, 171, 172, 12, 115, 104, 139, 127, 125, 156,
- /* 410 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131,
- /* 420 */ 133, 135, 144, 146, 148, 150, 152, 154, 95, 237,
- /* 430 */ 313, 20, 143, 295, 244, 424, 169, 142, 171, 172,
- /* 440 */ 21, 22, 21, 22, 219, 386, 316, 323, 325, 837,
- /* 450 */ 19, 115, 104, 139, 127, 125, 156, 161, 157, 162,
- /* 460 */ 166, 119, 123, 117, 121, 129, 131, 133, 135, 144,
- /* 470 */ 146, 148, 150, 152, 154, 106, 661, 20, 264, 143,
- /* 480 */ 262, 844, 315, 169, 142, 171, 172, 333, 38, 842,
- /* 490 */ 10, 356, 348, 184, 421, 21, 22, 282, 115, 104,
- /* 500 */ 139, 127, 125, 156, 161, 157, 162, 166, 119, 123,
- /* 510 */ 117, 121, 129, 131, 133, 135, 144, 146, 148, 150,
- /* 520 */ 152, 154, 69, 254, 262, 251, 143, 639, 663, 35,
- /* 530 */ 65, 142, 726, 313, 283, 259, 185, 417, 419, 418,
- /* 540 */ 284, 21, 22, 690, 263, 115, 104, 139, 127, 125,
- /* 550 */ 156, 161, 157, 162, 166, 119, 123, 117, 121, 129,
- /* 560 */ 131, 133, 135, 144, 146, 148, 150, 152, 154, 256,
- /* 570 */ 20, 791, 424, 143, 169, 52, 171, 172, 142, 169,
- /* 580 */ 24, 171, 172, 247, 53, 315, 26, 169, 263, 171,
- /* 590 */ 172, 253, 115, 164, 139, 127, 125, 156, 161, 157,
- /* 600 */ 162, 166, 119, 123, 117, 121, 129, 131, 133, 135,
- /* 610 */ 144, 146, 148, 150, 152, 154, 426, 349, 252, 425,
- /* 620 */ 143, 262, 575, 297, 591, 142, 169, 296, 171, 172,
- /* 630 */ 169, 471, 171, 172, 21, 22, 427, 221, 91, 115,
- /* 640 */ 227, 139, 127, 125, 156, 161, 157, 162, 166, 119,
- /* 650 */ 123, 117, 121, 129, 131, 133, 135, 144, 146, 148,
- /* 660 */ 150, 152, 154, 388, 312, 106, 89, 143, 720, 376,
- /* 670 */ 387, 170, 142, 487, 666, 248, 320, 216, 319, 217,
- /* 680 */ 28, 459, 30, 305, 189, 263, 209, 104, 139, 127,
- /* 690 */ 125, 156, 161, 157, 162, 166, 119, 123, 117, 121,
- /* 700 */ 129, 131, 133, 135, 144, 146, 148, 150, 152, 154,
- /* 710 */ 106, 106, 809, 494, 143, 489, 106, 816, 33, 142,
- /* 720 */ 395, 234, 273, 217, 274, 420, 20, 545, 114, 481,
- /* 730 */ 137, 429, 576, 321, 116, 139, 127, 125, 156, 161,
- /* 740 */ 157, 162, 166, 119, 123, 117, 121, 129, 131, 133,
- /* 750 */ 135, 144, 146, 148, 150, 152, 154, 7, 322, 23,
- /* 760 */ 25, 27, 394, 68, 415, 416, 10, 64, 197, 477,
- /* 770 */ 577, 533, 266, 548, 578, 831, 276, 201, 520, 4,
- /* 780 */ 6, 245, 430, 557, 29, 266, 491, 106, 441, 497,
- /* 790 */ 21, 22, 205, 168, 443, 195, 193, 531, 276, 448,
- /* 800 */ 276, 808, 267, 272, 529, 174, 175, 318, 440, 341,
- /* 810 */ 344, 106, 342, 345, 69, 286, 68, 582, 69, 69,
- /* 820 */ 64, 540, 181, 179, 541, 328, 302, 366, 217, 118,
- /* 830 */ 177, 66, 67, 111, 34, 143, 112, 105, 445, 510,
- /* 840 */ 142, 215, 278, 800, 467, 276, 498, 503, 444, 193,
- /* 850 */ 106, 219, 486, 443, 42, 73, 231, 73, 45, 175,
- /* 860 */ 449, 39, 225, 229, 278, 451, 278, 68, 174, 113,
- /* 870 */ 183, 64, 371, 55, 106, 181, 179, 292, 69, 276,
- /* 880 */ 276, 69, 48, 177, 66, 67, 111, 224, 276, 112,
- /* 890 */ 105, 106, 481, 393, 106, 106, 63, 106, 106, 106,
- /* 900 */ 193, 653, 106, 467, 233, 51, 380, 437, 526, 120,
- /* 910 */ 175, 278, 122, 124, 219, 126, 128, 130, 69, 453,
- /* 920 */ 132, 106, 113, 183, 451, 106, 181, 179, 159, 106,
- /* 930 */ 106, 106, 518, 106, 177, 66, 67, 111, 106, 134,
- /* 940 */ 112, 105, 422, 136, 106, 278, 278, 138, 141, 145,
- /* 950 */ 720, 147, 106, 329, 275, 274, 149, 106, 852, 158,
- /* 960 */ 106, 106, 151, 106, 106, 351, 106, 352, 106, 464,
- /* 970 */ 153, 106, 106, 113, 183, 155, 106, 106, 163, 165,
- /* 980 */ 106, 176, 178, 106, 180, 106, 182, 106, 401, 190,
- /* 990 */ 192, 106, 106, 293, 210, 212, 106, 367, 214, 274,
- /* 1000 */ 372, 226, 274, 228, 381, 241, 274, 106, 106, 246,
- /* 1010 */ 280, 290, 106, 69, 375, 438, 472, 274, 422, 832,
- /* 1020 */ 106, 73, 474, 73, 458, 412, 462, 480, 464, 478,
- /* 1030 */ 466, 690, 515, 519, 475, 478, 516, 50, 479, 221,
- /* 1040 */ 690, 221, 56, 57, 61, 592, 71, 69, 593, 73,
- /* 1050 */ 72, 74, 245, 242, 93, 81, 76, 69, 77, 240,
- /* 1060 */ 78, 82, 79, 245, 85, 554, 80, 88, 87, 90,
- /* 1070 */ 92, 94, 96, 102, 100, 99, 101, 107, 109, 160,
- /* 1080 */ 154, 667, 98, 508, 108, 668, 110, 220, 211, 669,
- /* 1090 */ 137, 140, 188, 194, 186, 196, 187, 199, 198, 200,
- /* 1100 */ 203, 204, 202, 207, 206, 208, 221, 223, 222, 235,
- /* 1110 */ 236, 239, 238, 217, 250, 258, 243, 261, 279, 270,
- /* 1120 */ 271, 255, 257, 260, 269, 265, 285, 294, 277, 268,
- /* 1130 */ 287, 304, 309, 307, 327, 312, 288, 354, 389, 314,
- /* 1140 */ 364, 365, 370, 378, 379, 382, 310, 49, 311, 362,
- /* 1150 */ 368, 373, 317, 324, 326, 332, 350, 355, 383, 400,
- /* 1160 */ 353, 397, 399, 403, 404, 334, 405, 406, 407, 384,
- /* 1170 */ 413, 409, 824, 414, 360, 385, 829, 423, 410, 431,
- /* 1180 */ 428, 432, 830, 433, 434, 436, 439, 798, 799, 447,
- /* 1190 */ 442, 450, 727, 728, 446, 823, 452, 838, 455, 445,
- /* 1200 */ 456, 457, 408, 435, 460, 461, 463, 840, 465, 468,
- /* 1210 */ 470, 469, 476, 841, 483, 485, 843, 660, 662, 493,
- /* 1220 */ 806, 496, 473, 849, 499, 719, 501, 484, 488, 490,
- /* 1230 */ 492, 502, 504, 495, 500, 507, 505, 506, 509, 722,
- /* 1240 */ 513, 511, 512, 514, 517, 725, 528, 522, 524, 525,
- /* 1250 */ 527, 523, 807, 530, 810, 532, 811, 812, 813, 814,
- /* 1260 */ 817, 819, 539, 820, 818, 815, 521, 543, 546, 552,
- /* 1270 */ 556, 550, 850, 547, 549, 851, 555, 558, 551, 855,
- /* 1280 */ 553, 559,
+ /* 0 */ 186, 561, 483, 69, 67, 70, 68, 64, 63, 62,
+ /* 10 */ 61, 58, 57, 56, 55, 54, 53, 181, 180, 179,
+ /* 20 */ 514, 421, 334, 420, 468, 515, 64, 63, 62, 61,
+ /* 30 */ 58, 57, 56, 55, 54, 53, 9, 423, 422, 71,
+ /* 40 */ 72, 129, 65, 66, 513, 510, 305, 52, 138, 69,
+ /* 50 */ 67, 70, 68, 64, 63, 62, 61, 58, 57, 56,
+ /* 60 */ 55, 54, 53, 448, 469, 175, 482, 514, 470, 344,
+ /* 70 */ 342, 36, 515, 58, 57, 56, 55, 54, 53, 8,
+ /* 80 */ 341, 281, 285, 307, 437, 178, 71, 72, 129, 65,
+ /* 90 */ 66, 513, 510, 305, 52, 138, 69, 67, 70, 68,
+ /* 100 */ 64, 63, 62, 61, 58, 57, 56, 55, 54, 53,
+ /* 110 */ 130, 362, 360, 508, 507, 267, 551, 436, 298, 297,
+ /* 120 */ 369, 368, 50, 128, 543, 29, 266, 449, 537, 447,
+ /* 130 */ 591, 528, 442, 441, 187, 132, 514, 536, 47, 48,
+ /* 140 */ 472, 515, 122, 427, 331, 409, 49, 371, 370, 518,
+ /* 150 */ 328, 363, 517, 520, 45, 71, 72, 129, 65, 66,
+ /* 160 */ 513, 510, 305, 52, 138, 69, 67, 70, 68, 64,
+ /* 170 */ 63, 62, 61, 58, 57, 56, 55, 54, 53, 185,
+ /* 180 */ 550, 549, 512, 175, 467, 516, 18, 344, 342, 36,
+ /* 190 */ 194, 175, 320, 230, 231, 344, 342, 36, 341, 56,
+ /* 200 */ 55, 54, 53, 212, 531, 514, 341, 544, 551, 3,
+ /* 210 */ 515, 551, 362, 551, 508, 507, 184, 132, 195, 213,
+ /* 220 */ 551, 309, 348, 42, 71, 72, 129, 65, 66, 513,
+ /* 230 */ 510, 305, 52, 138, 69, 67, 70, 68, 64, 63,
+ /* 240 */ 62, 61, 58, 57, 56, 55, 54, 53, 243, 197,
+ /* 250 */ 282, 73, 268, 373, 264, 372, 183, 241, 2, 358,
+ /* 260 */ 7, 563, 551, 240, 551, 471, 385, 201, 356, 514,
+ /* 270 */ 379, 378, 550, 549, 515, 550, 549, 550, 549, 500,
+ /* 280 */ 506, 17, 172, 354, 550, 549, 359, 392, 71, 72,
+ /* 290 */ 129, 65, 66, 513, 510, 305, 52, 138, 69, 67,
+ /* 300 */ 70, 68, 64, 63, 62, 61, 58, 57, 56, 55,
+ /* 310 */ 54, 53, 486, 365, 416, 551, 514, 417, 493, 494,
+ /* 320 */ 17, 515, 169, 478, 171, 80, 550, 549, 550, 549,
+ /* 330 */ 466, 108, 17, 144, 332, 71, 72, 129, 65, 66,
+ /* 340 */ 513, 510, 305, 52, 138, 69, 67, 70, 68, 64,
+ /* 350 */ 63, 62, 61, 58, 57, 56, 55, 54, 53, 446,
+ /* 360 */ 182, 488, 445, 514, 366, 249, 490, 362, 515, 508,
+ /* 370 */ 507, 429, 463, 444, 375, 338, 443, 12, 430, 550,
+ /* 380 */ 549, 592, 71, 72, 129, 65, 66, 513, 510, 305,
+ /* 390 */ 52, 138, 69, 67, 70, 68, 64, 63, 62, 61,
+ /* 400 */ 58, 57, 56, 55, 54, 53, 362, 485, 508, 507,
+ /* 410 */ 514, 459, 286, 460, 436, 515, 388, 240, 269, 387,
+ /* 420 */ 182, 426, 29, 857, 82, 377, 1, 134, 593, 71,
+ /* 430 */ 51, 129, 65, 66, 513, 510, 305, 52, 138, 69,
+ /* 440 */ 67, 70, 68, 64, 63, 62, 61, 58, 57, 56,
+ /* 450 */ 55, 54, 53, 551, 487, 177, 365, 514, 87, 483,
+ /* 460 */ 542, 450, 515, 454, 160, 80, 453, 440, 239, 176,
+ /* 470 */ 80, 238, 286, 80, 106, 458, 71, 40, 129, 65,
+ /* 480 */ 66, 513, 510, 305, 52, 138, 69, 67, 70, 68,
+ /* 490 */ 64, 63, 62, 61, 58, 57, 56, 55, 54, 53,
+ /* 500 */ 457, 393, 534, 418, 514, 186, 527, 483, 156, 515,
+ /* 510 */ 351, 323, 533, 339, 232, 80, 80, 550, 549, 46,
+ /* 520 */ 498, 44, 526, 482, 72, 129, 65, 66, 513, 510,
+ /* 530 */ 305, 52, 138, 69, 67, 70, 68, 64, 63, 62,
+ /* 540 */ 61, 58, 57, 56, 55, 54, 53, 365, 153, 300,
+ /* 550 */ 155, 514, 405, 431, 165, 404, 515, 32, 396, 13,
+ /* 560 */ 32, 86, 333, 323, 38, 106, 205, 414, 391, 390,
+ /* 570 */ 202, 482, 129, 65, 66, 513, 510, 305, 52, 138,
+ /* 580 */ 69, 67, 70, 68, 64, 63, 62, 61, 58, 57,
+ /* 590 */ 56, 55, 54, 53, 274, 309, 272, 271, 270, 23,
+ /* 600 */ 8, 301, 211, 11, 307, 418, 212, 365, 483, 31,
+ /* 610 */ 217, 498, 562, 1, 60, 219, 480, 365, 204, 321,
+ /* 620 */ 215, 154, 207, 137, 480, 93, 268, 373, 264, 372,
+ /* 630 */ 183, 241, 365, 360, 203, 106, 409, 240, 365, 207,
+ /* 640 */ 365, 145, 541, 50, 412, 365, 247, 453, 531, 302,
+ /* 650 */ 105, 135, 173, 8, 245, 170, 106, 307, 108, 47,
+ /* 660 */ 48, 346, 19, 106, 290, 289, 299, 49, 371, 370,
+ /* 670 */ 518, 304, 482, 517, 520, 158, 531, 531, 193, 800,
+ /* 680 */ 531, 498, 207, 319, 223, 231, 360, 207, 475, 283,
+ /* 690 */ 514, 162, 257, 252, 212, 515, 50, 365, 511, 303,
+ /* 700 */ 531, 557, 499, 192, 8, 475, 516, 18, 307, 498,
+ /* 710 */ 556, 365, 47, 48, 295, 93, 531, 41, 136, 207,
+ /* 720 */ 49, 371, 370, 518, 148, 555, 517, 520, 554, 89,
+ /* 730 */ 376, 560, 365, 162, 509, 214, 480, 360, 365, 553,
+ /* 740 */ 152, 322, 495, 505, 141, 212, 294, 50, 477, 531,
+ /* 750 */ 112, 284, 207, 475, 504, 288, 90, 327, 531, 516,
+ /* 760 */ 18, 207, 326, 47, 48, 531, 473, 212, 365, 531,
+ /* 770 */ 191, 49, 371, 370, 518, 365, 365, 517, 520, 293,
+ /* 780 */ 316, 503, 365, 322, 60, 475, 109, 365, 291, 190,
+ /* 790 */ 317, 365, 502, 121, 120, 365, 189, 365, 365, 407,
+ /* 800 */ 119, 365, 365, 501, 326, 118, 365, 365, 365, 117,
+ /* 810 */ 516, 18, 365, 116, 365, 126, 125, 365, 475, 124,
+ /* 820 */ 123, 365, 365, 365, 115, 114, 140, 475, 365, 365,
+ /* 830 */ 139, 365, 255, 365, 365, 254, 365, 365, 365, 253,
+ /* 840 */ 280, 107, 365, 365, 10, 365, 113, 111, 365, 279,
+ /* 850 */ 365, 278, 277, 365, 92, 104, 103, 365, 365, 365,
+ /* 860 */ 91, 102, 365, 101, 365, 365, 110, 347, 100, 379,
+ /* 870 */ 378, 99, 17, 484, 28, 98, 30, 97, 79, 131,
+ /* 880 */ 96, 465, 95, 94, 439, 14, 343, 26, 25, 340,
+ /* 890 */ 24, 174, 266, 85, 166, 292, 78, 165, 415, 164,
+ /* 900 */ 163, 22, 6, 408, 5, 77, 34, 33, 159, 16,
+ /* 910 */ 157, 151, 75, 149, 146, 15, 312, 395, 384, 313,
+ /* 920 */ 143, 20, 206, 60, 21, 273, 198, 375, 559, 548,
+ /* 930 */ 547, 546, 4, 212, 538, 261, 308, 38, 540, 530,
+ /* 940 */ 260, 39, 352, 374, 539, 535, 532, 196, 367, 210,
+ /* 950 */ 256, 259, 522, 53, 258, 521, 529, 209, 188, 43,
+ /* 960 */ 27, 37, 349, 496, 492, 452, 81, 276, 246, 275,
+ /* 970 */ 479, 244, 208, 464, 474, 451, 433, 335, 432, 413,
+ /* 980 */ 234, 35, 127, 76, 381, 858, 410, 161, 858, 199,
+ /* 990 */ 858, 858, 858, 858, 858, 858, 403, 858, 235, 858,
+ /* 1000 */ 858, 858, 329, 858, 150, 398, 858, 545, 858, 858,
+ /* 1010 */ 400, 399, 858, 224, 858, 858, 84, 147, 858, 318,
+ /* 1020 */ 265, 858, 220, 858, 858, 858, 858, 552, 74, 424,
+ /* 1030 */ 858, 523, 858, 858, 491, 476, 287, 315, 858, 83,
+ /* 1040 */ 88, 262, 463, 364, 519, 310, 382, 357, 355, 353,
+ /* 1050 */ 858, 306, 497, 481, 525, 406, 524, 242, 462, 397,
+ /* 1060 */ 434, 237, 858, 425, 337, 168, 858, 438, 461, 858,
+ /* 1070 */ 296, 200, 236, 419, 456, 383, 330, 142, 263, 361,
+ /* 1080 */ 345, 858, 455, 233, 325, 324, 489, 229, 228, 402,
+ /* 1090 */ 401, 858, 227, 226, 225, 389, 386, 222, 221, 218,
+ /* 1100 */ 314, 394, 311, 216, 558, 380, 251, 250, 133, 350,
+ /* 1110 */ 248, 858, 435, 858, 858, 858, 858, 858, 858, 858,
+ /* 1120 */ 858, 858, 428, 858, 858, 411, 858, 858, 858, 858,
+ /* 1130 */ 59, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ /* 1140 */ 167, 858, 336,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 21, 9, 23, 70, 71, 72, 73, 74, 75, 76,
- /* 10 */ 77, 78, 79, 80, 81, 82, 83, 9, 140, 140,
- /* 20 */ 41, 132, 133, 134, 135, 46, 74, 75, 76, 77,
- /* 30 */ 78, 79, 80, 81, 82, 83, 158, 158, 138, 60,
+ /* 10 */ 77, 78, 79, 80, 81, 82, 83, 100, 101, 102,
+ /* 20 */ 41, 100, 101, 102, 20, 46, 74, 75, 76, 77,
+ /* 30 */ 78, 79, 80, 81, 82, 83, 19, 55, 56, 60,
/* 40 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
/* 50 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- /* 60 */ 81, 82, 83, 19, 90, 21, 87, 41, 94, 95,
- /* 70 */ 96, 192, 46, 80, 81, 82, 83, 19, 174, 105,
- /* 80 */ 19, 23, 204, 62, 23, 181, 60, 61, 62, 63,
+ /* 60 */ 81, 82, 83, 23, 108, 90, 87, 41, 112, 94,
+ /* 70 */ 95, 96, 46, 78, 79, 80, 81, 82, 83, 19,
+ /* 80 */ 105, 149, 143, 23, 152, 153, 60, 61, 62, 63,
/* 90 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
/* 100 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- /* 110 */ 52, 90, 91, 0, 93, 94, 95, 96, 97, 98,
- /* 120 */ 62, 23, 9, 10, 9, 104, 20, 12, 22, 78,
- /* 130 */ 79, 80, 81, 82, 83, 41, 78, 79, 80, 12,
- /* 140 */ 46, 78, 79, 23, 86, 87, 88, 89, 87, 88,
- /* 150 */ 92, 93, 89, 127, 60, 61, 62, 63, 64, 65,
- /* 160 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- /* 170 */ 76, 77, 78, 79, 80, 81, 82, 83, 14, 9,
- /* 180 */ 10, 62, 15, 125, 126, 87, 88, 140, 90, 134,
- /* 190 */ 135, 24, 94, 95, 96, 23, 90, 9, 78, 79,
- /* 200 */ 94, 95, 96, 105, 11, 41, 39, 87, 88, 42,
- /* 210 */ 46, 105, 93, 94, 95, 96, 97, 98, 17, 99,
- /* 220 */ 53, 139, 128, 104, 60, 61, 62, 63, 64, 65,
+ /* 110 */ 31, 107, 52, 109, 110, 93, 23, 140, 78, 79,
+ /* 120 */ 78, 79, 62, 22, 147, 148, 104, 87, 34, 89,
+ /* 130 */ 113, 89, 92, 93, 183, 184, 41, 43, 78, 79,
+ /* 140 */ 80, 46, 165, 166, 205, 53, 86, 87, 88, 89,
+ /* 150 */ 211, 62, 92, 93, 128, 60, 61, 62, 63, 64,
+ /* 160 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ /* 170 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 146,
+ /* 180 */ 87, 88, 93, 90, 20, 125, 126, 94, 95, 96,
+ /* 190 */ 22, 90, 100, 101, 102, 94, 95, 96, 105, 80,
+ /* 200 */ 81, 82, 83, 111, 171, 41, 105, 20, 23, 19,
+ /* 210 */ 46, 23, 107, 23, 109, 110, 183, 184, 50, 48,
+ /* 220 */ 23, 62, 189, 128, 60, 61, 62, 63, 64, 65,
/* 230 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- /* 240 */ 76, 77, 78, 79, 80, 81, 82, 83, 9, 19,
- /* 250 */ 78, 79, 41, 23, 207, 208, 209, 46, 57, 87,
- /* 260 */ 59, 89, 140, 19, 92, 93, 144, 23, 152, 147,
- /* 270 */ 148, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 280 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- /* 290 */ 79, 80, 81, 82, 83, 14, 52, 9, 182, 20,
- /* 300 */ 20, 113, 140, 156, 20, 20, 62, 22, 161, 147,
- /* 310 */ 148, 140, 20, 155, 156, 26, 200, 87, 88, 161,
- /* 320 */ 127, 41, 78, 79, 93, 36, 46, 165, 166, 158,
- /* 330 */ 86, 87, 88, 89, 53, 104, 92, 93, 9, 128,
- /* 340 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- /* 350 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- /* 360 */ 80, 81, 82, 83, 20, 194, 140, 183, 184, 125,
- /* 370 */ 126, 127, 146, 88, 19, 204, 23, 140, 23, 31,
- /* 380 */ 140, 100, 101, 102, 158, 41, 107, 99, 109, 110,
- /* 390 */ 46, 107, 111, 109, 110, 158, 20, 171, 158, 107,
- /* 400 */ 115, 109, 110, 170, 60, 61, 62, 63, 64, 65,
- /* 410 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- /* 420 */ 76, 77, 78, 79, 80, 81, 82, 83, 191, 192,
- /* 430 */ 47, 23, 41, 80, 194, 140, 107, 46, 109, 110,
- /* 440 */ 87, 88, 87, 88, 204, 62, 100, 101, 102, 11,
- /* 450 */ 140, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- /* 460 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- /* 470 */ 79, 80, 81, 82, 83, 140, 9, 23, 21, 41,
- /* 480 */ 23, 9, 99, 107, 46, 109, 110, 104, 149, 9,
- /* 490 */ 99, 152, 153, 158, 199, 87, 88, 146, 60, 61,
- /* 500 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- /* 510 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- /* 520 */ 82, 83, 171, 115, 23, 22, 41, 20, 9, 22,
- /* 530 */ 19, 46, 9, 47, 183, 184, 201, 100, 101, 102,
- /* 540 */ 189, 87, 88, 19, 87, 60, 61, 62, 63, 64,
- /* 550 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- /* 560 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 115,
- /* 570 */ 23, 14, 140, 41, 107, 34, 109, 110, 46, 107,
- /* 580 */ 138, 109, 110, 22, 43, 99, 138, 107, 87, 109,
- /* 590 */ 110, 88, 60, 61, 62, 63, 64, 65, 66, 67,
- /* 600 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- /* 610 */ 78, 79, 80, 81, 82, 83, 25, 19, 115, 28,
- /* 620 */ 41, 23, 9, 108, 113, 46, 107, 112, 109, 110,
- /* 630 */ 107, 199, 109, 110, 87, 88, 45, 113, 22, 60,
- /* 640 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- /* 650 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- /* 660 */ 81, 82, 83, 161, 162, 140, 50, 41, 9, 139,
- /* 670 */ 168, 108, 46, 17, 111, 114, 91, 20, 93, 22,
- /* 680 */ 138, 22, 142, 158, 127, 87, 129, 61, 62, 63,
- /* 690 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 700 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- /* 710 */ 140, 140, 9, 57, 41, 59, 140, 9, 145, 46,
- /* 720 */ 143, 20, 20, 22, 22, 49, 23, 19, 158, 158,
- /* 730 */ 200, 18, 9, 29, 158, 62, 63, 64, 65, 66,
- /* 740 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- /* 750 */ 77, 78, 79, 80, 81, 82, 83, 11, 54, 13,
- /* 760 */ 14, 15, 16, 19, 55, 56, 99, 23, 15, 198,
- /* 770 */ 9, 63, 152, 27, 9, 99, 140, 24, 32, 136,
- /* 780 */ 137, 122, 205, 37, 141, 152, 130, 140, 211, 146,
- /* 790 */ 87, 88, 39, 146, 146, 42, 52, 51, 140, 53,
- /* 800 */ 140, 9, 182, 167, 58, 158, 62, 103, 95, 89,
- /* 810 */ 89, 140, 92, 92, 171, 182, 19, 9, 171, 171,
- /* 820 */ 23, 89, 78, 79, 92, 167, 20, 167, 22, 158,
- /* 830 */ 86, 87, 88, 89, 20, 41, 92, 93, 60, 196,
- /* 840 */ 46, 194, 206, 130, 196, 140, 100, 101, 102, 52,
- /* 850 */ 140, 204, 106, 146, 140, 111, 146, 111, 139, 62,
- /* 860 */ 212, 150, 68, 69, 206, 217, 206, 19, 158, 125,
- /* 870 */ 126, 23, 167, 48, 140, 78, 79, 80, 171, 140,
- /* 880 */ 140, 171, 139, 86, 87, 88, 89, 93, 140, 92,
- /* 890 */ 93, 140, 158, 146, 140, 140, 19, 140, 140, 140,
- /* 900 */ 52, 123, 140, 196, 194, 44, 167, 167, 116, 158,
- /* 910 */ 62, 206, 158, 158, 204, 158, 158, 158, 171, 212,
- /* 920 */ 158, 140, 125, 126, 217, 140, 78, 79, 62, 140,
- /* 930 */ 140, 140, 198, 140, 86, 87, 88, 89, 140, 158,
- /* 940 */ 92, 93, 22, 158, 140, 206, 206, 158, 158, 158,
- /* 950 */ 9, 158, 140, 20, 206, 22, 158, 140, 9, 93,
- /* 960 */ 140, 140, 158, 140, 140, 20, 140, 22, 140, 140,
- /* 970 */ 158, 140, 140, 125, 126, 158, 140, 140, 158, 158,
- /* 980 */ 140, 158, 158, 140, 158, 140, 158, 140, 146, 158,
- /* 990 */ 158, 140, 140, 140, 158, 158, 140, 20, 158, 22,
- /* 1000 */ 20, 158, 22, 158, 20, 158, 22, 140, 140, 158,
- /* 1010 */ 158, 158, 140, 171, 158, 20, 20, 22, 22, 99,
- /* 1020 */ 140, 111, 146, 111, 195, 158, 158, 20, 140, 22,
- /* 1030 */ 158, 103, 146, 20, 124, 22, 124, 164, 158, 113,
- /* 1040 */ 114, 113, 157, 139, 139, 113, 172, 171, 113, 111,
- /* 1050 */ 171, 173, 122, 119, 117, 180, 175, 171, 176, 120,
- /* 1060 */ 177, 121, 178, 122, 89, 116, 179, 154, 89, 154,
- /* 1070 */ 154, 118, 22, 151, 98, 157, 23, 113, 113, 93,
- /* 1080 */ 83, 111, 193, 195, 140, 111, 140, 140, 127, 111,
- /* 1090 */ 200, 200, 14, 19, 202, 20, 203, 140, 22, 20,
- /* 1100 */ 140, 20, 22, 140, 22, 20, 113, 186, 140, 140,
- /* 1110 */ 186, 157, 193, 22, 185, 115, 118, 186, 99, 116,
- /* 1120 */ 19, 140, 140, 140, 188, 140, 20, 113, 157, 187,
- /* 1130 */ 187, 20, 140, 139, 19, 162, 188, 20, 166, 140,
- /* 1140 */ 48, 19, 19, 48, 19, 97, 159, 104, 160, 140,
- /* 1150 */ 139, 139, 163, 163, 163, 151, 154, 152, 140, 21,
- /* 1160 */ 154, 140, 140, 140, 213, 164, 214, 99, 140, 159,
- /* 1170 */ 40, 215, 11, 38, 166, 160, 99, 140, 216, 130,
- /* 1180 */ 49, 140, 99, 99, 140, 19, 139, 9, 130, 169,
- /* 1190 */ 11, 14, 123, 123, 170, 9, 9, 14, 169, 60,
- /* 1200 */ 140, 103, 186, 186, 140, 63, 176, 9, 63, 123,
- /* 1210 */ 19, 140, 19, 9, 114, 176, 9, 9, 9, 186,
- /* 1220 */ 9, 186, 197, 9, 114, 9, 186, 140, 140, 140,
- /* 1230 */ 140, 176, 169, 140, 140, 103, 140, 186, 176, 9,
- /* 1240 */ 186, 123, 140, 197, 19, 9, 87, 140, 114, 140,
- /* 1250 */ 35, 186, 9, 140, 9, 152, 9, 9, 9, 9,
- /* 1260 */ 9, 9, 210, 9, 9, 9, 169, 210, 140, 140,
- /* 1270 */ 33, 152, 9, 20, 218, 9, 152, 218, 21, 9,
- /* 1280 */ 219, 140,
+ /* 240 */ 76, 77, 78, 79, 80, 81, 82, 83, 20, 90,
+ /* 250 */ 91, 19, 93, 94, 95, 96, 97, 98, 19, 15,
+ /* 260 */ 19, 0, 23, 104, 23, 80, 78, 79, 24, 41,
+ /* 270 */ 9, 10, 87, 88, 46, 87, 88, 87, 88, 20,
+ /* 280 */ 20, 22, 17, 39, 87, 88, 42, 99, 60, 61,
+ /* 290 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ /* 300 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ /* 310 */ 82, 83, 115, 140, 25, 23, 41, 28, 20, 20,
+ /* 320 */ 22, 46, 57, 20, 59, 22, 87, 88, 87, 88,
+ /* 330 */ 20, 158, 22, 19, 45, 60, 61, 62, 63, 64,
+ /* 340 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ /* 350 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 89,
+ /* 360 */ 47, 22, 92, 41, 191, 192, 22, 107, 46, 109,
+ /* 370 */ 110, 161, 162, 89, 99, 62, 92, 63, 168, 87,
+ /* 380 */ 88, 113, 60, 61, 62, 63, 64, 65, 66, 67,
+ /* 390 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ /* 400 */ 78, 79, 80, 81, 82, 83, 107, 115, 109, 110,
+ /* 410 */ 41, 91, 99, 93, 140, 46, 89, 104, 144, 92,
+ /* 420 */ 47, 147, 148, 132, 133, 134, 135, 88, 113, 60,
+ /* 430 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ /* 440 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ /* 450 */ 81, 82, 83, 23, 115, 19, 140, 41, 114, 23,
+ /* 460 */ 155, 156, 46, 20, 22, 22, 161, 20, 20, 22,
+ /* 470 */ 22, 20, 99, 22, 158, 29, 60, 61, 62, 63,
+ /* 480 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ /* 490 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ /* 500 */ 54, 140, 26, 140, 41, 21, 89, 23, 17, 46,
+ /* 510 */ 194, 140, 36, 20, 20, 22, 22, 87, 88, 127,
+ /* 520 */ 204, 129, 89, 87, 61, 62, 63, 64, 65, 66,
+ /* 530 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ /* 540 */ 77, 78, 79, 80, 81, 82, 83, 140, 57, 103,
+ /* 550 */ 59, 41, 20, 139, 22, 20, 46, 22, 20, 19,
+ /* 560 */ 22, 21, 199, 140, 122, 158, 195, 18, 207, 208,
+ /* 570 */ 209, 87, 62, 63, 64, 65, 66, 67, 68, 69,
+ /* 580 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ /* 590 */ 80, 81, 82, 83, 11, 62, 13, 14, 15, 16,
+ /* 600 */ 19, 194, 174, 118, 23, 140, 111, 140, 23, 181,
+ /* 610 */ 27, 204, 134, 135, 200, 32, 152, 140, 195, 124,
+ /* 620 */ 37, 130, 140, 146, 152, 158, 93, 94, 95, 96,
+ /* 630 */ 97, 98, 140, 52, 51, 158, 53, 104, 140, 140,
+ /* 640 */ 140, 58, 156, 62, 95, 140, 182, 161, 171, 167,
+ /* 650 */ 158, 146, 146, 19, 182, 146, 158, 23, 158, 78,
+ /* 660 */ 79, 80, 22, 158, 199, 198, 167, 86, 87, 88,
+ /* 670 */ 89, 194, 87, 92, 93, 146, 171, 171, 113, 130,
+ /* 680 */ 171, 204, 140, 100, 101, 102, 52, 140, 206, 106,
+ /* 690 */ 41, 146, 192, 201, 111, 46, 62, 140, 93, 194,
+ /* 700 */ 171, 15, 204, 113, 19, 206, 125, 126, 23, 204,
+ /* 710 */ 24, 140, 78, 79, 167, 158, 171, 68, 69, 140,
+ /* 720 */ 86, 87, 88, 89, 146, 39, 92, 93, 42, 158,
+ /* 730 */ 136, 137, 140, 146, 108, 141, 152, 52, 140, 53,
+ /* 740 */ 146, 196, 93, 14, 146, 111, 167, 62, 206, 171,
+ /* 750 */ 158, 19, 140, 206, 20, 198, 158, 212, 171, 125,
+ /* 760 */ 126, 140, 217, 78, 79, 171, 182, 111, 140, 171,
+ /* 770 */ 22, 86, 87, 88, 89, 140, 140, 92, 93, 167,
+ /* 780 */ 124, 20, 140, 196, 200, 206, 158, 140, 167, 22,
+ /* 790 */ 196, 140, 20, 158, 158, 140, 22, 140, 140, 212,
+ /* 800 */ 158, 140, 140, 20, 217, 158, 140, 140, 140, 158,
+ /* 810 */ 125, 126, 140, 158, 140, 158, 158, 140, 206, 158,
+ /* 820 */ 158, 140, 140, 140, 158, 158, 158, 206, 140, 140,
+ /* 830 */ 158, 140, 158, 140, 140, 158, 140, 140, 140, 158,
+ /* 840 */ 158, 158, 140, 140, 118, 140, 158, 158, 140, 158,
+ /* 850 */ 140, 158, 158, 140, 158, 158, 158, 140, 140, 140,
+ /* 860 */ 158, 158, 140, 158, 140, 140, 158, 140, 158, 9,
+ /* 870 */ 10, 158, 22, 115, 19, 158, 158, 158, 20, 113,
+ /* 880 */ 158, 20, 158, 158, 20, 158, 48, 19, 19, 48,
+ /* 890 */ 19, 97, 104, 21, 99, 38, 49, 22, 49, 130,
+ /* 900 */ 99, 19, 11, 14, 9, 103, 63, 63, 123, 19,
+ /* 910 */ 114, 114, 103, 123, 114, 19, 35, 87, 20, 116,
+ /* 920 */ 21, 150, 160, 200, 160, 138, 12, 99, 139, 138,
+ /* 930 */ 138, 138, 22, 111, 164, 176, 44, 122, 139, 171,
+ /* 940 */ 177, 120, 119, 145, 139, 139, 139, 121, 117, 193,
+ /* 950 */ 98, 178, 23, 83, 179, 151, 180, 202, 113, 127,
+ /* 960 */ 19, 99, 116, 186, 186, 151, 186, 159, 187, 159,
+ /* 970 */ 188, 187, 193, 139, 188, 164, 139, 40, 139, 139,
+ /* 980 */ 215, 127, 60, 19, 33, 220, 169, 169, 220, 116,
+ /* 990 */ 220, 220, 220, 220, 220, 220, 176, 220, 186, 220,
+ /* 1000 */ 220, 220, 186, 220, 169, 176, 220, 142, 220, 220,
+ /* 1010 */ 186, 186, 220, 186, 220, 220, 197, 169, 220, 186,
+ /* 1020 */ 157, 220, 186, 220, 220, 220, 220, 140, 140, 216,
+ /* 1030 */ 220, 157, 220, 220, 157, 157, 152, 186, 220, 197,
+ /* 1040 */ 173, 175, 162, 140, 140, 152, 152, 140, 140, 140,
+ /* 1050 */ 220, 154, 140, 140, 154, 176, 154, 140, 140, 176,
+ /* 1060 */ 140, 140, 220, 140, 140, 140, 220, 152, 163, 220,
+ /* 1070 */ 154, 218, 140, 140, 163, 219, 140, 218, 172, 203,
+ /* 1080 */ 154, 220, 163, 140, 140, 140, 185, 140, 140, 140,
+ /* 1090 */ 140, 220, 140, 140, 140, 210, 210, 140, 140, 140,
+ /* 1100 */ 140, 140, 140, 140, 170, 140, 140, 140, 140, 140,
+ /* 1110 */ 140, 220, 166, 220, 220, 220, 220, 220, 220, 220,
+ /* 1120 */ 220, 220, 166, 220, 220, 170, 220, 220, 220, 220,
+ /* 1130 */ 200, 220, 220, 220, 220, 220, 220, 220, 220, 220,
+ /* 1140 */ 213, 220, 214,
};
-#define YY_SHIFT_USE_DFLT (-68)
+#define YY_SHIFT_USE_DFLT (-84)
+#define YY_SHIFT_COUNT (376)
+#define YY_SHIFT_MIN (-83)
+#define YY_SHIFT_MAX (964)
static const short yy_shift_ofst[] = {
- /* 0 */ 170, 113, -68, 746, -8, -68, 8, 127, 288, 239,
- /* 10 */ 348, 167, -68, -68, -68, -68, -68, -68, 547, -68,
- /* 20 */ -68, -68, -68, 115, 613, 115, 723, 115, 761, 44,
- /* 30 */ 765, 547, 507, 814, 808, 98, -68, 501, -68, 21,
- /* 40 */ -68, 547, 119, -68, 667, -68, 231, 667, -68, 861,
- /* 50 */ -68, 541, -68, -68, 825, 289, 667, -68, -68, -68,
- /* 60 */ 667, -68, 877, 848, 511, 58, 932, 935, 744, -68,
- /* 70 */ 279, 938, -68, 515, -68, 561, 930, 934, 939, 937,
- /* 80 */ 940, -68, 63, -68, 975, -68, 979, -68, 616, 63,
- /* 90 */ -68, 63, -68, 953, 848, 1050, 848, 976, 289, -68,
- /* 100 */ 1053, -68, -68, 485, 848, -68, 964, 547, 965, 547,
- /* 110 */ -68, -68, -68, -68, 673, 848, 626, 848, -48, 848,
- /* 120 */ -48, 848, -48, 848, -48, 848, -67, 848, -67, 848,
- /* 130 */ 51, 848, 51, 848, 51, 848, 51, 848, -67, 794,
- /* 140 */ 848, -67, -68, -68, 848, -7, 848, -7, 848, 997,
- /* 150 */ 848, 997, 848, 997, 848, -68, -68, 866, -68, 986,
- /* 160 */ -68, -68, 848, 532, 848, -67, 61, 744, 284, 563,
- /* 170 */ 970, 974, 978, -68, 485, 848, 673, 848, -68, 848,
- /* 180 */ -68, 848, -68, 244, 26, 961, 557, 1078, -68, 848,
- /* 190 */ 94, 848, 485, 1074, 753, 1075, -68, 1076, 547, 1079,
- /* 200 */ -68, 1080, 547, 1081, -68, 1082, 547, 1085, -68, 848,
- /* 210 */ 164, 848, 211, 848, 485, 657, -68, 848, -68, -68,
- /* 220 */ 993, 547, -68, -68, -68, 848, 579, 848, 673, 230,
- /* 230 */ 744, 292, -68, 701, -68, 993, -68, 976, 289, -68,
- /* 240 */ 848, 485, 998, 848, 1091, 848, 485, -68, -68, 503,
- /* 250 */ -68, -68, -68, 408, -68, 454, -68, 1000, -68, 355,
- /* 260 */ 993, 457, -68, -68, 547, -68, -68, 1019, 1003, -68,
- /* 270 */ 1101, 547, 702, -68, 547, -68, 289, -68, -68, 848,
- /* 280 */ 485, 938, 376, 285, 1106, 457, 1019, 1003, -68, 797,
- /* 290 */ -21, -68, -68, 1014, 353, -68, -68, -68, -68, 280,
- /* 300 */ -68, 806, -68, 1111, -68, 344, 667, -68, 547, 1115,
- /* 310 */ -68, 486, -68, 547, -68, 346, 704, -68, 585, -68,
- /* 320 */ -68, -68, -68, 704, -68, 704, -68, 547, 933, -68,
- /* 330 */ -68, 1053, -68, 861, -68, -68, 172, -68, -68, -68,
- /* 340 */ 720, -68, -68, 721, -68, -68, -68, -68, 598, 63,
- /* 350 */ 945, -68, 63, 1117, -68, -68, -68, -68, 106, -26,
- /* 360 */ -68, 547, -68, 1092, 1122, 547, 977, 667, -68, 1123,
- /* 370 */ 547, 980, 667, -68, 848, 391, -68, 1095, 1125, 547,
- /* 380 */ 984, 1048, 547, 1115, -68, 383, 1043, -68, -68, -68,
- /* 390 */ -68, -68, 938, 329, 713, 201, 547, -68, 547, 1138,
- /* 400 */ 938, 467, 547, 591, 437, 1068, 547, 993, 1130, 193,
- /* 410 */ 1161, 848, 438, 1135, 709, -68, -68, 1077, 1083, 676,
- /* 420 */ 547, 920, 547, -68, -68, -68, -68, 1131, -68, -68,
- /* 430 */ 1049, 547, 1084, 547, 524, 1166, 547, 995, 288, 1178,
- /* 440 */ 1058, 1179, 281, 472, 778, 167, -68, 1069, 1070, 1177,
- /* 450 */ 1186, 1187, 281, 1183, 1139, 547, 1098, 547, 659, 547,
- /* 460 */ 1142, 848, 485, 1198, 1145, 848, 485, 1086, 547, 1191,
- /* 470 */ 547, 996, -68, 910, 480, 1193, 848, 1007, 848, 485,
- /* 480 */ 1204, 485, 1100, 547, 941, 1207, 656, 547, 1208, 547,
- /* 490 */ 1209, 547, 188, 1211, 547, 188, 1214, 519, 1110, 547,
- /* 500 */ 993, 941, 1216, 1139, 547, 928, 1132, 547, 659, 1230,
- /* 510 */ 1118, 547, 993, 1191, 912, 523, 1225, 848, 1013, 1236,
- /* 520 */ 1139, 547, 926, 1134, 547, 792, 1215, 1159, 1243, 703,
- /* 530 */ 1245, 501, 708, 120, 1247, 1248, 1249, 1250, 732, 1251,
- /* 540 */ 1252, 1254, 732, 1255, -68, 547, 1253, 1256, 1237, 501,
- /* 550 */ 1257, 547, 949, 1263, 501, 1266, -68, 1237, 547, 1270,
- /* 560 */ -68, -68, -68,
+ /* 0 */ 860, 583, 634, 634, 93, 92, 92, 822, 634, 581,
+ /* 10 */ 685, 685, 188, 430, -21, 685, 685, 685, 685, 685,
+ /* 20 */ 159, 313, 430, 549, 430, 430, 430, 430, 430, 585,
+ /* 30 */ 275, 60, 685, 685, 685, 685, 685, 685, 685, 685,
+ /* 40 */ 685, 685, 685, 685, 685, 685, 685, 685, 685, 685,
+ /* 50 */ 685, 685, 685, 685, 685, 685, 685, 685, 685, 685,
+ /* 60 */ 685, 685, 685, 685, 685, 685, 685, 685, 685, 685,
+ /* 70 */ 685, 685, 685, 685, 533, 430, 430, 430, 430, 484,
+ /* 80 */ 430, 484, 261, 656, 495, 822, 822, -84, -84, 228,
+ /* 90 */ 164, 95, 26, 322, 322, 322, 322, 322, 322, 322,
+ /* 100 */ 322, 416, 322, 322, 322, 322, 322, 369, 322, 463,
+ /* 110 */ 510, 510, 510, -67, -67, -67, -67, -67, -48, -48,
+ /* 120 */ -48, -48, 101, -5, -5, -5, -5, 686, -25, 649,
+ /* 130 */ 686, 185, 241, 292, 197, 299, 239, 260, 190, 119,
+ /* 140 */ 119, 4, 430, 430, 430, 430, 430, 430, 105, 430,
+ /* 150 */ 430, 430, 105, 430, 430, 430, 430, 430, 105, 430,
+ /* 160 */ 430, 430, 105, 430, 430, 430, 430, -79, 289, 430,
+ /* 170 */ 105, 430, 430, 105, 430, 430, 42, 42, 436, 446,
+ /* 180 */ 446, 446, 430, 430, 339, 105, 430, 339, 430, 430,
+ /* 190 */ 430, 430, 430, 430, 42, 42, 42, 430, 430, 585,
+ /* 200 */ 585, 327, 327, 585, 442, 442, 373, 476, 476, 392,
+ /* 210 */ 476, 344, -44, 476, 540, 951, 873, 951, 845, 922,
+ /* 220 */ 964, 845, 845, 922, 815, 845, 845, 845, 815, 964,
+ /* 230 */ 922, 922, 828, 845, 854, 937, 845, 941, 828, 828,
+ /* 240 */ 892, 929, 941, 828, 846, 862, 846, 862, 845, 852,
+ /* 250 */ 845, 845, 832, 870, 870, 870, 929, 852, 826, 831,
+ /* 260 */ 821, 823, 815, 822, 828, 828, 892, 828, 828, 910,
+ /* 270 */ 914, 914, 914, 828, 914, -84, -84, -84, -84, -84,
+ /* 280 */ -84, -84, 40, 491, 244, 265, -83, 314, 538, 535,
+ /* 290 */ 532, 494, -18, 493, 451, 448, 447, 284, 270, 443,
+ /* 300 */ 320, 310, 303, 298, 259, 89, 168, 17, 94, 22,
+ /* 310 */ 899, 898, 830, 881, 803, 800, 896, 790, 809, 797,
+ /* 320 */ 796, 890, 785, 844, 843, 802, 895, 889, 891, 882,
+ /* 330 */ 801, 769, 849, 875, 847, 857, 795, 872, 788, 794,
+ /* 340 */ 871, 841, 869, 868, 838, 864, 861, 766, 858, 855,
+ /* 350 */ 758, 850, 726, 783, 774, 772, 767, 761, 748, 734,
+ /* 360 */ 732, 729, 626, 605, 590, 565, 640, 485, 433, 417,
+ /* 370 */ 315, 268, 232, 171, 187, 79, -8,
};
-#define YY_REDUCE_USE_DFLT (-123)
+#define YY_REDUCE_USE_DFLT (-69)
+#define YY_REDUCE_COUNT (281)
+#define YY_REDUCE_MIN (-68)
+#define YY_REDUCE_MAX (970)
static const short yy_reduce_ofst[] = {
- /* 0 */ -111, 55, -123, 643, -123, -123, -123, -100, 82, -123,
- /* 10 */ -123, 233, -123, -123, -123, -123, -123, -123, 310, -123,
- /* 20 */ -123, -123, -123, 442, -123, 448, -123, 542, -123, 540,
- /* 30 */ -123, 122, 573, -123, -123, 162, -123, 339, 711, 158,
- /* 40 */ -123, 714, 147, -123, 719, -123, -123, 743, -123, 873,
- /* 50 */ -123, -123, -123, -123, -123, 885, 904, -123, -123, -123,
- /* 60 */ 905, -123, -123, 525, -123, 171, -123, -123, 226, -123,
- /* 70 */ 874, 879, -123, 878, -96, 881, 882, 883, 884, 887,
- /* 80 */ 875, -123, 913, -123, -123, -123, -123, -123, -123, 915,
- /* 90 */ -123, 916, -123, -123, 237, -123, -121, 889, 918, -123,
- /* 100 */ 922, -123, -123, 890, 570, -123, -123, 944, -123, 946,
- /* 110 */ -123, -123, -123, -123, 890, 576, 890, 671, 890, 751,
- /* 120 */ 890, 754, 890, 755, 890, 757, 890, 758, 890, 759,
- /* 130 */ 890, 762, 890, 781, 890, 785, 890, 789, 890, 891,
- /* 140 */ 790, 890, -123, -123, 791, 890, 793, 890, 798, 890,
- /* 150 */ 804, 890, 812, 890, 817, 890, -123, -123, -123, -123,
- /* 160 */ -123, -123, 820, 890, 821, 890, 947, 647, 874, -123,
- /* 170 */ -123, -123, -123, -123, 890, 823, 890, 824, 890, 826,
- /* 180 */ 890, 828, 890, 335, 890, 892, 893, -123, -123, 831,
- /* 190 */ 890, 832, 890, -123, -123, -123, -123, -123, 957, -123,
- /* 200 */ -123, -123, 960, -123, -123, -123, 963, -123, -123, 836,
- /* 210 */ 890, 837, 890, 840, 890, -123, -123, -122, -123, -123,
- /* 220 */ 921, 968, -123, -123, -123, 843, 890, 845, 890, 969,
- /* 230 */ 710, 874, -123, -123, -123, 924, -123, 919, 954, -123,
- /* 240 */ 847, 890, -123, 240, -123, 851, 890, -123, 184, 929,
- /* 250 */ -123, -123, -123, 981, -123, 982, -123, -123, -123, 983,
- /* 260 */ 931, 620, -123, -123, 985, -123, -123, 942, 936, -123,
- /* 270 */ -123, 636, -123, -123, 748, -123, 971, -123, -123, 852,
- /* 280 */ 890, 351, 874, 929, -123, 633, 943, 948, -123, 853,
- /* 290 */ 116, -123, -123, -123, 944, -123, -123, -123, -123, 890,
- /* 300 */ -123, -123, -123, -123, -123, 890, 994, -123, 992, 987,
- /* 310 */ 988, 973, -123, 999, -123, -123, 989, -123, -123, -123,
- /* 320 */ -123, -123, -123, 990, -123, 991, -123, 658, -123, -123,
- /* 330 */ -123, 1004, -123, 1001, -123, -123, -123, -123, -123, -123,
- /* 340 */ -123, -123, -123, -123, -123, -123, -123, -123, 1005, 1002,
- /* 350 */ -123, -123, 1006, -123, -123, -123, -123, -123, 972, 1008,
- /* 360 */ -123, 1009, -123, -123, -123, 660, -123, 1011, -123, -123,
- /* 370 */ 705, -123, 1012, -123, 856, 530, -123, -123, -123, 739,
- /* 380 */ -123, -123, 1018, 1010, 1015, 502, -123, -123, -123, -123,
- /* 390 */ -123, -123, 747, 874, 577, -123, 1021, -123, 1022, -123,
- /* 400 */ 842, 874, 1023, 951, 952, -123, 1028, 1016, 956, 962,
- /* 410 */ -123, 867, 890, -123, -123, -123, -123, -123, -123, -123,
- /* 420 */ 295, -123, 1037, -123, -123, -123, -123, -123, -123, -123,
- /* 430 */ -123, 1041, -123, 1044, 1017, -123, 740, -123, 1047, -123,
- /* 440 */ -123, -123, 648, 874, 1020, 1024, -123, -123, -123, -123,
- /* 450 */ -123, -123, 707, -123, 1029, 1060, -123, 829, 1030, 1064,
- /* 460 */ -123, 868, 890, -123, -123, 872, 890, -123, 1071, 1025,
- /* 470 */ 432, -123, -123, 876, 874, -123, 571, -123, 880, 890,
- /* 480 */ -123, 890, -123, 1087, 1039, -123, -123, 1088, -123, 1089,
- /* 490 */ -123, 1090, 1033, -123, 1093, 1035, -123, 874, -123, 1094,
- /* 500 */ 1040, 1055, -123, 1063, 1096, 1051, -123, 888, 1062, -123,
- /* 510 */ -123, 1102, 1054, 1046, 886, 874, -123, 734, -123, -123,
- /* 520 */ 1097, 1107, 1065, -123, 1109, -123, -123, -123, -123, 1113,
- /* 530 */ -123, 1103, -123, 47, -123, -123, -123, -123, 1052, -123,
- /* 540 */ -123, -123, 1057, -123, -123, 1128, -123, -123, 1056, 1119,
- /* 550 */ -123, 1129, 1061, -123, 1124, -123, -123, 1059, 1141, -123,
- /* 560 */ -123, -123, -123,
+ /* 0 */ 291, 594, 505, 477, -23, 587, 545, 33, 598, 407,
+ /* 10 */ 316, 173, 361, 274, 584, 557, 467, 498, 492, 500,
+ /* 20 */ 305, 210, 621, -61, 612, 579, 547, 499, 482, -68,
+ /* 30 */ 414, 727, 725, 724, 722, 719, 718, 717, 713, 710,
+ /* 40 */ 708, 705, 703, 702, 698, 697, 696, 694, 693, 691,
+ /* 50 */ 689, 688, 683, 682, 681, 677, 674, 672, 668, 667,
+ /* 60 */ 666, 662, 661, 658, 657, 655, 651, 647, 642, 636,
+ /* 70 */ 635, 628, 592, 571, 486, 423, 465, 371, 363, 472,
+ /* 80 */ 542, 464, 478, 578, 529, 509, 506, -49, 428, 723,
+ /* 90 */ 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
+ /* 100 */ 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
+ /* 110 */ 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
+ /* 120 */ 723, 723, 956, 723, 723, 723, 723, 955, 946, 930,
+ /* 130 */ 934, 903, 970, 969, 968, 906, 967, 906, 966, 723,
+ /* 140 */ 723, 906, 965, 963, 962, 961, 960, 959, 906, 958,
+ /* 150 */ 957, 954, 906, 953, 952, 950, 949, 948, 906, 947,
+ /* 160 */ 945, 944, 906, 943, 936, 933, 932, 928, 927, 925,
+ /* 170 */ 906, 924, 923, 906, 921, 920, 926, 916, 915, 919,
+ /* 180 */ 911, 905, 918, 917, 901, 906, 913, 901, 912, 909,
+ /* 190 */ 908, 907, 904, 903, 902, 900, 897, 888, 887, 894,
+ /* 200 */ 893, 886, 885, 884, 883, 879, 880, 878, 877, 876,
+ /* 210 */ 874, 866, 867, 863, 865, 859, 856, 853, 851, 848,
+ /* 220 */ 842, 836, 833, 835, 829, 827, 825, 824, 820, 819,
+ /* 230 */ 818, 817, 840, 816, 813, 765, 812, 810, 839, 837,
+ /* 240 */ 811, 814, 808, 834, 786, 784, 782, 781, 780, 779,
+ /* 250 */ 778, 777, 755, 723, 723, 723, 804, 756, 776, 775,
+ /* 260 */ 773, 763, 759, 768, 807, 806, 770, 805, 799, 798,
+ /* 270 */ 793, 792, 791, 789, 787, 764, 762, 723, 723, 723,
+ /* 280 */ 723, 771,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 570, 570, 564, 856, 856, 566, 856, 572, 856, 856,
- /* 10 */ 856, 856, 652, 655, 656, 657, 658, 659, 573, 574,
- /* 20 */ 591, 592, 593, 856, 856, 856, 856, 856, 856, 856,
- /* 30 */ 856, 856, 856, 856, 856, 856, 584, 594, 604, 586,
- /* 40 */ 603, 856, 856, 605, 651, 616, 856, 651, 617, 636,
- /* 50 */ 634, 856, 637, 638, 856, 708, 651, 618, 706, 707,
- /* 60 */ 651, 619, 856, 856, 737, 797, 743, 738, 856, 664,
- /* 70 */ 856, 856, 665, 673, 675, 682, 720, 711, 713, 701,
- /* 80 */ 715, 670, 856, 600, 856, 601, 856, 602, 716, 856,
- /* 90 */ 717, 856, 718, 856, 856, 702, 856, 709, 708, 703,
- /* 100 */ 856, 588, 710, 705, 856, 736, 856, 856, 739, 856,
- /* 110 */ 740, 741, 742, 744, 747, 856, 748, 856, 749, 856,
- /* 120 */ 750, 856, 751, 856, 752, 856, 753, 856, 754, 856,
- /* 130 */ 755, 856, 756, 856, 757, 856, 758, 856, 759, 856,
- /* 140 */ 856, 760, 761, 762, 856, 763, 856, 764, 856, 765,
- /* 150 */ 856, 766, 856, 767, 856, 768, 769, 856, 770, 856,
- /* 160 */ 773, 771, 856, 856, 856, 779, 856, 797, 856, 856,
- /* 170 */ 856, 856, 856, 782, 796, 856, 774, 856, 775, 856,
- /* 180 */ 776, 856, 777, 856, 856, 856, 856, 856, 787, 856,
- /* 190 */ 856, 856, 788, 856, 856, 856, 845, 856, 856, 856,
- /* 200 */ 846, 856, 856, 856, 847, 856, 856, 856, 848, 856,
- /* 210 */ 856, 856, 856, 856, 789, 856, 781, 797, 794, 795,
- /* 220 */ 690, 856, 691, 785, 772, 856, 856, 856, 780, 856,
- /* 230 */ 797, 856, 784, 856, 783, 690, 786, 709, 708, 704,
- /* 240 */ 856, 714, 856, 797, 712, 856, 721, 674, 685, 683,
- /* 250 */ 684, 692, 693, 856, 694, 856, 695, 856, 696, 856,
- /* 260 */ 690, 681, 589, 590, 856, 679, 680, 698, 700, 686,
- /* 270 */ 856, 856, 856, 699, 856, 803, 708, 805, 804, 856,
- /* 280 */ 697, 685, 856, 856, 856, 681, 698, 700, 687, 856,
- /* 290 */ 681, 676, 677, 856, 856, 678, 671, 672, 778, 856,
- /* 300 */ 735, 856, 745, 856, 746, 856, 651, 620, 856, 801,
- /* 310 */ 624, 621, 625, 856, 626, 856, 856, 627, 856, 630,
- /* 320 */ 631, 632, 633, 856, 628, 856, 629, 856, 856, 802,
- /* 330 */ 622, 856, 623, 636, 635, 606, 856, 607, 608, 609,
- /* 340 */ 856, 610, 613, 856, 611, 614, 612, 615, 595, 856,
- /* 350 */ 856, 596, 856, 856, 597, 599, 598, 587, 856, 856,
- /* 360 */ 641, 856, 644, 856, 856, 856, 856, 651, 645, 856,
- /* 370 */ 856, 856, 651, 646, 856, 651, 647, 856, 856, 856,
- /* 380 */ 856, 856, 856, 801, 624, 649, 856, 648, 650, 642,
- /* 390 */ 643, 585, 856, 856, 581, 856, 856, 579, 856, 856,
- /* 400 */ 856, 856, 856, 828, 856, 856, 856, 690, 833, 856,
- /* 410 */ 856, 856, 856, 856, 856, 834, 835, 856, 856, 856,
- /* 420 */ 856, 856, 856, 733, 734, 825, 826, 856, 827, 580,
- /* 430 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
- /* 440 */ 856, 856, 856, 856, 856, 856, 654, 856, 856, 856,
- /* 450 */ 856, 856, 856, 856, 653, 856, 856, 856, 856, 856,
- /* 460 */ 856, 856, 723, 856, 856, 856, 724, 856, 856, 731,
- /* 470 */ 856, 856, 732, 856, 856, 856, 856, 856, 856, 729,
- /* 480 */ 856, 730, 856, 856, 856, 856, 856, 856, 856, 856,
- /* 490 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
- /* 500 */ 690, 856, 856, 653, 856, 856, 856, 856, 856, 856,
- /* 510 */ 856, 856, 690, 731, 856, 856, 856, 856, 856, 856,
- /* 520 */ 653, 856, 856, 856, 856, 856, 856, 856, 856, 856,
- /* 530 */ 856, 856, 856, 822, 856, 856, 856, 856, 856, 856,
- /* 540 */ 856, 856, 856, 856, 821, 856, 856, 856, 854, 856,
- /* 550 */ 856, 856, 856, 856, 856, 856, 853, 854, 856, 856,
- /* 560 */ 567, 569, 565,
+ /* 0 */ 570, 856, 797, 797, 856, 839, 839, 685, 856, 797,
+ /* 10 */ 797, 856, 822, 856, 681, 856, 856, 797, 793, 856,
+ /* 20 */ 586, 649, 856, 581, 856, 856, 856, 856, 856, 594,
+ /* 30 */ 651, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 40 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 50 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 60 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 70 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 681,
+ /* 80 */ 856, 681, 570, 856, 856, 856, 856, 685, 675, 856,
+ /* 90 */ 856, 856, 856, 730, 729, 724, 723, 837, 697, 721,
+ /* 100 */ 714, 856, 789, 790, 788, 792, 796, 856, 705, 748,
+ /* 110 */ 780, 774, 747, 779, 760, 759, 754, 753, 752, 751,
+ /* 120 */ 750, 749, 640, 758, 757, 756, 755, 856, 856, 856,
+ /* 130 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 764,
+ /* 140 */ 763, 856, 856, 856, 856, 809, 856, 856, 726, 856,
+ /* 150 */ 856, 856, 663, 856, 856, 856, 856, 856, 842, 856,
+ /* 160 */ 856, 856, 844, 856, 856, 856, 856, 856, 828, 856,
+ /* 170 */ 661, 856, 856, 583, 856, 856, 856, 856, 595, 856,
+ /* 180 */ 856, 856, 856, 856, 689, 688, 856, 683, 856, 856,
+ /* 190 */ 856, 856, 856, 856, 856, 856, 856, 856, 573, 856,
+ /* 200 */ 856, 856, 856, 856, 720, 720, 621, 708, 708, 791,
+ /* 210 */ 708, 682, 673, 708, 856, 854, 852, 854, 690, 653,
+ /* 220 */ 731, 690, 690, 653, 720, 690, 690, 690, 720, 731,
+ /* 230 */ 653, 653, 651, 690, 836, 833, 690, 801, 651, 651,
+ /* 240 */ 636, 856, 801, 651, 700, 698, 700, 698, 690, 709,
+ /* 250 */ 690, 690, 856, 767, 766, 765, 856, 709, 715, 701,
+ /* 260 */ 713, 711, 720, 856, 651, 651, 636, 651, 651, 639,
+ /* 270 */ 572, 572, 572, 651, 572, 624, 624, 777, 776, 775,
+ /* 280 */ 768, 604, 856, 856, 856, 856, 856, 816, 856, 856,
+ /* 290 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 300 */ 856, 856, 856, 856, 856, 856, 716, 737, 856, 856,
+ /* 310 */ 856, 856, 856, 856, 808, 856, 856, 856, 856, 856,
+ /* 320 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 330 */ 856, 856, 856, 832, 831, 856, 856, 856, 856, 856,
+ /* 340 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 350 */ 856, 712, 856, 856, 856, 856, 856, 856, 856, 856,
+ /* 360 */ 856, 856, 666, 856, 739, 856, 702, 856, 856, 856,
+ /* 370 */ 738, 743, 856, 856, 856, 856, 856, 565, 569, 567,
+ /* 380 */ 855, 853, 851, 850, 815, 821, 818, 820, 819, 817,
+ /* 390 */ 814, 813, 812, 811, 810, 807, 725, 722, 719, 849,
+ /* 400 */ 806, 662, 660, 843, 841, 732, 840, 838, 823, 728,
+ /* 410 */ 727, 654, 799, 798, 580, 827, 826, 825, 734, 733,
+ /* 420 */ 830, 829, 835, 834, 824, 579, 585, 643, 642, 650,
+ /* 430 */ 648, 647, 646, 645, 644, 641, 587, 598, 599, 597,
+ /* 440 */ 596, 615, 612, 614, 611, 613, 610, 609, 608, 607,
+ /* 450 */ 606, 635, 623, 622, 802, 629, 628, 633, 632, 631,
+ /* 460 */ 630, 627, 626, 625, 620, 746, 745, 735, 778, 672,
+ /* 470 */ 671, 678, 677, 676, 687, 804, 805, 803, 699, 686,
+ /* 480 */ 680, 679, 590, 589, 696, 695, 694, 693, 692, 684,
+ /* 490 */ 674, 704, 786, 783, 784, 772, 785, 691, 795, 794,
+ /* 500 */ 781, 848, 847, 846, 845, 787, 782, 669, 668, 667,
+ /* 510 */ 771, 773, 770, 769, 762, 761, 744, 742, 741, 740,
+ /* 520 */ 736, 710, 588, 703, 718, 717, 602, 601, 600, 670,
+ /* 530 */ 665, 664, 619, 707, 706, 618, 638, 637, 634, 617,
+ /* 540 */ 616, 605, 603, 584, 582, 578, 577, 576, 575, 593,
+ /* 550 */ 592, 591, 574, 659, 658, 657, 656, 655, 652, 571,
+ /* 560 */ 568, 566, 564,
};
-#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
/* The next table maps tokens into fallback tokens. If a construct
** like the following:
**
** %fallback ID X Y Z.
**
-** appears in the grammer, then ID becomes a fallback token for X, Y,
+** appears in the grammar, then ID becomes a fallback token for X, Y,
** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
** but it does not parse, the type of the token is changed to ID and
** the parse is retried before an error is thrown.
@@ -674,77 +622,6 @@ static const YYCODETYPE yyFallback[] = {
23, /* TRIGGER => ID */
23, /* VACUUM => ID */
23, /* VIEW => ID */
- 0, /* OR => nothing */
- 0, /* AND => nothing */
- 0, /* NOT => nothing */
- 0, /* EQ => nothing */
- 0, /* NE => nothing */
- 0, /* ISNULL => nothing */
- 0, /* NOTNULL => nothing */
- 0, /* IS => nothing */
- 0, /* BETWEEN => nothing */
- 0, /* IN => nothing */
- 0, /* GT => nothing */
- 0, /* GE => nothing */
- 0, /* LT => nothing */
- 0, /* LE => nothing */
- 0, /* BITAND => nothing */
- 0, /* BITOR => nothing */
- 0, /* LSHIFT => nothing */
- 0, /* RSHIFT => nothing */
- 0, /* PLUS => nothing */
- 0, /* MINUS => nothing */
- 0, /* STAR => nothing */
- 0, /* SLASH => nothing */
- 0, /* REM => nothing */
- 0, /* CONCAT => nothing */
- 0, /* UMINUS => nothing */
- 0, /* UPLUS => nothing */
- 0, /* BITNOT => nothing */
- 0, /* STRING => nothing */
- 0, /* JOIN_KW => nothing */
- 0, /* INTEGER => nothing */
- 0, /* CONSTRAINT => nothing */
- 0, /* DEFAULT => nothing */
- 0, /* FLOAT => nothing */
- 0, /* NULL => nothing */
- 0, /* PRIMARY => nothing */
- 0, /* UNIQUE => nothing */
- 0, /* CHECK => nothing */
- 0, /* REFERENCES => nothing */
- 0, /* COLLATE => nothing */
- 0, /* ON => nothing */
- 0, /* DELETE => nothing */
- 0, /* UPDATE => nothing */
- 0, /* INSERT => nothing */
- 0, /* SET => nothing */
- 0, /* DEFERRABLE => nothing */
- 0, /* FOREIGN => nothing */
- 0, /* DROP => nothing */
- 0, /* UNION => nothing */
- 0, /* ALL => nothing */
- 0, /* INTERSECT => nothing */
- 0, /* EXCEPT => nothing */
- 0, /* SELECT => nothing */
- 0, /* DISTINCT => nothing */
- 0, /* DOT => nothing */
- 0, /* FROM => nothing */
- 0, /* JOIN => nothing */
- 0, /* USING => nothing */
- 0, /* ORDER => nothing */
- 0, /* BY => nothing */
- 0, /* GROUP => nothing */
- 0, /* HAVING => nothing */
- 0, /* LIMIT => nothing */
- 0, /* WHERE => nothing */
- 0, /* INTO => nothing */
- 0, /* VALUES => nothing */
- 0, /* VARIABLE => nothing */
- 0, /* CASE => nothing */
- 0, /* WHEN => nothing */
- 0, /* THEN => nothing */
- 0, /* ELSE => nothing */
- 0, /* INDEX => nothing */
};
#endif /* YYFALLBACK */
@@ -761,11 +638,11 @@ static const YYCODETYPE yyFallback[] = {
** It is sometimes called the "minor" token.
*/
struct yyStackEntry {
- int stateno; /* The state-number */
- int major; /* The major token value. This is the code
- ** number for the token at this stack level */
- YYMINORTYPE minor; /* The user-supplied minor token value. This
- ** is the value of the token */
+ YYACTIONTYPE stateno; /* The state-number */
+ YYCODETYPE major; /* The major token value. This is the code
+ ** number for the token at this stack level */
+ YYMINORTYPE minor; /* The user-supplied minor token value. This
+ ** is the value of the token */
};
typedef struct yyStackEntry yyStackEntry;
@@ -773,9 +650,17 @@ typedef struct yyStackEntry yyStackEntry;
** the following structure */
struct yyParser {
int yyidx; /* Index of top element in stack */
+#ifdef YYTRACKMAXSTACKDEPTH
+ int yyidxMax; /* Maximum value of yyidx */
+#endif
int yyerrcnt; /* Shifts left before out of the error */
sqliteParserARG_SDECL /* A place to hold %extra_argument */
+#if YYSTACKDEPTH<=0
+ int yystksz; /* Current side of the stack */
+ yyStackEntry *yystack; /* The parser's stack */
+#else
yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
+#endif
};
typedef struct yyParser yyParser;
@@ -1173,21 +1058,29 @@ static const char *const yyRuleName[] = {
};
#endif /* NDEBUG */
+
+#if YYSTACKDEPTH<=0
/*
-** This function returns the symbolic name associated with a token
-** value.
+** Try to increase the size of the parser stack.
*/
-const char *sqliteParserTokenName(int tokenType){
+static void yyGrowStack(yyParser *p){
+ int newSize;
+ yyStackEntry *pNew;
+
+ newSize = p->yystksz*2 + 100;
+ pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
+ if( pNew ){
+ p->yystack = pNew;
+ p->yystksz = newSize;
#ifndef NDEBUG
- if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
- return yyTokenName[tokenType];
- }else{
- return "Unknown";
- }
-#else
- return "";
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
+ yyTracePrompt, p->yystksz);
+ }
#endif
+ }
}
+#endif
/*
** This function allocates a new parser.
@@ -1206,6 +1099,14 @@ void *sqliteParserAlloc(void *(*mallocProc)(size_t)){
pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
if( pParser ){
pParser->yyidx = -1;
+#ifdef YYTRACKMAXSTACKDEPTH
+ pParser->yyidxMax = 0;
+#endif
+#if YYSTACKDEPTH<=0
+ pParser->yystack = NULL;
+ pParser->yystksz = 0;
+ yyGrowStack(pParser);
+#endif
}
return pParser;
}
@@ -1215,7 +1116,12 @@ void *sqliteParserAlloc(void *(*mallocProc)(size_t)){
** "yymajor" is the symbol code, and "yypminor" is a pointer to
** the value.
*/
-static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
+static void yy_destructor(
+ yyParser *yypParser, /* The parser */
+ YYCODETYPE yymajor, /* Type code for object to destroy */
+ YYMINORTYPE *yypminor /* The object to be destroyed */
+){
+ sqliteParserARG_FETCH;
switch( yymajor ){
/* Here is inserted the actions which take place when a
** terminal or non-terminal is destroyed. This can happen
@@ -1227,62 +1133,76 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
** which appear on the RHS of the rule, but which are not used
** inside the C code.
*/
- case 146:
- case 171:
- case 189:
-#line 286 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteSelectDelete((yypminor->yy179));}
-#line 1237 "ext/sqlite/libsqlite/src/parse.c"
+ case 146: /* select */
+ case 171: /* oneselect */
+ case 189: /* seltablist_paren */
+{
+#line 286 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteSelectDelete((yypminor->yy179));
+#line 1143 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 158:
- case 176:
- case 178:
- case 187:
- case 192:
- case 204:
-#line 533 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteExprDelete((yypminor->yy242));}
-#line 1247 "ext/sqlite/libsqlite/src/parse.c"
+ case 158: /* expr */
+ case 176: /* where_opt */
+ case 178: /* having_opt */
+ case 187: /* on_opt */
+ case 192: /* sortitem */
+ case 204: /* expritem */
+{
+#line 533 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteExprDelete((yypminor->yy242));
+#line 1155 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 159:
- case 167:
- case 188:
- case 197:
- case 199:
-#line 746 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteIdListDelete((yypminor->yy320));}
-#line 1256 "ext/sqlite/libsqlite/src/parse.c"
+ case 159: /* idxlist_opt */
+ case 167: /* idxlist */
+ case 188: /* using_opt */
+ case 197: /* inscollist_opt */
+ case 199: /* inscollist */
+{
+#line 746 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteIdListDelete((yypminor->yy320));
+#line 1166 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 174:
- case 177:
- case 179:
- case 181:
- case 191:
- case 194:
- case 195:
- case 198:
- case 202:
-#line 322 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteExprListDelete((yypminor->yy322));}
-#line 1269 "ext/sqlite/libsqlite/src/parse.c"
+ case 174: /* selcollist */
+ case 177: /* groupby_opt */
+ case 179: /* orderby_opt */
+ case 181: /* sclp */
+ case 191: /* sortlist */
+ case 194: /* exprlist */
+ case 195: /* setlist */
+ case 198: /* itemlist */
+ case 202: /* case_exprlist */
+{
+#line 322 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteExprListDelete((yypminor->yy322));
+#line 1181 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 175:
- case 183:
- case 184:
-#line 353 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteSrcListDelete((yypminor->yy307));}
-#line 1276 "ext/sqlite/libsqlite/src/parse.c"
+ case 175: /* from */
+ case 183: /* seltablist */
+ case 184: /* stl_prefix */
+{
+#line 353 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteSrcListDelete((yypminor->yy307));
+#line 1190 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 212:
- case 217:
-#line 828 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteDeleteTriggerStep((yypminor->yy19));}
-#line 1282 "ext/sqlite/libsqlite/src/parse.c"
+ case 212: /* trigger_cmd_list */
+ case 217: /* trigger_cmd */
+{
+#line 828 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteDeleteTriggerStep((yypminor->yy19));
+#line 1198 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
- case 214:
-#line 812 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteIdListDelete((yypminor->yy290).b);}
-#line 1287 "ext/sqlite/libsqlite/src/parse.c"
+ case 214: /* trigger_event */
+{
+#line 812 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+sqliteIdListDelete((yypminor->yy290).b);
+#line 1205 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+}
break;
default: break; /* If no destructor action specified: do nothing */
}
@@ -1309,7 +1229,7 @@ static int yy_pop_parser_stack(yyParser *pParser){
}
#endif
yymajor = yytos->major;
- yy_destructor( yymajor, &yytos->minor);
+ yy_destructor(pParser, yymajor, &yytos->minor);
pParser->yyidx--;
return yymajor;
}
@@ -1333,10 +1253,23 @@ void sqliteParserFree(
yyParser *pParser = (yyParser*)p;
if( pParser==0 ) return;
while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
+#if YYSTACKDEPTH<=0
+ free(pParser->yystack);
+#endif
(*freeProc)((void*)pParser);
}
/*
+** Return the peak depth of the stack for a parser.
+*/
+#ifdef YYTRACKMAXSTACKDEPTH
+int sqliteParserStackPeak(void *p){
+ yyParser *pParser = (yyParser*)p;
+ return pParser->yyidxMax;
+}
+#endif
+
+/*
** Find the appropriate action for a parser given the terminal
** look-ahead token iLookAhead.
**
@@ -1346,34 +1279,55 @@ void sqliteParserFree(
*/
static int yy_find_shift_action(
yyParser *pParser, /* The parser */
- int iLookAhead /* The look-ahead token */
+ YYCODETYPE iLookAhead /* The look-ahead token */
){
int i;
int stateno = pParser->yystack[pParser->yyidx].stateno;
- /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */
- i = yy_shift_ofst[stateno];
- if( i==YY_SHIFT_USE_DFLT ){
+ if( stateno>YY_SHIFT_COUNT
+ || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
return yy_default[stateno];
}
- if( iLookAhead==YYNOCODE ){
- return YY_NO_ACTION;
- }
+ assert( iLookAhead!=YYNOCODE );
i += iLookAhead;
- if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
+ if( iLookAhead>0 ){
#ifdef YYFALLBACK
- int iFallback; /* Fallback token */
- if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
- && (iFallback = yyFallback[iLookAhead])!=0 ){
+ YYCODETYPE iFallback; /* Fallback token */
+ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
+ && (iFallback = yyFallback[iLookAhead])!=0 ){
#ifndef NDEBUG
- if( yyTraceFILE ){
- fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
- yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
+ yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
+ }
+#endif
+ return yy_find_shift_action(pParser, iFallback);
}
#endif
- return yy_find_shift_action(pParser, iFallback);
- }
+#ifdef YYWILDCARD
+ {
+ int j = i - iLookAhead + YYWILDCARD;
+ if(
+#if YY_SHIFT_MIN+YYWILDCARD<0
+ j>=0 &&
#endif
+#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
+ j<YY_ACTTAB_COUNT &&
+#endif
+ yy_lookahead[j]==YYWILDCARD
+ ){
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
+ yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
+ }
+#endif /* NDEBUG */
+ return yy_action[j];
+ }
+ }
+#endif /* YYWILDCARD */
+ }
return yy_default[stateno];
}else{
return yy_action[i];
@@ -1390,24 +1344,46 @@ static int yy_find_shift_action(
*/
static int yy_find_reduce_action(
int stateno, /* Current state number */
- int iLookAhead /* The look-ahead token */
+ YYCODETYPE iLookAhead /* The look-ahead token */
){
int i;
- /* int stateno = pParser->yystack[pParser->yyidx].stateno; */
-
- i = yy_reduce_ofst[stateno];
- if( i==YY_REDUCE_USE_DFLT ){
+#ifdef YYERRORSYMBOL
+ if( stateno>YY_REDUCE_COUNT ){
return yy_default[stateno];
}
- if( iLookAhead==YYNOCODE ){
- return YY_NO_ACTION;
- }
+#else
+ assert( stateno<=YY_REDUCE_COUNT );
+#endif
+ i = yy_reduce_ofst[stateno];
+ assert( i!=YY_REDUCE_USE_DFLT );
+ assert( iLookAhead!=YYNOCODE );
i += iLookAhead;
- if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
+#ifdef YYERRORSYMBOL
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
return yy_default[stateno];
- }else{
- return yy_action[i];
}
+#else
+ assert( i>=0 && i<YY_ACTTAB_COUNT );
+ assert( yy_lookahead[i]==iLookAhead );
+#endif
+ return yy_action[i];
+}
+
+/*
+** The following routine is called if the stack overflows.
+*/
+static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
+ sqliteParserARG_FETCH;
+ yypParser->yyidx--;
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
+ }
+#endif
+ while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ /* Here code is inserted which will execute if the parser
+ ** stack every overflows */
+ sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument var */
}
/*
@@ -1417,27 +1393,32 @@ static void yy_shift(
yyParser *yypParser, /* The parser to be shifted */
int yyNewState, /* The new state to shift in */
int yyMajor, /* The major token to shift in */
- YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */
+ YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */
){
yyStackEntry *yytos;
yypParser->yyidx++;
- if( yypParser->yyidx>=YYSTACKDEPTH ){
- sqliteParserARG_FETCH;
- yypParser->yyidx--;
-#ifndef NDEBUG
- if( yyTraceFILE ){
- fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
- }
+#ifdef YYTRACKMAXSTACKDEPTH
+ if( yypParser->yyidx>yypParser->yyidxMax ){
+ yypParser->yyidxMax = yypParser->yyidx;
+ }
#endif
- while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
- /* Here code is inserted which will execute if the parser
- ** stack every overflows */
- sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument var */
- return;
+#if YYSTACKDEPTH>0
+ if( yypParser->yyidx>=YYSTACKDEPTH ){
+ yyStackOverflow(yypParser, yypMinor);
+ return;
+ }
+#else
+ if( yypParser->yyidx>=yypParser->yystksz ){
+ yyGrowStack(yypParser);
+ if( yypParser->yyidx>=yypParser->yystksz ){
+ yyStackOverflow(yypParser, yypMinor);
+ return;
+ }
}
+#endif
yytos = &yypParser->yystack[yypParser->yyidx];
- yytos->stateno = yyNewState;
- yytos->major = yyMajor;
+ yytos->stateno = (YYACTIONTYPE)yyNewState;
+ yytos->major = (YYCODETYPE)yyMajor;
yytos->minor = *yypMinor;
#ifndef NDEBUG
if( yyTraceFILE && yypParser->yyidx>0 ){
@@ -1772,13 +1753,12 @@ static void yy_reduce(
yymsp = &yypParser->yystack[yypParser->yyidx];
#ifndef NDEBUG
if( yyTraceFILE && yyruleno>=0
- && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
+ && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
yyRuleName[yyruleno]);
}
#endif /* NDEBUG */
-#ifndef NDEBUG
/* Silence complaints from purify about yygotominor being uninitialized
** in some cases when it is copied into the stack after the following
** switch. yygotominor is uninitialized when a rule reduces that does
@@ -1786,9 +1766,16 @@ static void yy_reduce(
** value of the nonterminal uninitialized is utterly harmless as long
** as the value is never used. So really the only thing this code
** accomplishes is to quieten purify.
+ **
+ ** 2007-01-16: The wireshark project (www.wireshark.org) reports that
+ ** without this code, their parser segfaults. I'm not sure what there
+ ** parser is doing to make this happen. This is the second bug report
+ ** from wireshark this week. Clearly they are stressing Lemon in ways
+ ** that it has not been previously stressed... (SQLite ticket #2172)
*/
- memset(&yygotominor, 0, sizeof(yygotominor));
-#endif
+ /*memset(&yygotominor, 0, sizeof(yygotominor));*/
+ yygotominor = yyzerominor;
+
switch( yyruleno ){
/* Beginning here are the reduction cases. A typical example
@@ -1799,330 +1786,340 @@ static void yy_reduce(
** #line <lineno> <thisfile>
** break;
*/
- case 5:
-#line 72 "ext/sqlite/libsqlite/src/parse.y"
+ case 5: /* cmdx ::= cmd */
+#line 72 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteExec(pParse); }
-#line 1807 "ext/sqlite/libsqlite/src/parse.c"
+#line 1793 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 6:
-#line 73 "ext/sqlite/libsqlite/src/parse.y"
+ case 6: /* explain ::= EXPLAIN */
+#line 73 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteBeginParse(pParse, 1); }
-#line 1812 "ext/sqlite/libsqlite/src/parse.c"
+#line 1798 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 7:
-#line 74 "ext/sqlite/libsqlite/src/parse.y"
+ case 7: /* explain ::= */
+#line 74 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteBeginParse(pParse, 0); }
-#line 1817 "ext/sqlite/libsqlite/src/parse.c"
+#line 1803 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 8:
-#line 79 "ext/sqlite/libsqlite/src/parse.y"
+ case 8: /* cmd ::= BEGIN trans_opt onconf */
+#line 79 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteBeginTransaction(pParse,yymsp[0].minor.yy372);}
-#line 1822 "ext/sqlite/libsqlite/src/parse.c"
+#line 1808 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 12:
- case 13:
-#line 83 "ext/sqlite/libsqlite/src/parse.y"
+ case 12: /* cmd ::= COMMIT trans_opt */
+ case 13: /* cmd ::= END trans_opt */ yytestcase(yyruleno==13);
+#line 83 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCommitTransaction(pParse);}
-#line 1828 "ext/sqlite/libsqlite/src/parse.c"
+#line 1814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 14:
-#line 85 "ext/sqlite/libsqlite/src/parse.y"
+ case 14: /* cmd ::= ROLLBACK trans_opt */
+#line 85 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteRollbackTransaction(pParse);}
-#line 1833 "ext/sqlite/libsqlite/src/parse.c"
+#line 1819 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 16:
-#line 90 "ext/sqlite/libsqlite/src/parse.y"
+ case 16: /* create_table ::= CREATE temp TABLE nm */
+#line 90 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy298,yymsp[-2].minor.yy372,0);
+ sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0,yymsp[-2].minor.yy372,0);
}
-#line 1840 "ext/sqlite/libsqlite/src/parse.c"
+#line 1826 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 17:
- case 74:
- case 108:
-#line 94 "ext/sqlite/libsqlite/src/parse.y"
+ case 17: /* temp ::= TEMP */
+ case 74: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ yytestcase(yyruleno==74);
+ case 108: /* distinct ::= DISTINCT */ yytestcase(yyruleno==108);
+#line 94 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = 1;}
-#line 1847 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 18:
- case 73:
- case 75:
- case 86:
- case 109:
- case 110:
-#line 95 "ext/sqlite/libsqlite/src/parse.y"
+#line 1833 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 18: /* temp ::= */
+ case 73: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==73);
+ case 75: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ yytestcase(yyruleno==75);
+ case 86: /* defer_subclause_opt ::= */ yytestcase(yyruleno==86);
+ case 109: /* distinct ::= ALL */ yytestcase(yyruleno==109);
+ case 110: /* distinct ::= */ yytestcase(yyruleno==110);
+#line 95 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = 0;}
-#line 1857 "ext/sqlite/libsqlite/src/parse.c"
+#line 1843 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 19:
-#line 96 "ext/sqlite/libsqlite/src/parse.y"
+ case 19: /* create_table_args ::= LP columnlist conslist_opt RP */
+#line 96 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
sqliteEndTable(pParse,&yymsp[0].minor.yy0,0);
}
-#line 1864 "ext/sqlite/libsqlite/src/parse.c"
+#line 1850 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 20:
-#line 99 "ext/sqlite/libsqlite/src/parse.y"
+ case 20: /* create_table_args ::= AS select */
+#line 99 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
sqliteEndTable(pParse,0,yymsp[0].minor.yy179);
sqliteSelectDelete(yymsp[0].minor.yy179);
}
-#line 1872 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 24:
-#line 111 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteAddColumn(pParse,&yymsp[0].minor.yy298);}
-#line 1877 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 25:
- case 26:
- case 27:
- case 28:
- case 29:
- case 30:
- case 256:
- case 257:
-#line 117 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy298 = yymsp[0].minor.yy0;}
-#line 1889 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 32:
-#line 160 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteAddColumnType(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298);}
-#line 1894 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 33:
-#line 161 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteAddColumnType(pParse,&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0);}
-#line 1899 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 34:
-#line 163 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteAddColumnType(pParse,&yymsp[-5].minor.yy298,&yymsp[0].minor.yy0);}
-#line 1904 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 35:
- case 128:
- case 254:
- case 255:
-#line 165 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy298 = yymsp[0].minor.yy298;}
-#line 1912 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 36:
- case 242:
-#line 166 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy298 = yymsp[-1].minor.yy298;}
-#line 1918 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 37:
- case 38:
-#line 168 "ext/sqlite/libsqlite/src/parse.y"
+#line 1858 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 24: /* columnid ::= nm */
+#line 111 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteAddColumn(pParse,&yymsp[0].minor.yy0);}
+#line 1863 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 25: /* id ::= ID */
+ case 26: /* ids ::= ID */ yytestcase(yyruleno==26);
+ case 27: /* ids ::= STRING */ yytestcase(yyruleno==27);
+ case 28: /* nm ::= ID */ yytestcase(yyruleno==28);
+ case 29: /* nm ::= STRING */ yytestcase(yyruleno==29);
+ case 30: /* nm ::= JOIN_KW */ yytestcase(yyruleno==30);
+ case 35: /* typename ::= ids */ yytestcase(yyruleno==35);
+ case 128: /* dbnm ::= DOT nm */ yytestcase(yyruleno==128);
+ case 254: /* plus_num ::= plus_opt number */ yytestcase(yyruleno==254);
+ case 255: /* minus_num ::= MINUS number */ yytestcase(yyruleno==255);
+ case 256: /* number ::= INTEGER */ yytestcase(yyruleno==256);
+ case 257: /* number ::= FLOAT */ yytestcase(yyruleno==257);
+#line 117 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy0 = yymsp[0].minor.yy0;}
+#line 1879 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 32: /* type ::= typename */
+#line 160 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteAddColumnType(pParse,&yymsp[0].minor.yy0,&yymsp[0].minor.yy0);}
+#line 1884 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 33: /* type ::= typename LP signed RP */
+#line 161 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteAddColumnType(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);}
+#line 1889 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 34: /* type ::= typename LP signed COMMA signed RP */
+#line 163 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteAddColumnType(pParse,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);}
+#line 1894 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 36: /* typename ::= typename ids */
+ case 242: /* idxitem ::= nm sortorder */ yytestcase(yyruleno==242);
+#line 166 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy0 = yymsp[-1].minor.yy0;}
+#line 1900 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 37: /* signed ::= INTEGER */
+ case 38: /* signed ::= PLUS INTEGER */ yytestcase(yyruleno==38);
+#line 168 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
-#line 1924 "ext/sqlite/libsqlite/src/parse.c"
+#line 1906 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 39:
-#line 170 "ext/sqlite/libsqlite/src/parse.y"
+ case 39: /* signed ::= MINUS INTEGER */
+#line 170 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = -atoi(yymsp[0].minor.yy0.z); }
-#line 1929 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 44:
- case 45:
- case 46:
- case 47:
- case 49:
- case 50:
-#line 175 "ext/sqlite/libsqlite/src/parse.y"
+#line 1911 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 44: /* carg ::= DEFAULT STRING */
+ case 45: /* carg ::= DEFAULT ID */ yytestcase(yyruleno==45);
+ case 46: /* carg ::= DEFAULT INTEGER */ yytestcase(yyruleno==46);
+ case 47: /* carg ::= DEFAULT PLUS INTEGER */ yytestcase(yyruleno==47);
+ case 49: /* carg ::= DEFAULT FLOAT */ yytestcase(yyruleno==49);
+ case 50: /* carg ::= DEFAULT PLUS FLOAT */ yytestcase(yyruleno==50);
+#line 175 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
-#line 1939 "ext/sqlite/libsqlite/src/parse.c"
+#line 1921 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 48:
- case 51:
-#line 179 "ext/sqlite/libsqlite/src/parse.y"
+ case 48: /* carg ::= DEFAULT MINUS INTEGER */
+ case 51: /* carg ::= DEFAULT MINUS FLOAT */ yytestcase(yyruleno==51);
+#line 179 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
-#line 1945 "ext/sqlite/libsqlite/src/parse.c"
+#line 1927 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 54:
-#line 189 "ext/sqlite/libsqlite/src/parse.y"
+ case 54: /* ccons ::= NOT NULL onconf */
+#line 189 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddNotNull(pParse, yymsp[0].minor.yy372);}
-#line 1950 "ext/sqlite/libsqlite/src/parse.c"
+#line 1932 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 55:
-#line 190 "ext/sqlite/libsqlite/src/parse.y"
+ case 55: /* ccons ::= PRIMARY KEY sortorder onconf */
+#line 190 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy372);}
-#line 1955 "ext/sqlite/libsqlite/src/parse.c"
+#line 1937 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 56:
-#line 191 "ext/sqlite/libsqlite/src/parse.y"
+ case 56: /* ccons ::= UNIQUE onconf */
+#line 191 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy372,0,0);}
-#line 1960 "ext/sqlite/libsqlite/src/parse.c"
+#line 1942 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 58:
-#line 194 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy298,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);}
-#line 1965 "ext/sqlite/libsqlite/src/parse.c"
+ case 57: /* ccons ::= CHECK LP expr RP onconf */
+#line 192 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{
+ yy_destructor(yypParser,158,&yymsp[-2].minor);
+}
+#line 1949 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 58: /* ccons ::= REFERENCES nm idxlist_opt refargs */
+#line 194 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);}
+#line 1954 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 59:
-#line 195 "ext/sqlite/libsqlite/src/parse.y"
+ case 59: /* ccons ::= defer_subclause */
+#line 195 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);}
-#line 1970 "ext/sqlite/libsqlite/src/parse.c"
+#line 1959 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 60:
-#line 196 "ext/sqlite/libsqlite/src/parse.y"
+ case 60: /* ccons ::= COLLATE id */
+#line 196 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n));
+ sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n));
}
-#line 1977 "ext/sqlite/libsqlite/src/parse.c"
+#line 1966 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 61:
-#line 206 "ext/sqlite/libsqlite/src/parse.y"
+ case 61: /* refargs ::= */
+#line 206 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Restrict * 0x010101; }
-#line 1982 "ext/sqlite/libsqlite/src/parse.c"
+#line 1971 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 62:
-#line 207 "ext/sqlite/libsqlite/src/parse.y"
+ case 62: /* refargs ::= refargs refarg */
+#line 207 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = (yymsp[-1].minor.yy372 & yymsp[0].minor.yy407.mask) | yymsp[0].minor.yy407.value; }
-#line 1987 "ext/sqlite/libsqlite/src/parse.c"
+#line 1976 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 63:
-#line 209 "ext/sqlite/libsqlite/src/parse.y"
+ case 63: /* refarg ::= MATCH nm */
+#line 209 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = 0; yygotominor.yy407.mask = 0x000000; }
-#line 1992 "ext/sqlite/libsqlite/src/parse.c"
+#line 1981 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 64:
-#line 210 "ext/sqlite/libsqlite/src/parse.y"
+ case 64: /* refarg ::= ON DELETE refact */
+#line 210 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372; yygotominor.yy407.mask = 0x0000ff; }
-#line 1997 "ext/sqlite/libsqlite/src/parse.c"
+#line 1986 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 65:
-#line 211 "ext/sqlite/libsqlite/src/parse.y"
+ case 65: /* refarg ::= ON UPDATE refact */
+#line 211 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372<<8; yygotominor.yy407.mask = 0x00ff00; }
-#line 2002 "ext/sqlite/libsqlite/src/parse.c"
+#line 1991 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 66:
-#line 212 "ext/sqlite/libsqlite/src/parse.y"
+ case 66: /* refarg ::= ON INSERT refact */
+#line 212 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372<<16; yygotominor.yy407.mask = 0xff0000; }
-#line 2007 "ext/sqlite/libsqlite/src/parse.c"
+#line 1996 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 67:
-#line 214 "ext/sqlite/libsqlite/src/parse.y"
+ case 67: /* refact ::= SET NULL */
+#line 214 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_SetNull; }
-#line 2012 "ext/sqlite/libsqlite/src/parse.c"
+#line 2001 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 68:
-#line 215 "ext/sqlite/libsqlite/src/parse.y"
+ case 68: /* refact ::= SET DEFAULT */
+#line 215 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_SetDflt; }
-#line 2017 "ext/sqlite/libsqlite/src/parse.c"
+#line 2006 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 69:
-#line 216 "ext/sqlite/libsqlite/src/parse.y"
+ case 69: /* refact ::= CASCADE */
+#line 216 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Cascade; }
-#line 2022 "ext/sqlite/libsqlite/src/parse.c"
+#line 2011 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 70:
-#line 217 "ext/sqlite/libsqlite/src/parse.y"
+ case 70: /* refact ::= RESTRICT */
+#line 217 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Restrict; }
-#line 2027 "ext/sqlite/libsqlite/src/parse.c"
+#line 2016 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 71:
- case 72:
- case 87:
- case 164:
-#line 219 "ext/sqlite/libsqlite/src/parse.y"
+ case 71: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+ case 72: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ yytestcase(yyruleno==72);
+ case 87: /* defer_subclause_opt ::= defer_subclause */ yytestcase(yyruleno==87);
+ case 164: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==164);
+#line 219 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = yymsp[0].minor.yy372;}
-#line 2035 "ext/sqlite/libsqlite/src/parse.c"
+#line 2024 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 82:
-#line 236 "ext/sqlite/libsqlite/src/parse.y"
+ case 82: /* tcons ::= PRIMARY KEY LP idxlist RP onconf */
+#line 236 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy320,yymsp[0].minor.yy372);}
-#line 2040 "ext/sqlite/libsqlite/src/parse.c"
+#line 2029 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 83:
-#line 238 "ext/sqlite/libsqlite/src/parse.y"
+ case 83: /* tcons ::= UNIQUE LP idxlist RP onconf */
+#line 238 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy320,yymsp[0].minor.yy372,0,0);}
-#line 2045 "ext/sqlite/libsqlite/src/parse.c"
+#line 2034 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 84: /* tcons ::= CHECK expr onconf */
+#line 239 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{
+ yy_destructor(yypParser,158,&yymsp[-1].minor);
+}
+#line 2041 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 85:
-#line 241 "ext/sqlite/libsqlite/src/parse.y"
+ case 85: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
+#line 241 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy298, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372);
+ sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372);
sqliteDeferForeignKey(pParse, yymsp[0].minor.yy372);
}
-#line 2053 "ext/sqlite/libsqlite/src/parse.c"
+#line 2049 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 88:
- case 90:
-#line 255 "ext/sqlite/libsqlite/src/parse.y"
+ case 88: /* onconf ::= */
+ case 90: /* orconf ::= */ yytestcase(yyruleno==90);
+#line 255 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Default; }
-#line 2059 "ext/sqlite/libsqlite/src/parse.c"
+#line 2055 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 89:
- case 91:
-#line 256 "ext/sqlite/libsqlite/src/parse.y"
+ case 89: /* onconf ::= ON CONFLICT resolvetype */
+ case 91: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==91);
+#line 256 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = yymsp[0].minor.yy372; }
-#line 2065 "ext/sqlite/libsqlite/src/parse.c"
+#line 2061 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 92:
-#line 259 "ext/sqlite/libsqlite/src/parse.y"
+ case 92: /* resolvetype ::= ROLLBACK */
+#line 259 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Rollback; }
-#line 2070 "ext/sqlite/libsqlite/src/parse.c"
+#line 2066 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 93:
- case 236:
-#line 260 "ext/sqlite/libsqlite/src/parse.y"
+ case 93: /* resolvetype ::= ABORT */
+ case 236: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==236);
+#line 260 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Abort; }
-#line 2076 "ext/sqlite/libsqlite/src/parse.c"
+#line 2072 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 94:
-#line 261 "ext/sqlite/libsqlite/src/parse.y"
+ case 94: /* resolvetype ::= FAIL */
+#line 261 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Fail; }
-#line 2081 "ext/sqlite/libsqlite/src/parse.c"
+#line 2077 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 95:
-#line 262 "ext/sqlite/libsqlite/src/parse.y"
+ case 95: /* resolvetype ::= IGNORE */
+#line 262 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Ignore; }
-#line 2086 "ext/sqlite/libsqlite/src/parse.c"
+#line 2082 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 96:
-#line 263 "ext/sqlite/libsqlite/src/parse.y"
+ case 96: /* resolvetype ::= REPLACE */
+#line 263 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Replace; }
-#line 2091 "ext/sqlite/libsqlite/src/parse.c"
+#line 2087 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 97:
-#line 267 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteDropTable(pParse,&yymsp[0].minor.yy298,0);}
-#line 2096 "ext/sqlite/libsqlite/src/parse.c"
+ case 97: /* cmd ::= DROP TABLE nm */
+#line 267 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteDropTable(pParse,&yymsp[0].minor.yy0,0);}
+#line 2092 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 98:
-#line 271 "ext/sqlite/libsqlite/src/parse.y"
+ case 98: /* cmd ::= CREATE temp VIEW nm AS select */
+#line 271 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy298, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);
+ sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);
}
-#line 2103 "ext/sqlite/libsqlite/src/parse.c"
+#line 2099 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 99:
-#line 274 "ext/sqlite/libsqlite/src/parse.y"
+ case 99: /* cmd ::= DROP VIEW nm */
+#line 274 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteDropTable(pParse, &yymsp[0].minor.yy298, 1);
+ sqliteDropTable(pParse, &yymsp[0].minor.yy0, 1);
}
-#line 2110 "ext/sqlite/libsqlite/src/parse.c"
+#line 2106 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 100:
-#line 280 "ext/sqlite/libsqlite/src/parse.y"
+ case 100: /* cmd ::= select */
+#line 280 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
sqliteSelect(pParse, yymsp[0].minor.yy179, SRT_Callback, 0, 0, 0, 0);
sqliteSelectDelete(yymsp[0].minor.yy179);
}
-#line 2118 "ext/sqlite/libsqlite/src/parse.c"
+#line 2114 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 101:
- case 125:
-#line 290 "ext/sqlite/libsqlite/src/parse.y"
+ case 101: /* select ::= oneselect */
+ case 125: /* seltablist_paren ::= select */ yytestcase(yyruleno==125);
+#line 290 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy179 = yymsp[0].minor.yy179;}
-#line 2124 "ext/sqlite/libsqlite/src/parse.c"
+#line 2120 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 102:
-#line 291 "ext/sqlite/libsqlite/src/parse.y"
+ case 102: /* select ::= select multiselect_op oneselect */
+#line 291 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
if( yymsp[0].minor.yy179 ){
yymsp[0].minor.yy179->op = yymsp[-1].minor.yy372;
@@ -2130,110 +2127,110 @@ static void yy_reduce(
}
yygotominor.yy179 = yymsp[0].minor.yy179;
}
-#line 2135 "ext/sqlite/libsqlite/src/parse.c"
+#line 2131 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 103:
-#line 299 "ext/sqlite/libsqlite/src/parse.y"
+ case 103: /* multiselect_op ::= UNION */
+#line 299 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_UNION;}
-#line 2140 "ext/sqlite/libsqlite/src/parse.c"
+#line 2136 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 104:
-#line 300 "ext/sqlite/libsqlite/src/parse.y"
+ case 104: /* multiselect_op ::= UNION ALL */
+#line 300 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_ALL;}
-#line 2145 "ext/sqlite/libsqlite/src/parse.c"
+#line 2141 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 105:
-#line 301 "ext/sqlite/libsqlite/src/parse.y"
+ case 105: /* multiselect_op ::= INTERSECT */
+#line 301 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_INTERSECT;}
-#line 2150 "ext/sqlite/libsqlite/src/parse.c"
+#line 2146 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 106:
-#line 302 "ext/sqlite/libsqlite/src/parse.y"
+ case 106: /* multiselect_op ::= EXCEPT */
+#line 302 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_EXCEPT;}
-#line 2155 "ext/sqlite/libsqlite/src/parse.c"
+#line 2151 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 107:
-#line 304 "ext/sqlite/libsqlite/src/parse.y"
+ case 107: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+#line 304 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy179 = sqliteSelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy307,yymsp[-4].minor.yy242,yymsp[-3].minor.yy322,yymsp[-2].minor.yy242,yymsp[-1].minor.yy322,yymsp[-7].minor.yy372,yymsp[0].minor.yy124.limit,yymsp[0].minor.yy124.offset);
}
-#line 2162 "ext/sqlite/libsqlite/src/parse.c"
+#line 2158 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 111:
-#line 325 "ext/sqlite/libsqlite/src/parse.y"
+ case 111: /* sclp ::= selcollist COMMA */
+#line 325 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = yymsp[-1].minor.yy322;}
-#line 2167 "ext/sqlite/libsqlite/src/parse.c"
+#line 2163 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 112:
- case 138:
- case 148:
-#line 326 "ext/sqlite/libsqlite/src/parse.y"
+ case 112: /* sclp ::= */
+ case 138: /* orderby_opt ::= */ yytestcase(yyruleno==138);
+ case 148: /* groupby_opt ::= */ yytestcase(yyruleno==148);
+#line 326 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = 0;}
-#line 2174 "ext/sqlite/libsqlite/src/parse.c"
+#line 2170 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 113:
-#line 327 "ext/sqlite/libsqlite/src/parse.y"
+ case 113: /* selcollist ::= sclp expr as */
+#line 327 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy298.n?&yymsp[0].minor.yy298:0);
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
}
-#line 2181 "ext/sqlite/libsqlite/src/parse.c"
+#line 2177 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 114:
-#line 330 "ext/sqlite/libsqlite/src/parse.y"
+ case 114: /* selcollist ::= sclp STAR */
+#line 330 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy322 = sqliteExprListAppend(yymsp[-1].minor.yy322, sqliteExpr(TK_ALL, 0, 0, 0), 0);
}
-#line 2188 "ext/sqlite/libsqlite/src/parse.c"
+#line 2184 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 115:
-#line 333 "ext/sqlite/libsqlite/src/parse.y"
+ case 115: /* selcollist ::= sclp nm DOT STAR */
+#line 333 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0);
- Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
+ Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
yygotominor.yy322 = sqliteExprListAppend(yymsp[-3].minor.yy322, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0);
}
-#line 2197 "ext/sqlite/libsqlite/src/parse.c"
+#line 2193 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 116:
- case 117:
- case 288:
-#line 343 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy298 = yymsp[0].minor.yy298; }
-#line 2204 "ext/sqlite/libsqlite/src/parse.c"
+ case 116: /* as ::= AS nm */
+ case 117: /* as ::= ids */ yytestcase(yyruleno==117);
+ case 288: /* key_opt ::= USING ids */ yytestcase(yyruleno==288);
+#line 343 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy0 = yymsp[0].minor.yy0; }
+#line 2200 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 118:
-#line 345 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy298.n = 0; }
-#line 2209 "ext/sqlite/libsqlite/src/parse.c"
+ case 118: /* as ::= */
+#line 345 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy0.n = 0; }
+#line 2205 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 119:
-#line 357 "ext/sqlite/libsqlite/src/parse.y"
+ case 119: /* from ::= */
+#line 357 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));}
-#line 2214 "ext/sqlite/libsqlite/src/parse.c"
+#line 2210 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 120:
-#line 358 "ext/sqlite/libsqlite/src/parse.y"
+ case 120: /* from ::= FROM seltablist */
+#line 358 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = yymsp[0].minor.yy307;}
-#line 2219 "ext/sqlite/libsqlite/src/parse.c"
+#line 2215 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 121:
-#line 363 "ext/sqlite/libsqlite/src/parse.y"
+ case 121: /* stl_prefix ::= seltablist joinop */
+#line 363 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy307 = yymsp[-1].minor.yy307;
if( yygotominor.yy307 && yygotominor.yy307->nSrc>0 ) yygotominor.yy307->a[yygotominor.yy307->nSrc-1].jointype = yymsp[0].minor.yy372;
}
-#line 2227 "ext/sqlite/libsqlite/src/parse.c"
+#line 2223 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 122:
-#line 367 "ext/sqlite/libsqlite/src/parse.y"
+ case 122: /* stl_prefix ::= */
+#line 367 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = 0;}
-#line 2232 "ext/sqlite/libsqlite/src/parse.c"
+#line 2228 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 123:
-#line 368 "ext/sqlite/libsqlite/src/parse.y"
+ case 123: /* seltablist ::= stl_prefix nm dbnm as on_opt using_opt */
+#line 368 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298);
- if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298);
+ yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0);
+ if( yymsp[-2].minor.yy0.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy0);
if( yymsp[-1].minor.yy242 ){
if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
else { sqliteExprDelete(yymsp[-1].minor.yy242); }
@@ -2243,14 +2240,14 @@ static void yy_reduce(
else { sqliteIdListDelete(yymsp[0].minor.yy320); }
}
}
-#line 2248 "ext/sqlite/libsqlite/src/parse.c"
+#line 2244 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 124:
-#line 381 "ext/sqlite/libsqlite/src/parse.y"
+ case 124: /* seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt */
+#line 381 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy307 = sqliteSrcListAppend(yymsp[-6].minor.yy307,0,0);
yygotominor.yy307->a[yygotominor.yy307->nSrc-1].pSelect = yymsp[-4].minor.yy179;
- if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298);
+ if( yymsp[-2].minor.yy0.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy0);
if( yymsp[-1].minor.yy242 ){
if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
else { sqliteExprDelete(yymsp[-1].minor.yy242); }
@@ -2260,337 +2257,337 @@ static void yy_reduce(
else { sqliteIdListDelete(yymsp[0].minor.yy320); }
}
}
-#line 2265 "ext/sqlite/libsqlite/src/parse.c"
+#line 2261 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 126:
-#line 402 "ext/sqlite/libsqlite/src/parse.y"
+ case 126: /* seltablist_paren ::= seltablist */
+#line 402 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy179 = sqliteSelectNew(0,yymsp[0].minor.yy307,0,0,0,0,0,-1,0);
}
-#line 2272 "ext/sqlite/libsqlite/src/parse.c"
+#line 2268 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 127:
-#line 407 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy298.z=0; yygotominor.yy298.n=0;}
-#line 2277 "ext/sqlite/libsqlite/src/parse.c"
+ case 127: /* dbnm ::= */
+#line 407 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy0.z=0; yygotominor.yy0.n=0;}
+#line 2273 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 129:
- case 130:
-#line 412 "ext/sqlite/libsqlite/src/parse.y"
+ case 129: /* joinop ::= COMMA */
+ case 130: /* joinop ::= JOIN */ yytestcase(yyruleno==130);
+#line 412 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = JT_INNER; }
-#line 2283 "ext/sqlite/libsqlite/src/parse.c"
+#line 2279 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 131:
-#line 414 "ext/sqlite/libsqlite/src/parse.y"
+ case 131: /* joinop ::= JOIN_KW JOIN */
+#line 414 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
-#line 2288 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 132:
-#line 415 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy298,0); }
-#line 2293 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 133:
-#line 417 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298); }
-#line 2298 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 134:
- case 142:
- case 151:
- case 158:
- case 227:
- case 229:
- case 233:
-#line 421 "ext/sqlite/libsqlite/src/parse.y"
+#line 2284 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 132: /* joinop ::= JOIN_KW nm JOIN */
+#line 415 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); }
+#line 2289 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 133: /* joinop ::= JOIN_KW nm nm JOIN */
+#line 417 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); }
+#line 2294 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 134: /* on_opt ::= ON expr */
+ case 142: /* sortitem ::= expr */ yytestcase(yyruleno==142);
+ case 151: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==151);
+ case 158: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==158);
+ case 227: /* case_else ::= ELSE expr */ yytestcase(yyruleno==227);
+ case 229: /* case_operand ::= expr */ yytestcase(yyruleno==229);
+ case 233: /* expritem ::= expr */ yytestcase(yyruleno==233);
+#line 421 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = yymsp[0].minor.yy242;}
-#line 2309 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 135:
- case 150:
- case 157:
- case 228:
- case 230:
- case 234:
-#line 422 "ext/sqlite/libsqlite/src/parse.y"
+#line 2305 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 135: /* on_opt ::= */
+ case 150: /* having_opt ::= */ yytestcase(yyruleno==150);
+ case 157: /* where_opt ::= */ yytestcase(yyruleno==157);
+ case 228: /* case_else ::= */ yytestcase(yyruleno==228);
+ case 230: /* case_operand ::= */ yytestcase(yyruleno==230);
+ case 234: /* expritem ::= */ yytestcase(yyruleno==234);
+#line 422 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = 0;}
-#line 2319 "ext/sqlite/libsqlite/src/parse.c"
+#line 2315 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 136:
- case 169:
- case 239:
-#line 426 "ext/sqlite/libsqlite/src/parse.y"
+ case 136: /* using_opt ::= USING LP idxlist RP */
+ case 169: /* inscollist_opt ::= LP inscollist RP */ yytestcase(yyruleno==169);
+ case 239: /* idxlist_opt ::= LP idxlist RP */ yytestcase(yyruleno==239);
+#line 426 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = yymsp[-1].minor.yy320;}
-#line 2326 "ext/sqlite/libsqlite/src/parse.c"
+#line 2322 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 137:
- case 168:
- case 238:
-#line 427 "ext/sqlite/libsqlite/src/parse.y"
+ case 137: /* using_opt ::= */
+ case 168: /* inscollist_opt ::= */ yytestcase(yyruleno==168);
+ case 238: /* idxlist_opt ::= */ yytestcase(yyruleno==238);
+#line 427 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = 0;}
-#line 2333 "ext/sqlite/libsqlite/src/parse.c"
+#line 2329 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 139:
- case 149:
-#line 438 "ext/sqlite/libsqlite/src/parse.y"
+ case 139: /* orderby_opt ::= ORDER BY sortlist */
+ case 149: /* groupby_opt ::= GROUP BY exprlist */ yytestcase(yyruleno==149);
+#line 438 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = yymsp[0].minor.yy322;}
-#line 2339 "ext/sqlite/libsqlite/src/parse.c"
+#line 2335 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 140:
-#line 439 "ext/sqlite/libsqlite/src/parse.y"
+ case 140: /* sortlist ::= sortlist COMMA sortitem collate sortorder */
+#line 439 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy242,0);
if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
}
-#line 2347 "ext/sqlite/libsqlite/src/parse.c"
+#line 2343 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 141:
-#line 443 "ext/sqlite/libsqlite/src/parse.y"
+ case 141: /* sortlist ::= sortitem collate sortorder */
+#line 443 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy322 = sqliteExprListAppend(0,yymsp[-2].minor.yy242,0);
if( yygotominor.yy322 ) yygotominor.yy322->a[0].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
}
-#line 2355 "ext/sqlite/libsqlite/src/parse.c"
+#line 2351 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 143:
- case 145:
-#line 452 "ext/sqlite/libsqlite/src/parse.y"
+ case 143: /* sortorder ::= ASC */
+ case 145: /* sortorder ::= */ yytestcase(yyruleno==145);
+#line 452 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_ASC;}
-#line 2361 "ext/sqlite/libsqlite/src/parse.c"
+#line 2357 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 144:
-#line 453 "ext/sqlite/libsqlite/src/parse.y"
+ case 144: /* sortorder ::= DESC */
+#line 453 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_DESC;}
-#line 2366 "ext/sqlite/libsqlite/src/parse.c"
+#line 2362 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 146:
-#line 455 "ext/sqlite/libsqlite/src/parse.y"
+ case 146: /* collate ::= */
+#line 455 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_UNK;}
-#line 2371 "ext/sqlite/libsqlite/src/parse.c"
+#line 2367 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 147:
-#line 456 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n);}
-#line 2376 "ext/sqlite/libsqlite/src/parse.c"
+ case 147: /* collate ::= COLLATE id */
+#line 456 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);}
+#line 2372 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 152:
-#line 469 "ext/sqlite/libsqlite/src/parse.y"
+ case 152: /* limit_opt ::= */
+#line 469 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = -1; yygotominor.yy124.offset = 0;}
-#line 2381 "ext/sqlite/libsqlite/src/parse.c"
+#line 2377 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 153:
-#line 470 "ext/sqlite/libsqlite/src/parse.y"
+ case 153: /* limit_opt ::= LIMIT signed */
+#line 470 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = 0;}
-#line 2386 "ext/sqlite/libsqlite/src/parse.c"
+#line 2382 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 154:
-#line 472 "ext/sqlite/libsqlite/src/parse.y"
+ case 154: /* limit_opt ::= LIMIT signed OFFSET signed */
+#line 472 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[-2].minor.yy372; yygotominor.yy124.offset = yymsp[0].minor.yy372;}
-#line 2391 "ext/sqlite/libsqlite/src/parse.c"
+#line 2387 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 155:
-#line 474 "ext/sqlite/libsqlite/src/parse.y"
+ case 155: /* limit_opt ::= LIMIT signed COMMA signed */
+#line 474 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = yymsp[-2].minor.yy372;}
-#line 2396 "ext/sqlite/libsqlite/src/parse.c"
+#line 2392 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 156:
-#line 478 "ext/sqlite/libsqlite/src/parse.y"
+ case 156: /* cmd ::= DELETE FROM nm dbnm where_opt */
+#line 478 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298), yymsp[0].minor.yy242);
+ sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0), yymsp[0].minor.yy242);
}
-#line 2403 "ext/sqlite/libsqlite/src/parse.c"
+#line 2399 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 159:
-#line 494 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);}
-#line 2408 "ext/sqlite/libsqlite/src/parse.c"
+ case 159: /* cmd ::= UPDATE orconf nm dbnm SET setlist where_opt */
+#line 494 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);}
+#line 2404 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 160:
-#line 497 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
-#line 2413 "ext/sqlite/libsqlite/src/parse.c"
+ case 160: /* setlist ::= setlist COMMA nm EQ expr */
+#line 497 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy0);}
+#line 2409 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 161:
-#line 498 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
-#line 2418 "ext/sqlite/libsqlite/src/parse.c"
+ case 161: /* setlist ::= nm EQ expr */
+#line 498 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy0);}
+#line 2414 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 162:
-#line 504 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);}
-#line 2423 "ext/sqlite/libsqlite/src/parse.c"
+ case 162: /* cmd ::= insert_cmd INTO nm dbnm inscollist_opt VALUES LP itemlist RP */
+#line 504 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);}
+#line 2419 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 163:
-#line 506 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);}
-#line 2428 "ext/sqlite/libsqlite/src/parse.c"
+ case 163: /* cmd ::= insert_cmd INTO nm dbnm inscollist_opt select */
+#line 506 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);}
+#line 2424 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 165:
-#line 510 "ext/sqlite/libsqlite/src/parse.y"
+ case 165: /* insert_cmd ::= REPLACE */
+#line 510 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = OE_Replace;}
-#line 2433 "ext/sqlite/libsqlite/src/parse.c"
+#line 2429 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 166:
- case 231:
-#line 516 "ext/sqlite/libsqlite/src/parse.y"
+ case 166: /* itemlist ::= itemlist COMMA expr */
+ case 231: /* exprlist ::= exprlist COMMA expritem */ yytestcase(yyruleno==231);
+#line 516 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
-#line 2439 "ext/sqlite/libsqlite/src/parse.c"
+#line 2435 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 167:
- case 232:
-#line 517 "ext/sqlite/libsqlite/src/parse.y"
+ case 167: /* itemlist ::= expr */
+ case 232: /* exprlist ::= expritem */ yytestcase(yyruleno==232);
+#line 517 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
-#line 2445 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 170:
- case 240:
-#line 526 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);}
-#line 2451 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 171:
- case 241:
-#line 527 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);}
-#line 2457 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 172:
-#line 535 "ext/sqlite/libsqlite/src/parse.y"
+#line 2441 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 170: /* inscollist ::= inscollist COMMA nm */
+ case 240: /* idxlist ::= idxlist COMMA idxitem */ yytestcase(yyruleno==240);
+#line 526 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy0);}
+#line 2447 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 171: /* inscollist ::= nm */
+ case 241: /* idxlist ::= idxitem */ yytestcase(yyruleno==241);
+#line 527 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy0);}
+#line 2453 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 172: /* expr ::= LP expr RP */
+#line 535 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = yymsp[-1].minor.yy242; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
-#line 2462 "ext/sqlite/libsqlite/src/parse.c"
+#line 2458 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 173:
-#line 536 "ext/sqlite/libsqlite/src/parse.y"
+ case 173: /* expr ::= NULL */
+#line 536 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);}
-#line 2467 "ext/sqlite/libsqlite/src/parse.c"
+#line 2463 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 174:
- case 175:
-#line 537 "ext/sqlite/libsqlite/src/parse.y"
+ case 174: /* expr ::= ID */
+ case 175: /* expr ::= JOIN_KW */ yytestcase(yyruleno==175);
+#line 537 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
-#line 2473 "ext/sqlite/libsqlite/src/parse.c"
+#line 2469 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 176:
-#line 539 "ext/sqlite/libsqlite/src/parse.y"
+ case 176: /* expr ::= nm DOT nm */
+#line 539 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
- Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298);
+ Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
+ Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);
yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp2, 0);
}
-#line 2482 "ext/sqlite/libsqlite/src/parse.c"
+#line 2478 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 177:
-#line 544 "ext/sqlite/libsqlite/src/parse.y"
+ case 177: /* expr ::= nm DOT nm DOT nm */
+#line 544 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy298);
- Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
- Expr *temp3 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298);
+ Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy0);
+ Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
+ Expr *temp3 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);
Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0);
yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp4, 0);
}
-#line 2493 "ext/sqlite/libsqlite/src/parse.c"
+#line 2489 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 178:
-#line 551 "ext/sqlite/libsqlite/src/parse.y"
+ case 178: /* expr ::= INTEGER */
+#line 551 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);}
-#line 2498 "ext/sqlite/libsqlite/src/parse.c"
+#line 2494 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 179:
-#line 552 "ext/sqlite/libsqlite/src/parse.y"
+ case 179: /* expr ::= FLOAT */
+#line 552 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);}
-#line 2503 "ext/sqlite/libsqlite/src/parse.c"
+#line 2499 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 180:
-#line 553 "ext/sqlite/libsqlite/src/parse.y"
+ case 180: /* expr ::= STRING */
+#line 553 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);}
-#line 2508 "ext/sqlite/libsqlite/src/parse.c"
+#line 2504 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 181:
-#line 554 "ext/sqlite/libsqlite/src/parse.y"
+ case 181: /* expr ::= VARIABLE */
+#line 554 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_VARIABLE, 0, 0, &yymsp[0].minor.yy0);
if( yygotominor.yy242 ) yygotominor.yy242->iTable = ++pParse->nVar;
}
-#line 2516 "ext/sqlite/libsqlite/src/parse.c"
+#line 2512 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 182:
-#line 558 "ext/sqlite/libsqlite/src/parse.y"
+ case 182: /* expr ::= ID LP exprlist RP */
+#line 558 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2524 "ext/sqlite/libsqlite/src/parse.c"
+#line 2520 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 183:
-#line 562 "ext/sqlite/libsqlite/src/parse.y"
+ case 183: /* expr ::= ID LP STAR RP */
+#line 562 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExprFunction(0, &yymsp[-3].minor.yy0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2532 "ext/sqlite/libsqlite/src/parse.c"
+#line 2528 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 184:
-#line 566 "ext/sqlite/libsqlite/src/parse.y"
+ case 184: /* expr ::= expr AND expr */
+#line 566 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_AND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2537 "ext/sqlite/libsqlite/src/parse.c"
+#line 2533 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 185:
-#line 567 "ext/sqlite/libsqlite/src/parse.y"
+ case 185: /* expr ::= expr OR expr */
+#line 567 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_OR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2542 "ext/sqlite/libsqlite/src/parse.c"
+#line 2538 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 186:
-#line 568 "ext/sqlite/libsqlite/src/parse.y"
+ case 186: /* expr ::= expr LT expr */
+#line 568 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2547 "ext/sqlite/libsqlite/src/parse.c"
+#line 2543 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 187:
-#line 569 "ext/sqlite/libsqlite/src/parse.y"
+ case 187: /* expr ::= expr GT expr */
+#line 569 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_GT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2552 "ext/sqlite/libsqlite/src/parse.c"
+#line 2548 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 188:
-#line 570 "ext/sqlite/libsqlite/src/parse.y"
+ case 188: /* expr ::= expr LE expr */
+#line 570 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2557 "ext/sqlite/libsqlite/src/parse.c"
+#line 2553 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 189:
-#line 571 "ext/sqlite/libsqlite/src/parse.y"
+ case 189: /* expr ::= expr GE expr */
+#line 571 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_GE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2562 "ext/sqlite/libsqlite/src/parse.c"
+#line 2558 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 190:
-#line 572 "ext/sqlite/libsqlite/src/parse.y"
+ case 190: /* expr ::= expr NE expr */
+#line 572 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_NE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2567 "ext/sqlite/libsqlite/src/parse.c"
+#line 2563 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 191:
-#line 573 "ext/sqlite/libsqlite/src/parse.y"
+ case 191: /* expr ::= expr EQ expr */
+#line 573 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2572 "ext/sqlite/libsqlite/src/parse.c"
+#line 2568 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 192:
-#line 574 "ext/sqlite/libsqlite/src/parse.y"
+ case 192: /* expr ::= expr BITAND expr */
+#line 574 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2577 "ext/sqlite/libsqlite/src/parse.c"
+#line 2573 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 193:
-#line 575 "ext/sqlite/libsqlite/src/parse.y"
+ case 193: /* expr ::= expr BITOR expr */
+#line 575 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2582 "ext/sqlite/libsqlite/src/parse.c"
+#line 2578 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 194:
-#line 576 "ext/sqlite/libsqlite/src/parse.y"
+ case 194: /* expr ::= expr LSHIFT expr */
+#line 576 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2587 "ext/sqlite/libsqlite/src/parse.c"
+#line 2583 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 195:
-#line 577 "ext/sqlite/libsqlite/src/parse.y"
+ case 195: /* expr ::= expr RSHIFT expr */
+#line 577 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2592 "ext/sqlite/libsqlite/src/parse.c"
+#line 2588 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 196:
-#line 578 "ext/sqlite/libsqlite/src/parse.y"
+ case 196: /* expr ::= expr likeop expr */
+#line 578 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy242, 0);
@@ -2598,10 +2595,10 @@ static void yy_reduce(
if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
sqliteExprSpan(yygotominor.yy242, &yymsp[-2].minor.yy242->span, &yymsp[0].minor.yy242->span);
}
-#line 2603 "ext/sqlite/libsqlite/src/parse.c"
+#line 2599 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 197:
-#line 585 "ext/sqlite/libsqlite/src/parse.y"
+ case 197: /* expr ::= expr NOT likeop expr */
+#line 585 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy242, 0);
@@ -2610,131 +2607,131 @@ static void yy_reduce(
yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
-#line 2615 "ext/sqlite/libsqlite/src/parse.c"
+#line 2611 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 198:
-#line 594 "ext/sqlite/libsqlite/src/parse.y"
+ case 198: /* likeop ::= LIKE */
+#line 594 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_LIKE;}
-#line 2620 "ext/sqlite/libsqlite/src/parse.c"
+#line 2616 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 199:
-#line 595 "ext/sqlite/libsqlite/src/parse.y"
+ case 199: /* likeop ::= GLOB */
+#line 595 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_GLOB;}
-#line 2625 "ext/sqlite/libsqlite/src/parse.c"
+#line 2621 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 200:
-#line 596 "ext/sqlite/libsqlite/src/parse.y"
+ case 200: /* expr ::= expr PLUS expr */
+#line 596 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2630 "ext/sqlite/libsqlite/src/parse.c"
+#line 2626 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 201:
-#line 597 "ext/sqlite/libsqlite/src/parse.y"
+ case 201: /* expr ::= expr MINUS expr */
+#line 597 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2635 "ext/sqlite/libsqlite/src/parse.c"
+#line 2631 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 202:
-#line 598 "ext/sqlite/libsqlite/src/parse.y"
+ case 202: /* expr ::= expr STAR expr */
+#line 598 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2640 "ext/sqlite/libsqlite/src/parse.c"
+#line 2636 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 203:
-#line 599 "ext/sqlite/libsqlite/src/parse.y"
+ case 203: /* expr ::= expr SLASH expr */
+#line 599 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2645 "ext/sqlite/libsqlite/src/parse.c"
+#line 2641 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 204:
-#line 600 "ext/sqlite/libsqlite/src/parse.y"
+ case 204: /* expr ::= expr REM expr */
+#line 600 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_REM, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2650 "ext/sqlite/libsqlite/src/parse.c"
+#line 2646 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 205:
-#line 601 "ext/sqlite/libsqlite/src/parse.y"
+ case 205: /* expr ::= expr CONCAT expr */
+#line 601 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
-#line 2655 "ext/sqlite/libsqlite/src/parse.c"
+#line 2651 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 206:
-#line 602 "ext/sqlite/libsqlite/src/parse.y"
+ case 206: /* expr ::= expr ISNULL */
+#line 602 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2663 "ext/sqlite/libsqlite/src/parse.c"
+#line 2659 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 207:
-#line 606 "ext/sqlite/libsqlite/src/parse.y"
+ case 207: /* expr ::= expr IS NULL */
+#line 606 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2671 "ext/sqlite/libsqlite/src/parse.c"
+#line 2667 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 208:
-#line 610 "ext/sqlite/libsqlite/src/parse.y"
+ case 208: /* expr ::= expr NOTNULL */
+#line 610 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2679 "ext/sqlite/libsqlite/src/parse.c"
+#line 2675 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 209:
-#line 614 "ext/sqlite/libsqlite/src/parse.y"
+ case 209: /* expr ::= expr NOT NULL */
+#line 614 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2687 "ext/sqlite/libsqlite/src/parse.c"
+#line 2683 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 210:
-#line 618 "ext/sqlite/libsqlite/src/parse.y"
+ case 210: /* expr ::= expr IS NOT NULL */
+#line 618 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2695 "ext/sqlite/libsqlite/src/parse.c"
+#line 2691 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 211:
-#line 622 "ext/sqlite/libsqlite/src/parse.y"
+ case 211: /* expr ::= NOT expr */
+#line 622 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_NOT, yymsp[0].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
-#line 2703 "ext/sqlite/libsqlite/src/parse.c"
+#line 2699 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 212:
-#line 626 "ext/sqlite/libsqlite/src/parse.y"
+ case 212: /* expr ::= BITNOT expr */
+#line 626 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
-#line 2711 "ext/sqlite/libsqlite/src/parse.c"
+#line 2707 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 213:
-#line 630 "ext/sqlite/libsqlite/src/parse.y"
+ case 213: /* expr ::= MINUS expr */
+#line 630 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
-#line 2719 "ext/sqlite/libsqlite/src/parse.c"
+#line 2715 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 214:
-#line 634 "ext/sqlite/libsqlite/src/parse.y"
+ case 214: /* expr ::= PLUS expr */
+#line 634 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
-#line 2727 "ext/sqlite/libsqlite/src/parse.c"
+#line 2723 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 215:
-#line 638 "ext/sqlite/libsqlite/src/parse.y"
+ case 215: /* expr ::= LP select RP */
+#line 638 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_SELECT, 0, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
}
-#line 2736 "ext/sqlite/libsqlite/src/parse.c"
+#line 2732 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 216:
-#line 643 "ext/sqlite/libsqlite/src/parse.y"
+ case 216: /* expr ::= expr BETWEEN expr AND expr */
+#line 643 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
@@ -2742,10 +2739,10 @@ static void yy_reduce(
if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
-#line 2747 "ext/sqlite/libsqlite/src/parse.c"
+#line 2743 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 217:
-#line 650 "ext/sqlite/libsqlite/src/parse.y"
+ case 217: /* expr ::= expr NOT BETWEEN expr AND expr */
+#line 650 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
@@ -2754,340 +2751,367 @@ static void yy_reduce(
yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
-#line 2759 "ext/sqlite/libsqlite/src/parse.c"
+#line 2755 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 218:
-#line 658 "ext/sqlite/libsqlite/src/parse.y"
+ case 218: /* expr ::= expr IN LP exprlist RP */
+#line 658 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2768 "ext/sqlite/libsqlite/src/parse.c"
+#line 2764 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 219:
-#line 663 "ext/sqlite/libsqlite/src/parse.y"
+ case 219: /* expr ::= expr IN LP select RP */
+#line 663 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2777 "ext/sqlite/libsqlite/src/parse.c"
+#line 2773 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 220:
-#line 668 "ext/sqlite/libsqlite/src/parse.y"
+ case 220: /* expr ::= expr NOT IN LP exprlist RP */
+#line 668 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2787 "ext/sqlite/libsqlite/src/parse.c"
+#line 2783 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 221:
-#line 674 "ext/sqlite/libsqlite/src/parse.y"
+ case 221: /* expr ::= expr NOT IN LP select RP */
+#line 674 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
}
-#line 2797 "ext/sqlite/libsqlite/src/parse.c"
+#line 2793 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 222:
-#line 680 "ext/sqlite/libsqlite/src/parse.y"
+ case 222: /* expr ::= expr IN nm dbnm */
+#line 680 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-3].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
- sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy0.z?&yymsp[0].minor.yy0:&yymsp[-1].minor.yy0);
}
-#line 2807 "ext/sqlite/libsqlite/src/parse.c"
+#line 2803 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 223:
-#line 686 "ext/sqlite/libsqlite/src/parse.y"
+ case 223: /* expr ::= expr NOT IN nm dbnm */
+#line 686 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
- sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy0.z?&yymsp[0].minor.yy0:&yymsp[-1].minor.yy0);
}
-#line 2818 "ext/sqlite/libsqlite/src/parse.c"
+#line 2814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 224:
-#line 696 "ext/sqlite/libsqlite/src/parse.y"
+ case 224: /* expr ::= CASE case_operand case_exprlist case_else END */
+#line 696 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy242, yymsp[-1].minor.yy242, 0);
if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-2].minor.yy322;
sqliteExprSpan(yygotominor.yy242, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 2827 "ext/sqlite/libsqlite/src/parse.c"
+#line 2823 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 225:
-#line 703 "ext/sqlite/libsqlite/src/parse.y"
+ case 225: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+#line 703 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy242, 0);
yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
}
-#line 2835 "ext/sqlite/libsqlite/src/parse.c"
+#line 2831 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 226:
-#line 707 "ext/sqlite/libsqlite/src/parse.y"
+ case 226: /* case_exprlist ::= WHEN expr THEN expr */
+#line 707 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy322 = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
}
-#line 2843 "ext/sqlite/libsqlite/src/parse.c"
+#line 2839 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 235:
-#line 732 "ext/sqlite/libsqlite/src/parse.y"
+ case 235: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */
+#line 732 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy298, &yymsp[-4].minor.yy298);
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy0, &yymsp[-4].minor.yy0);
if( yymsp[-9].minor.yy372!=OE_None ) yymsp[-9].minor.yy372 = yymsp[0].minor.yy372;
if( yymsp[-9].minor.yy372==OE_Default) yymsp[-9].minor.yy372 = OE_Abort;
- sqliteCreateIndex(pParse, &yymsp[-7].minor.yy298, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
+ sqliteCreateIndex(pParse, &yymsp[-7].minor.yy0, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
}
-#line 2853 "ext/sqlite/libsqlite/src/parse.c"
+#line 2849 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 237:
-#line 741 "ext/sqlite/libsqlite/src/parse.y"
+ case 237: /* uniqueflag ::= */
+#line 741 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_None; }
-#line 2858 "ext/sqlite/libsqlite/src/parse.c"
+#line 2854 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 243:
-#line 758 "ext/sqlite/libsqlite/src/parse.y"
+ case 243: /* cmd ::= DROP INDEX nm dbnm */
+#line 758 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
+ sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0));
}
-#line 2865 "ext/sqlite/libsqlite/src/parse.c"
+#line 2861 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 244:
-#line 766 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298),&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);}
-#line 2870 "ext/sqlite/libsqlite/src/parse.c"
+ case 244: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */
+#line 766 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0),&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);}
+#line 2866 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 245:
-#line 768 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298),&yymsp[0].minor.yy298,0,yymsp[-4].minor.yy372);}
-#line 2875 "ext/sqlite/libsqlite/src/parse.c"
+ case 245: /* cmd ::= COPY orconf nm dbnm FROM nm */
+#line 768 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0),&yymsp[0].minor.yy0,0,yymsp[-4].minor.yy372);}
+#line 2871 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 246:
-#line 772 "ext/sqlite/libsqlite/src/parse.y"
+ case 246: /* cmd ::= VACUUM */
+#line 772 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteVacuum(pParse,0);}
-#line 2880 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 247:
-#line 773 "ext/sqlite/libsqlite/src/parse.y"
-{sqliteVacuum(pParse,&yymsp[0].minor.yy298);}
-#line 2885 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 248:
- case 250:
-#line 777 "ext/sqlite/libsqlite/src/parse.y"
-{sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);}
-#line 2891 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 249:
-#line 778 "ext/sqlite/libsqlite/src/parse.y"
-{sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy0,0);}
-#line 2896 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 251:
-#line 780 "ext/sqlite/libsqlite/src/parse.y"
-{sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,1);}
-#line 2901 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 252:
-#line 781 "ext/sqlite/libsqlite/src/parse.y"
-{sqlitePragma(pParse,&yymsp[-3].minor.yy298,&yymsp[-1].minor.yy298,0);}
-#line 2906 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 253:
-#line 782 "ext/sqlite/libsqlite/src/parse.y"
-{sqlitePragma(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298,0);}
-#line 2911 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 260:
-#line 792 "ext/sqlite/libsqlite/src/parse.y"
+#line 2876 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 247: /* cmd ::= VACUUM nm */
+#line 773 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqliteVacuum(pParse,&yymsp[0].minor.yy0);}
+#line 2881 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 248: /* cmd ::= PRAGMA ids EQ nm */
+ case 249: /* cmd ::= PRAGMA ids EQ ON */ yytestcase(yyruleno==249);
+ case 250: /* cmd ::= PRAGMA ids EQ plus_num */ yytestcase(yyruleno==250);
+#line 777 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqlitePragma(pParse,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
+#line 2888 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 251: /* cmd ::= PRAGMA ids EQ minus_num */
+#line 780 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqlitePragma(pParse,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
+#line 2893 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 252: /* cmd ::= PRAGMA ids LP nm RP */
+#line 781 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqlitePragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
+#line 2898 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 253: /* cmd ::= PRAGMA ids */
+#line 782 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{sqlitePragma(pParse,&yymsp[0].minor.yy0,&yymsp[0].minor.yy0,0);}
+#line 2903 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 260: /* cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END */
+#line 792 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
Token all;
all.z = yymsp[-4].minor.yy0.z;
all.n = (yymsp[0].minor.yy0.z - yymsp[-4].minor.yy0.z) + yymsp[0].minor.yy0.n;
sqliteFinishTrigger(pParse, yymsp[-1].minor.yy19, &all);
}
-#line 2921 "ext/sqlite/libsqlite/src/parse.c"
+#line 2913 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 261:
-#line 800 "ext/sqlite/libsqlite/src/parse.y"
+ case 261: /* trigger_decl ::= temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */
+#line 800 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy298, &yymsp[-2].minor.yy298);
- sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy298, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372);
+ SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0);
+ sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy0, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372);
}
-#line 2929 "ext/sqlite/libsqlite/src/parse.c"
+#line 2921 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 262:
- case 265:
-#line 806 "ext/sqlite/libsqlite/src/parse.y"
+ case 262: /* trigger_time ::= BEFORE */
+ case 265: /* trigger_time ::= */ yytestcase(yyruleno==265);
+#line 806 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_BEFORE; }
-#line 2935 "ext/sqlite/libsqlite/src/parse.c"
+#line 2927 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 263:
-#line 807 "ext/sqlite/libsqlite/src/parse.y"
+ case 263: /* trigger_time ::= AFTER */
+#line 807 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_AFTER; }
-#line 2940 "ext/sqlite/libsqlite/src/parse.c"
+#line 2932 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 264:
-#line 808 "ext/sqlite/libsqlite/src/parse.y"
+ case 264: /* trigger_time ::= INSTEAD OF */
+#line 808 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_INSTEAD;}
-#line 2945 "ext/sqlite/libsqlite/src/parse.c"
+#line 2937 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 266:
-#line 813 "ext/sqlite/libsqlite/src/parse.y"
+ case 266: /* trigger_event ::= DELETE */
+#line 813 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_DELETE; yygotominor.yy290.b = 0; }
-#line 2950 "ext/sqlite/libsqlite/src/parse.c"
+#line 2942 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 267:
-#line 814 "ext/sqlite/libsqlite/src/parse.y"
+ case 267: /* trigger_event ::= INSERT */
+#line 814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_INSERT; yygotominor.yy290.b = 0; }
-#line 2955 "ext/sqlite/libsqlite/src/parse.c"
+#line 2947 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 268:
-#line 815 "ext/sqlite/libsqlite/src/parse.y"
+ case 268: /* trigger_event ::= UPDATE */
+#line 815 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = 0;}
-#line 2960 "ext/sqlite/libsqlite/src/parse.c"
+#line 2952 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 269:
-#line 816 "ext/sqlite/libsqlite/src/parse.y"
+ case 269: /* trigger_event ::= UPDATE OF inscollist */
+#line 816 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = yymsp[0].minor.yy320; }
-#line 2965 "ext/sqlite/libsqlite/src/parse.c"
+#line 2957 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 270:
- case 271:
-#line 819 "ext/sqlite/libsqlite/src/parse.y"
+ case 270: /* foreach_clause ::= */
+ case 271: /* foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==271);
+#line 819 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_ROW; }
-#line 2971 "ext/sqlite/libsqlite/src/parse.c"
+#line 2963 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 272:
-#line 821 "ext/sqlite/libsqlite/src/parse.y"
+ case 272: /* foreach_clause ::= FOR EACH STATEMENT */
+#line 821 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_STATEMENT; }
-#line 2976 "ext/sqlite/libsqlite/src/parse.c"
+#line 2968 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 273:
-#line 824 "ext/sqlite/libsqlite/src/parse.y"
+ case 273: /* when_clause ::= */
+#line 824 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy182 = 0; }
-#line 2981 "ext/sqlite/libsqlite/src/parse.c"
+#line 2973 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 274:
-#line 825 "ext/sqlite/libsqlite/src/parse.y"
+ case 274: /* when_clause ::= WHEN expr */
+#line 825 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy182 = yymsp[0].minor.yy242; }
-#line 2986 "ext/sqlite/libsqlite/src/parse.c"
+#line 2978 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 275:
-#line 829 "ext/sqlite/libsqlite/src/parse.y"
+ case 275: /* trigger_cmd_list ::= trigger_cmd SEMI trigger_cmd_list */
+#line 829 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yymsp[-2].minor.yy19->pNext = yymsp[0].minor.yy19;
yygotominor.yy19 = yymsp[-2].minor.yy19;
}
-#line 2994 "ext/sqlite/libsqlite/src/parse.c"
+#line 2986 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 276:
-#line 833 "ext/sqlite/libsqlite/src/parse.y"
+ case 276: /* trigger_cmd_list ::= */
+#line 833 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy19 = 0; }
-#line 2999 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 277:
-#line 839 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy298, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); }
-#line 3004 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 278:
-#line 844 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy298, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);}
-#line 3009 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 279:
-#line 847 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy298, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);}
-#line 3014 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 280:
-#line 851 "ext/sqlite/libsqlite/src/parse.y"
-{yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy298, yymsp[0].minor.yy242);}
-#line 3019 "ext/sqlite/libsqlite/src/parse.c"
- break;
- case 281:
-#line 854 "ext/sqlite/libsqlite/src/parse.y"
+#line 2991 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 277: /* trigger_cmd ::= UPDATE orconf nm SET setlist where_opt */
+#line 839 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy0, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); }
+#line 2996 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 278: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP */
+#line 844 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy0, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);}
+#line 3001 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 279: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt select */
+#line 847 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy0, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);}
+#line 3006 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 280: /* trigger_cmd ::= DELETE FROM nm where_opt */
+#line 851 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy0, yymsp[0].minor.yy242);}
+#line 3011 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 281: /* trigger_cmd ::= select */
+#line 854 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); }
-#line 3024 "ext/sqlite/libsqlite/src/parse.c"
+#line 3016 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 282:
-#line 857 "ext/sqlite/libsqlite/src/parse.y"
+ case 282: /* expr ::= RAISE LP IGNORE RP */
+#line 857 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, 0);
yygotominor.yy242->iColumn = OE_Ignore;
sqliteExprSpan(yygotominor.yy242, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 3033 "ext/sqlite/libsqlite/src/parse.c"
+#line 3025 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 283:
-#line 862 "ext/sqlite/libsqlite/src/parse.y"
+ case 283: /* expr ::= RAISE LP ROLLBACK COMMA nm RP */
+#line 862 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
yygotominor.yy242->iColumn = OE_Rollback;
sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 3042 "ext/sqlite/libsqlite/src/parse.c"
+#line 3034 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 284:
-#line 867 "ext/sqlite/libsqlite/src/parse.y"
+ case 284: /* expr ::= RAISE LP ABORT COMMA nm RP */
+#line 867 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
yygotominor.yy242->iColumn = OE_Abort;
sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 3051 "ext/sqlite/libsqlite/src/parse.c"
+#line 3043 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 285:
-#line 872 "ext/sqlite/libsqlite/src/parse.y"
+ case 285: /* expr ::= RAISE LP FAIL COMMA nm RP */
+#line 872 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
yygotominor.yy242->iColumn = OE_Fail;
sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 3060 "ext/sqlite/libsqlite/src/parse.c"
+#line 3052 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 286:
-#line 879 "ext/sqlite/libsqlite/src/parse.y"
+ case 286: /* cmd ::= DROP TRIGGER nm dbnm */
+#line 879 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
+ sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0));
}
-#line 3067 "ext/sqlite/libsqlite/src/parse.c"
+#line 3059 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 287:
-#line 884 "ext/sqlite/libsqlite/src/parse.y"
+ case 287: /* cmd ::= ATTACH database_kw_opt ids AS nm key_opt */
+#line 884 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteAttach(pParse, &yymsp[-3].minor.yy298, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ sqliteAttach(pParse, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
}
-#line 3074 "ext/sqlite/libsqlite/src/parse.c"
+#line 3066 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 289:
-#line 889 "ext/sqlite/libsqlite/src/parse.y"
-{ yygotominor.yy298.z = 0; yygotominor.yy298.n = 0; }
-#line 3079 "ext/sqlite/libsqlite/src/parse.c"
+ case 289: /* key_opt ::= */
+#line 889 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
+{ yygotominor.yy0.z = 0; yygotominor.yy0.n = 0; }
+#line 3071 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
break;
- case 292:
-#line 895 "ext/sqlite/libsqlite/src/parse.y"
+ case 292: /* cmd ::= DETACH database_kw_opt nm */
+#line 895 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
- sqliteDetach(pParse, &yymsp[0].minor.yy298);
-}
-#line 3086 "ext/sqlite/libsqlite/src/parse.c"
+ sqliteDetach(pParse, &yymsp[0].minor.yy0);
+}
+#line 3078 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
+ break;
+ default:
+ /* (0) input ::= cmdlist */ yytestcase(yyruleno==0);
+ /* (1) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==1);
+ /* (2) cmdlist ::= ecmd */ yytestcase(yyruleno==2);
+ /* (3) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==3);
+ /* (4) ecmd ::= SEMI */ yytestcase(yyruleno==4);
+ /* (9) trans_opt ::= */ yytestcase(yyruleno==9);
+ /* (10) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==10);
+ /* (11) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==11);
+ /* (15) cmd ::= create_table create_table_args */ yytestcase(yyruleno==15);
+ /* (21) columnlist ::= columnlist COMMA column */ yytestcase(yyruleno==21);
+ /* (22) columnlist ::= column */ yytestcase(yyruleno==22);
+ /* (23) column ::= columnid type carglist */ yytestcase(yyruleno==23);
+ /* (31) type ::= */ yytestcase(yyruleno==31);
+ /* (40) carglist ::= carglist carg */ yytestcase(yyruleno==40);
+ /* (41) carglist ::= */ yytestcase(yyruleno==41);
+ /* (42) carg ::= CONSTRAINT nm ccons */ yytestcase(yyruleno==42);
+ /* (43) carg ::= ccons */ yytestcase(yyruleno==43);
+ /* (52) carg ::= DEFAULT NULL */ yytestcase(yyruleno==52);
+ /* (53) ccons ::= NULL onconf */ yytestcase(yyruleno==53);
+ /* (76) conslist_opt ::= */ yytestcase(yyruleno==76);
+ /* (77) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==77);
+ /* (78) conslist ::= conslist COMMA tcons */ yytestcase(yyruleno==78);
+ /* (79) conslist ::= conslist tcons */ yytestcase(yyruleno==79);
+ /* (80) conslist ::= tcons */ yytestcase(yyruleno==80);
+ /* (81) tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==81);
+ /* (258) plus_opt ::= PLUS */ yytestcase(yyruleno==258);
+ /* (259) plus_opt ::= */ yytestcase(yyruleno==259);
+ /* (290) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==290);
+ /* (291) database_kw_opt ::= */ yytestcase(yyruleno==291);
break;
};
yygoto = yyRuleInfo[yyruleno].lhs;
yysize = yyRuleInfo[yyruleno].nrhs;
yypParser->yyidx -= yysize;
- yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
+ yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
if( yyact < YYNSTATE ){
#ifdef NDEBUG
/* If we are not debugging and the reduce action popped at least
@@ -3097,15 +3121,16 @@ static void yy_reduce(
if( yysize ){
yypParser->yyidx++;
yymsp -= yysize-1;
- yymsp->stateno = yyact;
- yymsp->major = yygoto;
+ yymsp->stateno = (YYACTIONTYPE)yyact;
+ yymsp->major = (YYCODETYPE)yygoto;
yymsp->minor = yygotominor;
}else
#endif
{
yy_shift(yypParser,yyact,yygoto,&yygotominor);
}
- }else if( yyact == YYNSTATE + YYNRULE + 1 ){
+ }else{
+ assert( yyact == YYNSTATE + YYNRULE + 1 );
yy_accept(yypParser);
}
}
@@ -3113,6 +3138,7 @@ static void yy_reduce(
/*
** The following code executes when the parse fails
*/
+#ifndef YYNOERRORRECOVERY
static void yy_parse_failed(
yyParser *yypParser /* The parser */
){
@@ -3127,6 +3153,7 @@ static void yy_parse_failed(
** parser fails */
sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}
+#endif /* YYNOERRORRECOVERY */
/*
** The following code executes when a syntax error first occurs.
@@ -3138,7 +3165,7 @@ static void yy_syntax_error(
){
sqliteParserARG_FETCH;
#define TOKEN (yyminor.yy0)
-#line 23 "ext/sqlite/libsqlite/src/parse.y"
+#line 23 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
if( pParse->zErrMsg==0 ){
if( TOKEN.z[0] ){
@@ -3147,7 +3174,7 @@ static void yy_syntax_error(
sqliteErrorMsg(pParse, "incomplete SQL statement");
}
}
-#line 3153 "ext/sqlite/libsqlite/src/parse.c"
+#line 3178 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}
@@ -3197,13 +3224,22 @@ void sqliteParser(
YYMINORTYPE yyminorunion;
int yyact; /* The parser action. */
int yyendofinput; /* True if we are at the end of input */
+#ifdef YYERRORSYMBOL
int yyerrorhit = 0; /* True if yymajor has invoked an error */
+#endif
yyParser *yypParser; /* The parser */
/* (re)initialize the parser, if necessary */
yypParser = (yyParser*)yyp;
if( yypParser->yyidx<0 ){
- /* if( yymajor==0 ) return; // not sure why this was here... */
+#if YYSTACKDEPTH<=0
+ if( yypParser->yystksz <=0 ){
+ /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
+ yyminorunion = yyzerominor;
+ yyStackOverflow(yypParser, &yyminorunion);
+ return;
+ }
+#endif
yypParser->yyidx = 0;
yypParser->yyerrcnt = -1;
yypParser->yystack[0].stateno = 0;
@@ -3220,19 +3256,19 @@ void sqliteParser(
#endif
do{
- yyact = yy_find_shift_action(yypParser,yymajor);
+ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
if( yyact<YYNSTATE ){
+ assert( !yyendofinput ); /* Impossible to shift the $ token */
yy_shift(yypParser,yyact,yymajor,&yyminorunion);
yypParser->yyerrcnt--;
- if( yyendofinput && yypParser->yyidx>=0 ){
- yymajor = 0;
- }else{
- yymajor = YYNOCODE;
- }
+ yymajor = YYNOCODE;
}else if( yyact < YYNSTATE + YYNRULE ){
yy_reduce(yypParser,yyact-YYNSTATE);
- }else if( yyact == YY_ERROR_ACTION ){
+ }else{
+ assert( yyact == YY_ERROR_ACTION );
+#ifdef YYERRORSYMBOL
int yymx;
+#endif
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
@@ -3269,18 +3305,20 @@ void sqliteParser(
yyTracePrompt,yyTokenName[yymajor]);
}
#endif
- yy_destructor(yymajor,&yyminorunion);
+ yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
yymajor = YYNOCODE;
}else{
while(
yypParser->yyidx >= 0 &&
yymx != YYERRORSYMBOL &&
- (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
+ (yyact = yy_find_reduce_action(
+ yypParser->yystack[yypParser->yyidx].stateno,
+ YYERRORSYMBOL)) >= YYNSTATE
){
yy_pop_parser_stack(yypParser);
}
if( yypParser->yyidx < 0 || yymajor==0 ){
- yy_destructor(yymajor,&yyminorunion);
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
yy_parse_failed(yypParser);
yymajor = YYNOCODE;
}else if( yymx!=YYERRORSYMBOL ){
@@ -3291,6 +3329,18 @@ void sqliteParser(
}
yypParser->yyerrcnt = 3;
yyerrorhit = 1;
+#elif defined(YYNOERRORRECOVERY)
+ /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
+ ** do any kind of error recovery. Instead, simply invoke the syntax
+ ** error routine and continue going as if nothing had happened.
+ **
+ ** Applications can set this macro (for example inside %include) if
+ ** they intend to abandon the parse upon the first syntax error seen.
+ */
+ yy_syntax_error(yypParser,yymajor,yyminorunion);
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
+ yymajor = YYNOCODE;
+
#else /* YYERRORSYMBOL is not defined */
/* This is what we do if the grammar does not define ERROR:
**
@@ -3305,15 +3355,12 @@ void sqliteParser(
yy_syntax_error(yypParser,yymajor,yyminorunion);
}
yypParser->yyerrcnt = 3;
- yy_destructor(yymajor,&yyminorunion);
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
if( yyendofinput ){
yy_parse_failed(yypParser);
}
yymajor = YYNOCODE;
#endif
- }else{
- yy_accept(yypParser);
- yymajor = YYNOCODE;
}
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
return;
diff --git a/ext/sqlite/pdo_sqlite2.c b/ext/sqlite/pdo_sqlite2.c
index 07a6d9c0c..4bfa15678 100644
--- a/ext/sqlite/pdo_sqlite2.c
+++ b/ext/sqlite/pdo_sqlite2.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sqlite2.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pdo_sqlite2.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/ext/sqlite/php_sqlite.h b/ext/sqlite/php_sqlite.h
index aac75f0d3..69e46d79c 100644
--- a/ext/sqlite/php_sqlite.h
+++ b/ext/sqlite/php_sqlite.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Marcus Boerger <helly@php.net> |
+----------------------------------------------------------------------+
- $Id: php_sqlite.h 306939 2011-01-01 02:19:59Z felipe $
+ $Id: php_sqlite.h 321634 2012-01-01 13:15:04Z felipe $
*/
#ifndef PHP_SQLITE_H
diff --git a/ext/sqlite/sess_sqlite.c b/ext/sqlite/sess_sqlite.c
index ca082bcaf..56a9f12eb 100644
--- a/ext/sqlite/sess_sqlite.c
+++ b/ext/sqlite/sess_sqlite.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sess_sqlite.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: sess_sqlite.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c
index f01e0b77a..08ff53b4d 100644
--- a/ext/sqlite/sqlite.c
+++ b/ext/sqlite/sqlite.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Marcus Boerger <helly@php.net> |
+----------------------------------------------------------------------+
- $Id: sqlite.c 306939 2011-01-01 02:19:59Z felipe $
+ $Id: sqlite.c 321634 2012-01-01 13:15:04Z felipe $
*/
#ifdef HAVE_CONFIG_H
@@ -1458,7 +1458,7 @@ PHP_MINFO_FUNCTION(sqlite)
{
php_info_print_table_start();
php_info_print_table_header(2, "SQLite support", "enabled");
- php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c 306939 2011-01-01 02:19:59Z felipe $");
+ php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c 321634 2012-01-01 13:15:04Z felipe $");
php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
php_info_print_table_end();
diff --git a/ext/sqlite3/php_sqlite3.h b/ext/sqlite3/php_sqlite3.h
index db063bca4..c402e6ff9 100644
--- a/ext/sqlite3/php_sqlite3.h
+++ b/ext/sqlite3/php_sqlite3.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sqlite3.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sqlite3.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SQLITE3_H
#define PHP_SQLITE3_H
diff --git a/ext/sqlite3/php_sqlite3_structs.h b/ext/sqlite3/php_sqlite3_structs.h
index d08c31db8..41d545b41 100644
--- a/ext/sqlite3/php_sqlite3_structs.h
+++ b/ext/sqlite3/php_sqlite3_structs.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sqlite3_structs.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sqlite3_structs.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SQLITE_STRUCTS_H
#define PHP_SQLITE_STRUCTS_H
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index aa01d89cc..5ec2c2995 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sqlite3.c 314749 2011-08-10 15:30:07Z iliaa $ */
+/* $Id: sqlite3.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/sqlite3/tests/bug53463.phpt b/ext/sqlite3/tests/bug53463.phpt
index c9216e660..dcfc13d5b 100644
--- a/ext/sqlite3/tests/bug53463.phpt
+++ b/ext/sqlite3/tests/bug53463.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #53463 (sqlite3 columnName() segfaults on bad column_number)
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
diff --git a/ext/sqlite3/tests/sqlite3_15_open_error.phpt b/ext/sqlite3/tests/sqlite3_15_open_error.phpt
index 49168fd19..f296f8277 100644
--- a/ext/sqlite3/tests/sqlite3_15_open_error.phpt
+++ b/ext/sqlite3/tests/sqlite3_15_open_error.phpt
@@ -1,7 +1,12 @@
--TEST--
SQLite3::open error test
--SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+<?php
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (posix_geteuid() == 0) {
+ die('SKIP Cannot run test as root.');
+}
+?>
--FILE--
<?php
$unreadable = dirname(__FILE__) . '/unreadable.db';
diff --git a/ext/sqlite3/tests/sqlite3_prepare_001.phpt b/ext/sqlite3/tests/sqlite3_prepare_001.phpt
index 7cd4e4ccf..f9e5fadce 100644
--- a/ext/sqlite3/tests/sqlite3_prepare_001.phpt
+++ b/ext/sqlite3/tests/sqlite3_prepare_001.phpt
@@ -1,5 +1,7 @@
--TEST--
SQLite3 - memory leak on SQLite3Result and SQLite3Stmt
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
diff --git a/ext/standard/array.c b/ext/standard/array.c
index f0ed03b0c..e0f2f308b 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c 309986 2011-04-06 10:23:06Z aharvey $ */
+/* $Id: array.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_ini.h"
diff --git a/ext/standard/assert.c b/ext/standard/assert.c
index c0f8cd4b5..8a60eb185 100644
--- a/ext/standard/assert.c
+++ b/ext/standard/assert.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: assert.c 311451 2011-05-26 18:17:43Z iliaa $ */
+/* $Id: assert.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes */
#include "php.h"
diff --git a/ext/standard/base64.c b/ext/standard/base64.c
index 7cd108b36..bee528ad1 100644
--- a/ext/standard/base64.c
+++ b/ext/standard/base64.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Jim Winstead <jimw@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: base64.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: base64.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <string.h>
@@ -153,6 +153,14 @@ PHPAPI unsigned char *php_base64_decode_ex(const unsigned char *str, int length,
while ((ch = *current++) != '\0' && length-- > 0) {
if (ch == base64_pad) {
if (*current != '=' && ((i % 4) == 1 || (strict && length > 0))) {
+ if ((i % 4) != 1) {
+ while (isspace(*(++current))) {
+ continue;
+ }
+ if (*current == '\0') {
+ continue;
+ }
+ }
efree(result);
return NULL;
}
diff --git a/ext/standard/base64.h b/ext/standard/base64.h
index 33ce1cb30..841ffcdd9 100644
--- a/ext/standard/base64.h
+++ b/ext/standard/base64.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: base64.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: base64.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef BASE64_H
#define BASE64_H
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 6df993858..47b24ac74 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c 314452 2011-08-08 00:47:40Z laruence $ */
+/* $Id: basic_functions.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_streams.h"
@@ -4022,7 +4022,13 @@ PHP_FUNCTION(getenv)
ptr = emalloc(size);
size = GetEnvironmentVariableA(str, ptr, size);
- RETURN_STRING(ptr, 0);
+ if (size == 0) {
+ /* has been removed between the two calls */
+ efree(ptr);
+ RETURN_EMPTY_STRING();
+ } else {
+ RETURN_STRING(ptr, 0);
+ }
}
#else
/* system method returns a const */
@@ -4819,7 +4825,9 @@ PHP_FUNCTION(call_user_method)
Z_TYPE_P(object) != IS_STRING
) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument is not an object or class name");
- efree(params);
+ if (params) {
+ efree(params);
+ }
RETURN_FALSE;
}
@@ -5849,7 +5857,6 @@ PHP_FUNCTION(move_uploaded_file)
RETURN_FALSE;
}
- VCWD_UNLINK(new_path);
if (VCWD_RENAME(path, new_path) == 0) {
successful = 1;
#ifndef PHP_WIN32
@@ -6032,6 +6039,10 @@ PHP_FUNCTION(parse_ini_string)
RETURN_FALSE;
}
+ if (INT_MAX - str_len < ZEND_MMAP_AHEAD) {
+ RETVAL_FALSE;
+ }
+
/* Set callback function */
if (process_sections) {
BG(active_ini_file_section) = NULL;
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index 248a4aa53..330c4aae7 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.h 310691 2011-05-01 18:37:20Z cataphract $ */
+/* $Id: basic_functions.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef BASIC_FUNCTIONS_H
#define BASIC_FUNCTIONS_H
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index 68b5c5c8c..18cdf0c5c 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: browscap.c 311764 2011-06-03 09:39:45Z cataphract $ */
+/* $Id: browscap.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_browscap.h"
diff --git a/ext/standard/crc32.c b/ext/standard/crc32.c
index 4390c42d6..55b491b5e 100644
--- a/ext/standard/crc32.c
+++ b/ext/standard/crc32.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: crc32.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: crc32.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "basic_functions.h"
diff --git a/ext/standard/crc32.h b/ext/standard/crc32.h
index 48eb22e70..9f4c0f791 100644
--- a/ext/standard/crc32.h
+++ b/ext/standard/crc32.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: crc32.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: crc32.h 321634 2012-01-01 13:15:04Z felipe $ */
/*
* This code implements the AUTODIN II polynomial
diff --git a/ext/standard/credits.c b/ext/standard/credits.c
index d4bf4116b..a4179e5a2 100644
--- a/ext/standard/credits.c
+++ b/ext/standard/credits.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: credits.c 311822 2011-06-05 06:57:13Z philip $ */
+/* $Id: credits.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "info.h"
diff --git a/ext/standard/credits.h b/ext/standard/credits.h
index 2aa2f8c39..153b3d4d1 100644
--- a/ext/standard/credits.h
+++ b/ext/standard/credits.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: credits.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: credits.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef CREDITS_H
#define CREDITS_H
diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c
index cda330b5d..1692360e3 100644
--- a/ext/standard/crypt.c
+++ b/ext/standard/crypt.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: crypt.c 314641 2011-08-09 12:16:58Z laruence $ */
+/* $Id: crypt.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
diff --git a/ext/standard/css.c b/ext/standard/css.c
index ad2b2d64e..05bbb7e42 100644
--- a/ext/standard/css.c
+++ b/ext/standard/css.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: css.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: css.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "info.h"
diff --git a/ext/standard/css.h b/ext/standard/css.h
index 8ac13a673..414bdcb0f 100644
--- a/ext/standard/css.h
+++ b/ext/standard/css.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: css.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: css.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef CSS_H
#define CSS_H
diff --git a/ext/standard/cyr_convert.c b/ext/standard/cyr_convert.c
index 7547aabfc..8080e78e3 100644
--- a/ext/standard/cyr_convert.c
+++ b/ext/standard/cyr_convert.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cyr_convert.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: cyr_convert.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
diff --git a/ext/standard/cyr_convert.h b/ext/standard/cyr_convert.h
index fbe514a6e..9770a1e3d 100644
--- a/ext/standard/cyr_convert.h
+++ b/ext/standard/cyr_convert.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cyr_convert.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: cyr_convert.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef CYR_CONVERT_H
#define CYR_CONVERT_H
diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c
index 9881df1fd..6538b1850 100644
--- a/ext/standard/datetime.c
+++ b/ext/standard/datetime.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: datetime.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: datetime.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "zend_operators.h"
diff --git a/ext/standard/datetime.h b/ext/standard/datetime.h
index fae5a9308..e15b84a15 100644
--- a/ext/standard/datetime.h
+++ b/ext/standard/datetime.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: datetime.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: datetime.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef DATETIME_H
#define DATETIME_H
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index 6c93a1981..82b04bde5 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dir.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes/startup/misc */
diff --git a/ext/standard/dl.c b/ext/standard/dl.c
index 81b12838d..425ae1a40 100644
--- a/ext/standard/dl.c
+++ b/ext/standard/dl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dl.c 311444 2011-05-26 14:37:13Z pajoye $ */
+/* $Id: dl.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "dl.h"
diff --git a/ext/standard/dl.h b/ext/standard/dl.h
index c60550443..76628efd8 100644
--- a/ext/standard/dl.h
+++ b/ext/standard/dl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: dl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef DL_H
#define DL_H
diff --git a/ext/standard/dns.c b/ext/standard/dns.c
index 8453ad887..2b974ad70 100644
--- a/ext/standard/dns.c
+++ b/ext/standard/dns.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dns.c 314766 2011-08-10 17:40:56Z rasmus $ */
+/* $Id: dns.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes */
#include "php.h"
diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c
index a6e5b0a48..e20b19d0a 100644
--- a/ext/standard/dns_win32.c
+++ b/ext/standard/dns_win32.c
@@ -103,6 +103,11 @@ PHP_FUNCTION(dns_check_record)
return;
}
+ if (hostname_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Host cannot be empty");
+ RETURN_FALSE;
+ }
+
if (rectype) {
if (!strcasecmp("A", rectype)) type = DNS_TYPE_A;
else if (!strcasecmp("NS", rectype)) type = DNS_TYPE_NS;
diff --git a/ext/standard/exec.c b/ext/standard/exec.c
index efe18e797..d56009f63 100644
--- a/ext/standard/exec.c
+++ b/ext/standard/exec.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
| Ilia Alshanetsky <iliaa@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: exec.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: exec.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdio.h>
#include "php.h"
diff --git a/ext/standard/exec.h b/ext/standard/exec.h
index a8e809df3..7da109b25 100644
--- a/ext/standard/exec.h
+++ b/ext/standard/exec.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: exec.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: exec.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef EXEC_H
#define EXEC_H
diff --git a/ext/standard/file.c b/ext/standard/file.c
index 091eb4390..2fa1ecc6d 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c 312285 2011-06-19 14:50:44Z felipe $ */
+/* $Id: file.c 321634 2012-01-01 13:15:04Z felipe $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -876,7 +876,7 @@ PHP_FUNCTION(tempnam)
RETVAL_FALSE;
- if ((fd = php_open_temporary_fd(dir, p, &opened_path TSRMLS_CC)) >= 0) {
+ if ((fd = php_open_temporary_fd_ex(dir, p, &opened_path, 1 TSRMLS_CC)) >= 0) {
close(fd);
RETVAL_STRING(opened_path, 0);
}
@@ -2199,7 +2199,7 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
inc_len = (bptr < limit ? (*bptr == '\0' ? 1: php_mblen(bptr, limit - bptr)): 0);
if (inc_len == 1) {
char *tmp = bptr;
- while (isspace((int)*(unsigned char *)tmp)) {
+ while ((*tmp != delimiter) && isspace((int)*(unsigned char *)tmp)) {
tmp++;
}
if (*tmp == enclosure) {
diff --git a/ext/standard/file.h b/ext/standard/file.h
index b4c0e6287..fd9c51030 100644
--- a/ext/standard/file.h
+++ b/ext/standard/file.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: file.h 321634 2012-01-01 13:15:04Z felipe $ */
/* Synced with php 3.0 revision 1.30 1999-06-16 [ssb] */
diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c
index d961f0e65..bf980a3dd 100644
--- a/ext/standard/filestat.c
+++ b/ext/standard/filestat.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filestat.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: filestat.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "safe_mode.h"
diff --git a/ext/standard/filters.c b/ext/standard/filters.c
index 80ce98f34..5bad4cefe 100644
--- a/ext/standard/filters.c
+++ b/ext/standard/filters.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filters.c 311407 2011-05-24 23:49:26Z felipe $ */
+/* $Id: filters.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
@@ -1897,7 +1897,6 @@ php_stream_filter_factory consumed_filter_factory = {
typedef enum _php_chunked_filter_state {
CHUNK_SIZE_START,
CHUNK_SIZE,
- CHUNK_SIZE_EXT_START,
CHUNK_SIZE_EXT,
CHUNK_SIZE_CR,
CHUNK_SIZE_LF,
@@ -1937,7 +1936,7 @@ static int php_dechunk(char *buf, int len, php_chunked_filter_data *data)
data->state = CHUNK_ERROR;
break;
} else {
- data->state = CHUNK_SIZE_EXT_START;
+ data->state = CHUNK_SIZE_EXT;
break;
}
data->state = CHUNK_SIZE;
@@ -1948,13 +1947,6 @@ static int php_dechunk(char *buf, int len, php_chunked_filter_data *data)
} else if (p == end) {
return out_len;
}
- case CHUNK_SIZE_EXT_START:
- if (*p == ';'|| *p == '\r' || *p == '\n') {
- data->state = CHUNK_SIZE_EXT;
- } else {
- data->state = CHUNK_ERROR;
- continue;
- }
case CHUNK_SIZE_EXT:
/* skip extension */
while (p < end && *p != '\r' && *p != '\n') {
diff --git a/ext/standard/flock_compat.c b/ext/standard/flock_compat.c
index 2c9bcdb22..4e7a061f2 100644
--- a/ext/standard/flock_compat.c
+++ b/ext/standard/flock_compat.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: flock_compat.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: flock_compat.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include <errno.h>
diff --git a/ext/standard/flock_compat.h b/ext/standard/flock_compat.h
index 4d2ac3bb4..d8ff83b4a 100644
--- a/ext/standard/flock_compat.h
+++ b/ext/standard/flock_compat.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: flock_compat.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: flock_compat.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef FLOCK_COMPAT_H
#define FLOCK_COMPAT_H
diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c
index 78663bc5d..a3bbbf2d0 100644
--- a/ext/standard/formatted_print.c
+++ b/ext/standard/formatted_print.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: formatted_print.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: formatted_print.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <math.h> /* modf() */
#include "php.h"
diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c
index a7b8c846d..556f83763 100644
--- a/ext/standard/fsock.c
+++ b/ext/standard/fsock.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fsock.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: fsock.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
diff --git a/ext/standard/fsock.h b/ext/standard/fsock.h
index 08422c103..dba7e80c6 100644
--- a/ext/standard/fsock.h
+++ b/ext/standard/fsock.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fsock.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: fsock.h 321634 2012-01-01 13:15:04Z felipe $ */
/* Synced with php 3.0 revision 1.24 1999-06-18 [ssb] */
diff --git a/ext/standard/ftok.c b/ext/standard/ftok.c
index 27eb839b4..133b2a3b3 100644
--- a/ext/standard/ftok.c
+++ b/ext/standard/ftok.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ftok.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: ftok.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c
index b8f3fe100..b1e90c834 100644
--- a/ext/standard/ftp_fopen_wrapper.c
+++ b/ext/standard/ftp_fopen_wrapper.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
| Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: ftp_fopen_wrapper.c 308734 2011-02-27 20:23:54Z cataphract $ */
+/* $Id: ftp_fopen_wrapper.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
diff --git a/ext/standard/head.c b/ext/standard/head.c
index 3ad04b04a..2392d7eb0 100644
--- a/ext/standard/head.c
+++ b/ext/standard/head.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
-/* $Id: head.c 314486 2011-08-08 12:10:27Z iliaa $ */
+/* $Id: head.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdio.h>
#include "php.h"
diff --git a/ext/standard/head.h b/ext/standard/head.h
index 5458e028a..71f307d3c 100644
--- a/ext/standard/head.h
+++ b/ext/standard/head.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: head.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: head.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef HEAD_H
#define HEAD_H
diff --git a/ext/standard/html.c b/ext/standard/html.c
index a65456bf5..d0ed4a26f 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: html.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: html.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
* HTML entity resources:
@@ -1020,8 +1020,8 @@ PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *new
code = strtol(p + 2, &next, 10);
}
- if (code == '\'' && !(quote_style & ENT_HTML_QUOTE_SINGLE) ||
- code == '"' && !(quote_style & ENT_HTML_QUOTE_DOUBLE)) {
+ if ((code == '\'' && !(quote_style & ENT_HTML_QUOTE_SINGLE)) ||
+ (code == '"' && !(quote_style & ENT_HTML_QUOTE_DOUBLE))) {
invalid_code = 1;
}
diff --git a/ext/standard/html.h b/ext/standard/html.h
index 20256a3a5..497bf403a 100644
--- a/ext/standard/html.h
+++ b/ext/standard/html.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: html.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: html.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef HTML_H
#define HTML_H
diff --git a/ext/standard/http.c b/ext/standard/http.c
index 5ddfbf055..d55de8a58 100644
--- a/ext/standard/http.c
+++ b/ext/standard/http.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: http.c 307432 2011-01-13 07:27:46Z stas $ */
+/* $Id: http.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php_http.h"
#include "php_ini.h"
diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c
index 2fd25e0da..74df28404 100644
--- a/ext/standard/http_fopen_wrapper.c
+++ b/ext/standard/http_fopen_wrapper.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
| Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: http_fopen_wrapper.c 314641 2011-08-09 12:16:58Z laruence $ */
+/* $Id: http_fopen_wrapper.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
@@ -719,7 +719,10 @@ finish:
char *e = http_header_line + http_header_line_length - 1;
if (*e != '\n') {
do { /* partial header */
- php_stream_get_line(stream, http_header_line, HTTP_HEADER_BLOCK_SIZE, &http_header_line_length);
+ if (php_stream_get_line(stream, http_header_line, HTTP_HEADER_BLOCK_SIZE, &http_header_line_length) == NULL) {
+ php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "Failed to read HTTP headers");
+ goto out;
+ }
e = http_header_line + http_header_line_length - 1;
} while (*e != '\n');
continue;
@@ -787,9 +790,6 @@ finish:
if (location[0] != '\0')
php_stream_notify_info(context, PHP_STREAM_NOTIFY_REDIRECTED, location, 0);
- if (context) { /* keep the context for the next try */
- zend_list_addref(context->rsrc_id);
- }
php_stream_close(stream);
stream = NULL;
diff --git a/ext/standard/image.c b/ext/standard/image.c
index fc17ff67e..201b5f5f7 100644
--- a/ext/standard/image.c
+++ b/ext/standard/image.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: image.c 310980 2011-05-13 05:06:48Z scottmac $ */
+/* $Id: image.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include <stdio.h>
diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c
index 9e45e4915..2a5988bee 100644
--- a/ext/standard/incomplete_class.c
+++ b/ext/standard/incomplete_class.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: incomplete_class.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: incomplete_class.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "basic_functions.h"
diff --git a/ext/standard/info.c b/ext/standard/info.c
index f7b697773..c46e068d2 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: info.c 313538 2011-07-21 14:49:55Z pajoye $ */
+/* $Id: info.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_ini.h"
@@ -626,7 +626,7 @@ PHPAPI void php_print_info_htmlhead(TSRMLS_D)
PUTS("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n");
- PUTS("<html>");
+ PUTS("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
PUTS("<head>\n");
php_info_print_style(TSRMLS_C);
PUTS("<title>phpinfo()</title>");
diff --git a/ext/standard/info.h b/ext/standard/info.h
index 977e305e1..ed5a61193 100644
--- a/ext/standard/info.h
+++ b/ext/standard/info.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: info.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: info.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef INFO_H
#define INFO_H
diff --git a/ext/standard/iptc.c b/ext/standard/iptc.c
index dafbfa5f7..405c1a71d 100644
--- a/ext/standard/iptc.c
+++ b/ext/standard/iptc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: iptc.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: iptc.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
* Functions to parse & compse IPTC data.
diff --git a/ext/standard/lcg.c b/ext/standard/lcg.c
index 6db3f6fe4..6d63f59e1 100644
--- a/ext/standard/lcg.c
+++ b/ext/standard/lcg.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: lcg.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: lcg.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_lcg.h"
diff --git a/ext/standard/levenshtein.c b/ext/standard/levenshtein.c
index a84b155f8..43d1a14ac 100644
--- a/ext/standard/levenshtein.c
+++ b/ext/standard/levenshtein.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Hartmut Holzgraefe <hholzgra@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: levenshtein.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: levenshtein.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include <stdlib.h>
diff --git a/ext/standard/link.c b/ext/standard/link.c
index 1f8be4c1b..b75441879 100644
--- a/ext/standard/link.c
+++ b/ext/standard/link.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: link.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: link.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_filestat.h"
diff --git a/ext/standard/link_win32.c b/ext/standard/link_win32.c
index 37a5fd252..2d1723941 100644
--- a/ext/standard/link_win32.c
+++ b/ext/standard/link_win32.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: link_win32.c 313176 2011-07-12 15:15:17Z pajoye $ */
+/* $Id: link_win32.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef PHP_WIN32
#include "php.h"
diff --git a/ext/standard/mail.c b/ext/standard/mail.c
index 984b84e37..8258e1150 100644
--- a/ext/standard/mail.c
+++ b/ext/standard/mail.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mail.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: mail.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
#include <ctype.h>
diff --git a/ext/standard/math.c b/ext/standard/math.c
index b656fafae..4651b21fd 100644
--- a/ext/standard/math.c
+++ b/ext/standard/math.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: math.c 312074 2011-06-12 00:56:18Z cataphract $ */
+/* $Id: math.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_math.h"
diff --git a/ext/standard/md5.c b/ext/standard/md5.c
index b9c9b3ab8..8ceeed8cf 100644
--- a/ext/standard/md5.c
+++ b/ext/standard/md5.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: md5.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: md5.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "md5.h"
diff --git a/ext/standard/md5.h b/ext/standard/md5.h
index 6ffbc2fca..508b493fb 100644
--- a/ext/standard/md5.h
+++ b/ext/standard/md5.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: md5.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: md5.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MD5_H
#define MD5_H
diff --git a/ext/standard/metaphone.c b/ext/standard/metaphone.c
index 468f26758..4774b7ca4 100644
--- a/ext/standard/metaphone.c
+++ b/ext/standard/metaphone.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: metaphone.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: metaphone.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
Based on CPANs "Text-Metaphone-1.96" by Michael G Schwern <schwern@pobox.com>
diff --git a/ext/standard/microtime.c b/ext/standard/microtime.c
index 92248a22e..897a14e20 100644
--- a/ext/standard/microtime.c
+++ b/ext/standard/microtime.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: microtime.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: microtime.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/microtime.h b/ext/standard/microtime.h
index b0019dbf9..7a1c8825d 100644
--- a/ext/standard/microtime.h
+++ b/ext/standard/microtime.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: microtime.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: microtime.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef MICROTIME_H
#define MICROTIME_H
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 9eca312a6..8bc95fc7c 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Chris Schneider <cschneid@relog.ch> |
+----------------------------------------------------------------------+
*/
-/* $Id: pack.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pack.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/pack.h b/ext/standard/pack.h
index 81c96dc9d..5ed9c5e4b 100644
--- a/ext/standard/pack.h
+++ b/ext/standard/pack.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pack.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pack.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PACK_H
#define PACK_H
diff --git a/ext/standard/pageinfo.c b/ext/standard/pageinfo.c
index 09182dd7e..6fe112b36 100644
--- a/ext/standard/pageinfo.c
+++ b/ext/standard/pageinfo.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pageinfo.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pageinfo.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "pageinfo.h"
diff --git a/ext/standard/pageinfo.h b/ext/standard/pageinfo.h
index 672179503..bc6528346 100644
--- a/ext/standard/pageinfo.h
+++ b/ext/standard/pageinfo.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pageinfo.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: pageinfo.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PAGEINFO_H
#define PAGEINFO_H
diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h
index ddd267096..dd4ae69ed 100644
--- a/ext/standard/php_array.h
+++ b/ext/standard/php_array.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_array.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_array.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ARRAY_H
#define PHP_ARRAY_H
diff --git a/ext/standard/php_assert.h b/ext/standard/php_assert.h
index 6cc5d76d3..5a61b515c 100644
--- a/ext/standard/php_assert.h
+++ b/ext/standard/php_assert.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_assert.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_assert.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ASSERT_H
#define PHP_ASSERT_H
diff --git a/ext/standard/php_browscap.h b/ext/standard/php_browscap.h
index 523b2de13..5efd371a3 100644
--- a/ext/standard/php_browscap.h
+++ b/ext/standard/php_browscap.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_browscap.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_browscap.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_BROWSCAP_H
#define PHP_BROWSCAP_H
diff --git a/ext/standard/php_crypt.h b/ext/standard/php_crypt.h
index 02c6d564d..9d5805f39 100644
--- a/ext/standard/php_crypt.h
+++ b/ext/standard/php_crypt.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_crypt.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_crypt.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_CRYPT_H
#define PHP_CRYPT_H
diff --git a/ext/standard/php_crypt_r.c b/ext/standard/php_crypt_r.c
index 86076e8bf..e8d59b99a 100644
--- a/ext/standard/php_crypt_r.c
+++ b/ext/standard/php_crypt_r.c
@@ -1,9 +1,9 @@
-/* $Id: php_crypt_r.c 315338 2011-08-23 08:09:55Z johannes $ */
+/* $Id: php_crypt_r.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -94,8 +94,7 @@ void _crypt_extended_init_r(void)
if (!initialized) {
#ifdef PHP_WIN32
InterlockedIncrement(&initialized);
-#elif (defined(__GNUC__) && !defined(__hpux) && (__GNUC__ > 4 || \
- (__GNUC__ == 4 && (__GNUC_MINOR__ > 1 || (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ > 1)))))
+#elif defined(HAVE_SYNC_FETCH_AND_ADD)
__sync_fetch_and_add(&initialized, 1);
#elif defined(HAVE_ATOMIC_H) /* Solaris 10 defines atomic API within */
membar_producer();
diff --git a/ext/standard/php_crypt_r.h b/ext/standard/php_crypt_r.h
index f153ac322..06f269987 100644
--- a/ext/standard/php_crypt_r.h
+++ b/ext/standard/php_crypt_r.h
@@ -1,9 +1,9 @@
-/* $Id: php_crypt_r.h 313406 2011-07-18 21:26:29Z pajoye $ */
+/* $Id: php_crypt_r.h 321634 2012-01-01 13:15:04Z felipe $ */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/php_dir.h b/ext/standard/php_dir.h
index a76615300..98cd5f932 100644
--- a/ext/standard/php_dir.h
+++ b/ext/standard/php_dir.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dir.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_dir.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_DIR_H
#define PHP_DIR_H
diff --git a/ext/standard/php_dns.h b/ext/standard/php_dns.h
index e24caf538..0f015d1ce 100644
--- a/ext/standard/php_dns.h
+++ b/ext/standard/php_dns.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dns.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_dns.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_DNS_H
#define PHP_DNS_H
diff --git a/ext/standard/php_ext_syslog.h b/ext/standard/php_ext_syslog.h
index cf697593a..988f47942 100644
--- a/ext/standard/php_ext_syslog.h
+++ b/ext/standard/php_ext_syslog.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ext_syslog.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ext_syslog.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_EXT_SYSLOG_H
#define PHP_EXT_SYSLOG_H
diff --git a/ext/standard/php_filestat.h b/ext/standard/php_filestat.h
index 6103f2cb9..f1b894d4f 100644
--- a/ext/standard/php_filestat.h
+++ b/ext/standard/php_filestat.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_filestat.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_filestat.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FILESTAT_H
#define PHP_FILESTAT_H
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c
index 1360bab6c..999bc1f13 100644
--- a/ext/standard/php_fopen_wrapper.c
+++ b/ext/standard/php_fopen_wrapper.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
| Hartmut Holzgraefe <hholzgra@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_fopen_wrapper.c 307536 2011-01-17 13:44:54Z iliaa $ */
+/* $Id: php_fopen_wrapper.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdio.h>
#include <stdlib.h>
diff --git a/ext/standard/php_fopen_wrappers.h b/ext/standard/php_fopen_wrappers.h
index 96beaea30..0d53bfa19 100644
--- a/ext/standard/php_fopen_wrappers.h
+++ b/ext/standard/php_fopen_wrappers.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_fopen_wrappers.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_fopen_wrappers.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FOPEN_WRAPPERS_H
#define PHP_FOPEN_WRAPPERS_H
diff --git a/ext/standard/php_ftok.h b/ext/standard/php_ftok.h
index 51860c809..b2b7a14a0 100644
--- a/ext/standard/php_ftok.h
+++ b/ext/standard/php_ftok.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ftok.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_ftok.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_FTOK_H
#define PHP_FTOK_H
diff --git a/ext/standard/php_http.h b/ext/standard/php_http.h
index 7330248c0..29279cb5f 100644
--- a/ext/standard/php_http.h
+++ b/ext/standard/php_http.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.h 307432 2011-01-13 07:27:46Z stas $ */
+/* $Id: php_http.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_HTTP_H
#define PHP_HTTP_H
diff --git a/ext/standard/php_image.h b/ext/standard/php_image.h
index ed52ec9c7..c2f8f3347 100644
--- a/ext/standard/php_image.h
+++ b/ext/standard/php_image.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_image.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_image.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_IMAGE_H
#define PHP_IMAGE_H
diff --git a/ext/standard/php_incomplete_class.h b/ext/standard/php_incomplete_class.h
index ed52210c2..e1faf3e13 100644
--- a/ext/standard/php_incomplete_class.h
+++ b/ext/standard/php_incomplete_class.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_incomplete_class.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_incomplete_class.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_INCOMPLETE_CLASS_H
#define PHP_INCOMPLETE_CLASS_H
diff --git a/ext/standard/php_iptc.h b/ext/standard/php_iptc.h
index 859ad6862..981cc7f49 100644
--- a/ext/standard/php_iptc.h
+++ b/ext/standard/php_iptc.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_iptc.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_iptc.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_IPTC_H
#define PHP_IPTC_H
diff --git a/ext/standard/php_lcg.h b/ext/standard/php_lcg.h
index 7d57d69c2..cead367ab 100644
--- a/ext/standard/php_lcg.h
+++ b/ext/standard/php_lcg.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_lcg.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_lcg.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_LCG_H
#define PHP_LCG_H
diff --git a/ext/standard/php_link.h b/ext/standard/php_link.h
index 8126a6304..57bc46a74 100644
--- a/ext/standard/php_link.h
+++ b/ext/standard/php_link.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_link.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_link.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_LINK_H
#define PHP_LINK_H
diff --git a/ext/standard/php_mail.h b/ext/standard/php_mail.h
index 8164af8ac..88ba00ac1 100644
--- a/ext/standard/php_mail.h
+++ b/ext/standard/php_mail.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mail.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_mail.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MAIL_H
#define PHP_MAIL_H
diff --git a/ext/standard/php_math.h b/ext/standard/php_math.h
index 77fe6540e..2076caf80 100644
--- a/ext/standard/php_math.h
+++ b/ext/standard/php_math.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_math.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_math.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_MATH_H
#define PHP_MATH_H
diff --git a/ext/standard/php_metaphone.h b/ext/standard/php_metaphone.h
index 1067e8b77..287b750bf 100644
--- a/ext/standard/php_metaphone.h
+++ b/ext/standard/php_metaphone.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_metaphone.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_metaphone.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_METAPHONE_H
#define PHP_METAPHONE_H
diff --git a/ext/standard/php_rand.h b/ext/standard/php_rand.h
index 9a0dceff4..7e66dc22b 100644
--- a/ext/standard/php_rand.h
+++ b/ext/standard/php_rand.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -20,7 +20,7 @@
| Based on code from: Shawn Cokus <Cokus@math.washington.edu> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_rand.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_rand.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_RAND_H
#define PHP_RAND_H
diff --git a/ext/standard/php_smart_str.h b/ext/standard/php_smart_str.h
index 6b4c1a95c..0347be2d9 100644
--- a/ext/standard/php_smart_str.h
+++ b/ext/standard/php_smart_str.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_smart_str.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_smart_str.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SMART_STR_H
#define PHP_SMART_STR_H
diff --git a/ext/standard/php_smart_str_public.h b/ext/standard/php_smart_str_public.h
index 98da8b564..fe90c5e62 100644
--- a/ext/standard/php_smart_str_public.h
+++ b/ext/standard/php_smart_str_public.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_smart_str_public.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_smart_str_public.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SMART_STR_PUBLIC_H
#define PHP_SMART_STR_PUBLIC_H
diff --git a/ext/standard/php_standard.h b/ext/standard/php_standard.h
index 7595d45ec..9fa04f4e0 100644
--- a/ext/standard/php_standard.h
+++ b/ext/standard/php_standard.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_standard.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_standard.h 321634 2012-01-01 13:15:04Z felipe $ */
#include "basic_functions.h"
#include "php_math.h"
diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h
index 0901ec491..fbc64a13a 100644
--- a/ext/standard/php_string.h
+++ b/ext/standard/php_string.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_string.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_string.h 321634 2012-01-01 13:15:04Z felipe $ */
/* Synced with php 3.0 revision 1.43 1999-06-16 [ssb] */
diff --git a/ext/standard/php_type.h b/ext/standard/php_type.h
index c2e5aa90d..f745cc040 100644
--- a/ext/standard/php_type.h
+++ b/ext/standard/php_type.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_type.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_type.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_TYPE_H
#define PHP_TYPE_H
diff --git a/ext/standard/php_uuencode.h b/ext/standard/php_uuencode.h
index 7514ced0d..c6a42d78e 100644
--- a/ext/standard/php_uuencode.h
+++ b/ext/standard/php_uuencode.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_uuencode.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_uuencode.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_UUENCODE_H
#define PHP_UUENCODE_H
diff --git a/ext/standard/php_var.h b/ext/standard/php_var.h
index 94934183b..771d4876b 100644
--- a/ext/standard/php_var.h
+++ b/ext/standard/php_var.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_var.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_var.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_VAR_H
#define PHP_VAR_H
diff --git a/ext/standard/php_versioning.h b/ext/standard/php_versioning.h
index d3e9aee82..7a464f081 100644
--- a/ext/standard/php_versioning.h
+++ b/ext/standard/php_versioning.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_versioning.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_versioning.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_VERSIONING_H
#define PHP_VERSIONING_H
diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c
index b9411aebc..89109813a 100644
--- a/ext/standard/proc_open.c
+++ b/ext/standard/proc_open.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Wez Furlong <wez@thebrainroom.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: proc_open.c 314641 2011-08-09 12:16:58Z laruence $ */
+/* $Id: proc_open.c 321634 2012-01-01 13:15:04Z felipe $ */
#if 0 && (defined(__linux__) || defined(sun) || defined(__IRIX__))
# define _BSD_SOURCE /* linux wants this when XOPEN mode is on */
@@ -451,10 +451,9 @@ PHP_FUNCTION(proc_get_status)
/* {{{ handy definitions for portability/readability */
#ifdef PHP_WIN32
-# define pipe(pair) (CreatePipe(&pair[0], &pair[1], &security, 2048L) ? 0 : -1)
+# define pipe(pair) (CreatePipe(&pair[0], &pair[1], &security, 0) ? 0 : -1)
# define COMSPEC_NT "cmd.exe"
-# define COMSPEC_9X "command.com"
static inline HANDLE dup_handle(HANDLE src, BOOL inherit, BOOL closeorig)
{
@@ -800,7 +799,7 @@ PHP_FUNCTION(proc_open)
if (bypass_shell) {
newprocok = CreateProcess(NULL, command, &security, &security, TRUE, dwCreateFlags, env.envp, cwd, &si, &pi);
} else {
- spprintf(&command_with_cmd, 0, "%s /c %s", GetVersion() < 0x80000000 ? COMSPEC_NT : COMSPEC_9X, command);
+ spprintf(&command_with_cmd, 0, "%s /c %s", COMSPEC_NT, command);
newprocok = CreateProcess(NULL, command_with_cmd, &security, &security, TRUE, dwCreateFlags, env.envp, cwd, &si, &pi);
diff --git a/ext/standard/proc_open.h b/ext/standard/proc_open.h
index 3ff92eb73..d870e38b0 100644
--- a/ext/standard/proc_open.h
+++ b/ext/standard/proc_open.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Wez Furlong <wez@thebrainroom.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: proc_open.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: proc_open.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef PHP_WIN32
typedef HANDLE php_file_descriptor_t;
diff --git a/ext/standard/quot_print.c b/ext/standard/quot_print.c
index e4caaa4f5..cab811812 100644
--- a/ext/standard/quot_print.c
+++ b/ext/standard/quot_print.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: quot_print.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: quot_print.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
diff --git a/ext/standard/quot_print.h b/ext/standard/quot_print.h
index acbe736de..a01820c2a 100644
--- a/ext/standard/quot_print.h
+++ b/ext/standard/quot_print.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: quot_print.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: quot_print.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef QUOT_PRINT_H
#define QUOT_PRINT_H
diff --git a/ext/standard/rand.c b/ext/standard/rand.c
index 2be932046..c2925f817 100644
--- a/ext/standard/rand.c
+++ b/ext/standard/rand.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -23,7 +23,7 @@
| Shawn Cokus <Cokus@math.washington.edu> |
+----------------------------------------------------------------------+
*/
-/* $Id: rand.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: rand.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c
index 161fd6d26..989cfe404 100644
--- a/ext/standard/scanf.c
+++ b/ext/standard/scanf.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: scanf.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: scanf.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
scanf.c --
diff --git a/ext/standard/scanf.h b/ext/standard/scanf.h
index 0d5858717..b5191f7f2 100644
--- a/ext/standard/scanf.h
+++ b/ext/standard/scanf.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: scanf.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: scanf.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SCANF_H
#define SCANF_H
diff --git a/ext/standard/sha1.c b/ext/standard/sha1.c
index 0a9447993..50290303b 100644
--- a/ext/standard/sha1.c
+++ b/ext/standard/sha1.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sha1.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: sha1.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/sha1.h b/ext/standard/sha1.h
index 9cfef1e64..7f4e67526 100644
--- a/ext/standard/sha1.h
+++ b/ext/standard/sha1.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sha1.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: sha1.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef SHA1_H
#define SHA1_H
diff --git a/ext/standard/soundex.c b/ext/standard/soundex.c
index 0096a712c..c6a05480a 100644
--- a/ext/standard/soundex.c
+++ b/ext/standard/soundex.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Bjørn Borud - Guardian Networks AS <borud@guardian.no> |
+----------------------------------------------------------------------+
*/
-/* $Id: soundex.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: soundex.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include <stdlib.h>
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 3a90b885b..e6ad6ebc1 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streamsfuncs.c 307922 2011-02-01 18:10:35Z cataphract $ */
+/* $Id: streamsfuncs.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
diff --git a/ext/standard/streamsfuncs.h b/ext/standard/streamsfuncs.h
index 804501e99..aece3d458 100644
--- a/ext/standard/streamsfuncs.h
+++ b/ext/standard/streamsfuncs.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streamsfuncs.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: streamsfuncs.h 321634 2012-01-01 13:15:04Z felipe $ */
/* Flags for stream_socket_client */
#define PHP_STREAM_CLIENT_PERSISTENT 1
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 9d9e5b3f4..896a54566 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c 310401 2011-04-21 01:51:24Z pierrick $ */
+/* $Id: string.c 321634 2012-01-01 13:15:04Z felipe $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -2336,6 +2336,10 @@ PHP_FUNCTION(substr_replace)
RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
}
} else { /* str is array of strings */
+ char *str_index = NULL;
+ uint str_index_len;
+ ulong num_index;
+
array_init(return_value);
if (Z_TYPE_PP(from) == IS_ARRAY) {
@@ -2471,7 +2475,13 @@ PHP_FUNCTION(substr_replace)
}
result[result_len] = '\0';
- add_next_index_stringl(return_value, result, result_len, 0);
+
+ if (zend_hash_get_current_key_ex(Z_ARRVAL_PP(str), &str_index, &str_index_len, &num_index, 0, &pos_str) == HASH_KEY_IS_STRING) {
+ add_assoc_stringl_ex(return_value, str_index, str_index_len, result, result_len, 0);
+ } else {
+ add_index_stringl(return_value, num_index, result, result_len, 0);
+ }
+
if(Z_TYPE_PP(tmp_str) != IS_STRING) {
zval_dtor(orig_str);
}
diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c
index 4cd54d687..39e01771d 100644
--- a/ext/standard/syslog.c
+++ b/ext/standard/syslog.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: syslog.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: syslog.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/tests/array/array_change_key_case_variation8.phpt b/ext/standard/tests/array/array_change_key_case_variation8.phpt
index f9893da79..3dc22ce0e 100644
--- a/ext/standard/tests/array/array_change_key_case_variation8.phpt
+++ b/ext/standard/tests/array/array_change_key_case_variation8.phpt
@@ -1,5 +1,10 @@
--TEST--
Test array_change_key_case() function : usage variations - Different strings as keys
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : array array_change_key_case(array $input [, int $case])
diff --git a/ext/standard/tests/array/arsort_variation5.phpt b/ext/standard/tests/array/arsort_variation5.phpt
index e69c26988..55c0882db 100644
--- a/ext/standard/tests/array/arsort_variation5.phpt
+++ b/ext/standard/tests/array/arsort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
-Test arsort() function : usage variations - sort strings
+Test arsort() function : usage variations - sort strings
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool arsort ( array &$array [, int $asort_flags] )
@@ -76,8 +81,10 @@ array(12) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
@@ -106,8 +113,10 @@ array(12) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
@@ -136,8 +145,10 @@ array(12) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
diff --git a/ext/standard/tests/array/asort_variation5.phpt b/ext/standard/tests/array/asort_variation5.phpt
index faf7a5de5..bb27dd692 100644
--- a/ext/standard/tests/array/asort_variation5.phpt
+++ b/ext/standard/tests/array/asort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
-Test asort() function : usage variations - sort strings
+Test asort() function : usage variations - sort strings
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool asort ( array &$array [, int $asort_flags] )
diff --git a/ext/standard/tests/array/krsort_variation5.phpt b/ext/standard/tests/array/krsort_variation5.phpt
index 59621654c..0dffc1956 100644
--- a/ext/standard/tests/array/krsort_variation5.phpt
+++ b/ext/standard/tests/array/krsort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
-Test krsort() function : usage variations - sort strings
+Test krsort() function : usage variations - sort strings
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool krsort ( array &$array [, int $sort_flags] )
@@ -76,8 +81,10 @@ array(11) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
@@ -104,8 +111,10 @@ array(11) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
@@ -132,8 +141,10 @@ array(11) {
string(3) "\cx"
["\a"]=>
string(2) "\a"
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
[" "]=>
string(1) " "
[" "]=>
diff --git a/ext/standard/tests/array/ksort_variation5.phpt b/ext/standard/tests/array/ksort_variation5.phpt
index 958476c01..d83591aae 100644
--- a/ext/standard/tests/array/ksort_variation5.phpt
+++ b/ext/standard/tests/array/ksort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
-Test ksort() function : usage variations - sort strings
+Test ksort() function : usage variations - sort strings
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool ksort ( array &$array [, int $sort_flags] )
@@ -78,8 +83,10 @@ array(11) {
string(1) " "
[" "]=>
string(1) " "
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
["\a"]=>
string(2) "\a"
["\cx"]=>
@@ -106,8 +113,10 @@ array(11) {
string(1) " "
[" "]=>
string(1) " "
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
["\a"]=>
string(2) "\a"
["\cx"]=>
@@ -134,8 +143,10 @@ array(11) {
string(1) " "
[" "]=>
string(1) " "
- [" "]=>
- string(1) " "
+ ["
+"]=>
+ string(1) "
+"
["\a"]=>
string(2) "\a"
["\cx"]=>
diff --git a/ext/standard/tests/array/natcasesort_variation4.phpt b/ext/standard/tests/array/natcasesort_variation4.phpt
index 81276ef1c..2a189f337 100644
--- a/ext/standard/tests/array/natcasesort_variation4.phpt
+++ b/ext/standard/tests/array/natcasesort_variation4.phpt
@@ -1,5 +1,10 @@
--TEST--
Test natcasesort() function : usage variations - different string types
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool natcasesort(array &$array_arg)
diff --git a/ext/standard/tests/array/rsort_variation5.phpt b/ext/standard/tests/array/rsort_variation5.phpt
index eba6bc420..e955cb34f 100644
--- a/ext/standard/tests/array/rsort_variation5.phpt
+++ b/ext/standard/tests/array/rsort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
Test rsort() function : usage variations - String values
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool rsort(array &$array_arg [, int $sort_flags])
diff --git a/ext/standard/tests/array/sort_variation5.phpt b/ext/standard/tests/array/sort_variation5.phpt
index 061a1cbac..7384c7402 100644
--- a/ext/standard/tests/array/sort_variation5.phpt
+++ b/ext/standard/tests/array/sort_variation5.phpt
@@ -1,5 +1,10 @@
--TEST--
-Test sort() function : usage variations - sort strings
+Test sort() function : usage variations - sort strings
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die("skip Output tested contains chars that are not shown the same on windows concole (ESC and co)");
+}
--FILE--
<?php
/* Prototype : bool sort ( array &$array [, int $sort_flags] )
@@ -74,7 +79,8 @@ array(12) {
[5]=>
string(1) " "
[6]=>
- string(1) " "
+ string(1) "
+"
[7]=>
string(2) "\a"
[8]=>
@@ -103,7 +109,8 @@ array(12) {
[5]=>
string(1) " "
[6]=>
- string(1) " "
+ string(1) "
+"
[7]=>
string(2) "\a"
[8]=>
@@ -132,7 +139,8 @@ array(12) {
[5]=>
string(1) " "
[6]=>
- string(1) " "
+ string(1) "
+"
[7]=>
string(2) "\a"
[8]=>
diff --git a/ext/standard/tests/class_object/is_a.phpt b/ext/standard/tests/class_object/is_a.phpt
new file mode 100644
index 000000000..832d5550f
--- /dev/null
+++ b/ext/standard/tests/class_object/is_a.phpt
@@ -0,0 +1,378 @@
+--TEST--
+is_a and is_subclass_of behaviour (with and without autoload)
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+interface if_a {
+ function f_a();
+}
+
+interface if_b extends if_a {
+ function f_b();
+}
+
+class base {
+ function _is_a($sub) {
+
+ echo "\n>>> With Defined class\n";
+ echo str_pad('is_a( OBJECT:'.get_class($this).', '.$sub.') = ', 60) . (is_a($this, $sub) ? 'yes' : 'no')."\n";
+ echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_a(get_class($this), $sub) ? 'yes' : 'no')."\n";
+ echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.', true) = ', 60). (is_a(get_class($this), $sub, true) ? 'yes' : 'no')."\n";
+ echo str_pad('is_subclass_of( OBJECT:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of($this, $sub) ? 'yes' : 'no')."\n";
+ echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of(get_class($this), $sub) ? 'yes' : 'no')."\n";
+ echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.',false) = ', 60). (is_subclass_of(get_class($this), $sub , false) ? 'yes' : 'no')."\n";
+
+ // with autoload options..
+ echo ">>> With Undefined\n";
+ echo str_pad('is_a( STRING:undefB, '.$sub.',true) = ', 60). (is_a('undefB', $sub, true) ? 'yes' : 'no')."\n";
+ echo str_pad('is_a( STRING:undefB, '.$sub.') = ', 60). (is_a('undefB', $sub) ? 'yes' : 'no')."\n";
+ echo str_pad('is_subclass_of( STRING:undefB, '.$sub.',false) = ', 60). (is_subclass_of('undefB', $sub, false) ? 'yes' : 'no')."\n";
+ echo str_pad('is_subclass_of( STRING:undefB, '.$sub.') = ', 60). (is_subclass_of('undefB', $sub) ? 'yes' : 'no')."\n";
+ }
+ function test() {
+ echo $this->_is_a('base');
+ echo $this->_is_a('derived_a');
+ echo $this->_is_a('if_a');
+ echo $this->_is_a('undefA');
+ echo "\n";
+ }
+}
+
+class derived_a extends base implements if_a {
+ function f_a() {}
+}
+
+class derived_b extends base implements if_a, if_b {
+ function f_a() {}
+ function f_b() {}
+}
+
+class derived_c extends derived_a implements if_b {
+ function f_b() {}
+}
+
+class derived_d extends derived_c {
+}
+
+$t = new base();
+$t->test();
+
+$t = new derived_a();
+$t->test();
+
+eval('
+ function __autoload($name)
+ {
+ echo ">>>> In __autoload: ";
+ var_dump($name);
+ }
+');
+
+echo "NOW WITH AUTOLOAD\n\n";
+
+$t = new base();
+$t->test();
+
+$t = new derived_a();
+$t->test();
+
+$t = new derived_b();
+$t->test();
+
+
+
+
+
+?>
+--EXPECTF--
+>>> With Defined class
+is_a( OBJECT:base, base) = yes
+is_a( STRING:base, base) = no
+is_a( STRING:base, base, true) = yes
+is_subclass_of( OBJECT:base, base) = no
+is_subclass_of( STRING:base, base) = no
+is_subclass_of( STRING:base, base,false) = no
+>>> With Undefined
+is_a( STRING:undefB, base,true) = no
+is_a( STRING:undefB, base) = no
+is_subclass_of( STRING:undefB, base,false) = no
+is_subclass_of( STRING:undefB, base) = no
+
+>>> With Defined class
+is_a( OBJECT:base, derived_a) = no
+is_a( STRING:base, derived_a) = no
+is_a( STRING:base, derived_a, true) = no
+is_subclass_of( OBJECT:base, derived_a) = no
+is_subclass_of( STRING:base, derived_a) = no
+is_subclass_of( STRING:base, derived_a,false) = no
+>>> With Undefined
+is_a( STRING:undefB, derived_a,true) = no
+is_a( STRING:undefB, derived_a) = no
+is_subclass_of( STRING:undefB, derived_a,false) = no
+is_subclass_of( STRING:undefB, derived_a) = no
+
+>>> With Defined class
+is_a( OBJECT:base, if_a) = no
+is_a( STRING:base, if_a) = no
+is_a( STRING:base, if_a, true) = no
+is_subclass_of( OBJECT:base, if_a) = no
+is_subclass_of( STRING:base, if_a) = no
+is_subclass_of( STRING:base, if_a,false) = no
+>>> With Undefined
+is_a( STRING:undefB, if_a,true) = no
+is_a( STRING:undefB, if_a) = no
+is_subclass_of( STRING:undefB, if_a,false) = no
+is_subclass_of( STRING:undefB, if_a) = no
+
+>>> With Defined class
+is_a( OBJECT:base, undefA) = no
+is_a( STRING:base, undefA) = no
+is_a( STRING:base, undefA, true) = no
+is_subclass_of( OBJECT:base, undefA) = no
+is_subclass_of( STRING:base, undefA) = no
+is_subclass_of( STRING:base, undefA,false) = no
+>>> With Undefined
+is_a( STRING:undefB, undefA,true) = no
+is_a( STRING:undefB, undefA) = no
+is_subclass_of( STRING:undefB, undefA,false) = no
+is_subclass_of( STRING:undefB, undefA) = no
+
+
+>>> With Defined class
+is_a( OBJECT:derived_a, base) = yes
+is_a( STRING:derived_a, base) = no
+is_a( STRING:derived_a, base, true) = yes
+is_subclass_of( OBJECT:derived_a, base) = yes
+is_subclass_of( STRING:derived_a, base) = yes
+is_subclass_of( STRING:derived_a, base,false) = no
+>>> With Undefined
+is_a( STRING:undefB, base,true) = no
+is_a( STRING:undefB, base) = no
+is_subclass_of( STRING:undefB, base,false) = no
+is_subclass_of( STRING:undefB, base) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, derived_a) = yes
+is_a( STRING:derived_a, derived_a) = no
+is_a( STRING:derived_a, derived_a, true) = yes
+is_subclass_of( OBJECT:derived_a, derived_a) = no
+is_subclass_of( STRING:derived_a, derived_a) = no
+is_subclass_of( STRING:derived_a, derived_a,false) = no
+>>> With Undefined
+is_a( STRING:undefB, derived_a,true) = no
+is_a( STRING:undefB, derived_a) = no
+is_subclass_of( STRING:undefB, derived_a,false) = no
+is_subclass_of( STRING:undefB, derived_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, if_a) = yes
+is_a( STRING:derived_a, if_a) = no
+is_a( STRING:derived_a, if_a, true) = yes
+is_subclass_of( OBJECT:derived_a, if_a) = yes
+is_subclass_of( STRING:derived_a, if_a) = yes
+is_subclass_of( STRING:derived_a, if_a,false) = no
+>>> With Undefined
+is_a( STRING:undefB, if_a,true) = no
+is_a( STRING:undefB, if_a) = no
+is_subclass_of( STRING:undefB, if_a,false) = no
+is_subclass_of( STRING:undefB, if_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, undefA) = no
+is_a( STRING:derived_a, undefA) = no
+is_a( STRING:derived_a, undefA, true) = no
+is_subclass_of( OBJECT:derived_a, undefA) = no
+is_subclass_of( STRING:derived_a, undefA) = no
+is_subclass_of( STRING:derived_a, undefA,false) = no
+>>> With Undefined
+is_a( STRING:undefB, undefA,true) = no
+is_a( STRING:undefB, undefA) = no
+is_subclass_of( STRING:undefB, undefA,false) = no
+is_subclass_of( STRING:undefB, undefA) = no
+
+NOW WITH AUTOLOAD
+
+
+>>> With Defined class
+is_a( OBJECT:base, base) = yes
+is_a( STRING:base, base) = no
+is_a( STRING:base, base, true) = yes
+is_subclass_of( OBJECT:base, base) = no
+is_subclass_of( STRING:base, base) = no
+is_subclass_of( STRING:base, base,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, base,true) = no
+is_a( STRING:undefB, base) = no
+is_subclass_of( STRING:undefB, base,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, base) = no
+
+>>> With Defined class
+is_a( OBJECT:base, derived_a) = no
+is_a( STRING:base, derived_a) = no
+is_a( STRING:base, derived_a, true) = no
+is_subclass_of( OBJECT:base, derived_a) = no
+is_subclass_of( STRING:base, derived_a) = no
+is_subclass_of( STRING:base, derived_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, derived_a,true) = no
+is_a( STRING:undefB, derived_a) = no
+is_subclass_of( STRING:undefB, derived_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, derived_a) = no
+
+>>> With Defined class
+is_a( OBJECT:base, if_a) = no
+is_a( STRING:base, if_a) = no
+is_a( STRING:base, if_a, true) = no
+is_subclass_of( OBJECT:base, if_a) = no
+is_subclass_of( STRING:base, if_a) = no
+is_subclass_of( STRING:base, if_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, if_a,true) = no
+is_a( STRING:undefB, if_a) = no
+is_subclass_of( STRING:undefB, if_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, if_a) = no
+
+>>> With Defined class
+is_a( OBJECT:base, undefA) = no
+is_a( STRING:base, undefA) = no
+is_a( STRING:base, undefA, true) = no
+is_subclass_of( OBJECT:base, undefA) = no
+is_subclass_of( STRING:base, undefA) = no
+is_subclass_of( STRING:base, undefA,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, undefA,true) = no
+is_a( STRING:undefB, undefA) = no
+is_subclass_of( STRING:undefB, undefA,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, undefA) = no
+
+
+>>> With Defined class
+is_a( OBJECT:derived_a, base) = yes
+is_a( STRING:derived_a, base) = no
+is_a( STRING:derived_a, base, true) = yes
+is_subclass_of( OBJECT:derived_a, base) = yes
+is_subclass_of( STRING:derived_a, base) = yes
+is_subclass_of( STRING:derived_a, base,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, base,true) = no
+is_a( STRING:undefB, base) = no
+is_subclass_of( STRING:undefB, base,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, base) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, derived_a) = yes
+is_a( STRING:derived_a, derived_a) = no
+is_a( STRING:derived_a, derived_a, true) = yes
+is_subclass_of( OBJECT:derived_a, derived_a) = no
+is_subclass_of( STRING:derived_a, derived_a) = no
+is_subclass_of( STRING:derived_a, derived_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, derived_a,true) = no
+is_a( STRING:undefB, derived_a) = no
+is_subclass_of( STRING:undefB, derived_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, derived_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, if_a) = yes
+is_a( STRING:derived_a, if_a) = no
+is_a( STRING:derived_a, if_a, true) = yes
+is_subclass_of( OBJECT:derived_a, if_a) = yes
+is_subclass_of( STRING:derived_a, if_a) = yes
+is_subclass_of( STRING:derived_a, if_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, if_a,true) = no
+is_a( STRING:undefB, if_a) = no
+is_subclass_of( STRING:undefB, if_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, if_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_a, undefA) = no
+is_a( STRING:derived_a, undefA) = no
+is_a( STRING:derived_a, undefA, true) = no
+is_subclass_of( OBJECT:derived_a, undefA) = no
+is_subclass_of( STRING:derived_a, undefA) = no
+is_subclass_of( STRING:derived_a, undefA,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, undefA,true) = no
+is_a( STRING:undefB, undefA) = no
+is_subclass_of( STRING:undefB, undefA,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, undefA) = no
+
+
+>>> With Defined class
+is_a( OBJECT:derived_b, base) = yes
+is_a( STRING:derived_b, base) = no
+is_a( STRING:derived_b, base, true) = yes
+is_subclass_of( OBJECT:derived_b, base) = yes
+is_subclass_of( STRING:derived_b, base) = yes
+is_subclass_of( STRING:derived_b, base,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, base,true) = no
+is_a( STRING:undefB, base) = no
+is_subclass_of( STRING:undefB, base,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, base) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_b, derived_a) = no
+is_a( STRING:derived_b, derived_a) = no
+is_a( STRING:derived_b, derived_a, true) = no
+is_subclass_of( OBJECT:derived_b, derived_a) = no
+is_subclass_of( STRING:derived_b, derived_a) = no
+is_subclass_of( STRING:derived_b, derived_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, derived_a,true) = no
+is_a( STRING:undefB, derived_a) = no
+is_subclass_of( STRING:undefB, derived_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, derived_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_b, if_a) = yes
+is_a( STRING:derived_b, if_a) = no
+is_a( STRING:derived_b, if_a, true) = yes
+is_subclass_of( OBJECT:derived_b, if_a) = yes
+is_subclass_of( STRING:derived_b, if_a) = yes
+is_subclass_of( STRING:derived_b, if_a,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, if_a,true) = no
+is_a( STRING:undefB, if_a) = no
+is_subclass_of( STRING:undefB, if_a,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, if_a) = no
+
+>>> With Defined class
+is_a( OBJECT:derived_b, undefA) = no
+is_a( STRING:derived_b, undefA) = no
+is_a( STRING:derived_b, undefA, true) = no
+is_subclass_of( OBJECT:derived_b, undefA) = no
+is_subclass_of( STRING:derived_b, undefA) = no
+is_subclass_of( STRING:derived_b, undefA,false) = no
+>>> With Undefined
+>>>> In __autoload: string(6) "undefB"
+is_a( STRING:undefB, undefA,true) = no
+is_a( STRING:undefB, undefA) = no
+is_subclass_of( STRING:undefB, undefA,false) = no
+>>>> In __autoload: string(6) "undefB"
+is_subclass_of( STRING:undefB, undefA) = no
diff --git a/ext/standard/tests/class_object/is_a_error_001.phpt b/ext/standard/tests/class_object/is_a_error_001.phpt
index 921e3a260..6518a03c0 100644
--- a/ext/standard/tests/class_object/is_a_error_001.phpt
+++ b/ext/standard/tests/class_object/is_a_error_001.phpt
@@ -4,7 +4,7 @@ Test is_a() function : error conditions - wrong number of args
error_reporting=E_ALL | E_STRICT | E_DEPRECATED
--FILE--
<?php
-/* Prototype : proto bool is_a(object object, string class_name)
+/* Prototype : proto bool is_a(object object, string class_name, bool allow_string)
* Description: Returns true if the object is of this class or has this class as one of its parents
* Source code: Zend/zend_builtin_functions.c
* Alias to functions:
@@ -12,13 +12,19 @@ error_reporting=E_ALL | E_STRICT | E_DEPRECATED
echo "*** Testing is_a() : error conditions ***\n";
-
//Test is_a with one more than the expected number of arguments
echo "\n-- Testing is_a() function with more than expected no. of arguments --\n";
$object = new stdclass();
$class_name = 'string_val';
+$allow_string = false;
$extra_arg = 10;
-var_dump( is_a($object, $class_name, $extra_arg) );
+
+var_dump( is_a($object, $class_name, $allow_string, $object) );
+
+//Test is_a with one more than the expected number of arguments
+echo "\n-- Testing is_a() function with non-boolean in last position --\n";
+var_dump( is_a($object, $class_name, $object) );
+
// Testing is_a with one less than the expected number of arguments
echo "\n-- Testing is_a() function with less than expected no. of arguments --\n";
@@ -28,15 +34,21 @@ var_dump( is_a($object) );
echo "Done";
?>
--EXPECTF--
+
*** Testing is_a() : error conditions ***
-- Testing is_a() function with more than expected no. of arguments --
-Warning: is_a() expects exactly 2 parameters, 3 given in %s on line 16
+Warning: is_a() expects at most 3 parameters, 4 given in %s on line 17
+NULL
+
+-- Testing is_a() function with non-boolean in last position --
+
+Warning: is_a() expects parameter 3 to be boolean, object given in %s on line 21
NULL
-- Testing is_a() function with less than expected no. of arguments --
-Warning: is_a() expects exactly 2 parameters, 1 given in %s on line 21
+Warning: is_a() expects at least 2 parameters, 1 given in %s on line 27
NULL
-Done
+Done \ No newline at end of file
diff --git a/ext/standard/tests/class_object/is_subclass_of_error_001.phpt b/ext/standard/tests/class_object/is_subclass_of_error_001.phpt
index bc657866d..987dcd47b 100644
--- a/ext/standard/tests/class_object/is_subclass_of_error_001.phpt
+++ b/ext/standard/tests/class_object/is_subclass_of_error_001.phpt
@@ -15,8 +15,18 @@ echo "*** Testing is_subclass_of() : error conditions ***\n";
echo "\n-- Testing is_subclass_of() function with more than expected no. of arguments --\n";
$object = new stdclass();
$class_name = 'string_val';
+$allow_string = false;
$extra_arg = 10;
-var_dump( is_subclass_of($object, $class_name, $extra_arg) );
+var_dump( is_subclass_of($object, $class_name, $allow_string, $extra_arg) );
+
+//Test is_subclass_of with invalid last argument
+echo "\n-- Testing is_subclass_of() function with more than typo style invalid 3rd argument --\n";
+var_dump( is_subclass_of($object, $class_name, $class_name) );
+
+
+//Test is_subclass_of with invalid last argument
+echo "\n-- Testing is_subclass_of() function with more than invalid 3rd argument --\n";
+var_dump( is_subclass_of($object, $class_name, $object) );
// Testing is_subclass_of with one less than the expected number of arguments
echo "\n-- Testing is_subclass_of() function with less than expected no. of arguments --\n";
@@ -30,11 +40,19 @@ echo "Done";
-- Testing is_subclass_of() function with more than expected no. of arguments --
-Warning: is_subclass_of() expects exactly 2 parameters, 3 given in %s on line 16
+Warning: is_subclass_of() expects at most 3 parameters, 4 given in %s on line 17
+NULL
+
+-- Testing is_subclass_of() function with more than typo style invalid 3rd argument --
+bool(false)
+
+-- Testing is_subclass_of() function with more than invalid 3rd argument --
+
+Warning: is_subclass_of() expects parameter 3 to be boolean, object given in %s on line 26
NULL
-- Testing is_subclass_of() function with less than expected no. of arguments --
-Warning: is_subclass_of() expects exactly 2 parameters, 1 given in %s on line 21
+Warning: is_subclass_of() expects at least 2 parameters, 1 given in %s on line 31
NULL
Done
diff --git a/ext/standard/tests/dir/opendir_variation6-win32.phpt b/ext/standard/tests/dir/opendir_variation6-win32.phpt
new file mode 100644
index 000000000..f54a2ad4a
--- /dev/null
+++ b/ext/standard/tests/dir/opendir_variation6-win32.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test opendir() function : usage variations - Different wildcards
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) != 'WIN') {
+ die("skip Valid only on Windows");
+}
+?>
+--FILE--
+<?php
+/* Prototype : mixed opendir(string $path[, resource $context])
+ * Description: Open a directory and return a dir_handle
+ * Source code: ext/standard/dir.c
+ */
+
+/*
+ * Pass paths containing wildcards to test if opendir() recognises them
+ */
+
+echo "*** Testing opendir() : usage variations ***\n";
+// create the temporary directories
+$file_path = dirname(__FILE__);
+$dir_path = $file_path . "/opendir_variation6";
+$sub_dir_path = $dir_path . "/sub_dir1";
+
+mkdir($dir_path);
+mkdir($sub_dir_path);
+
+// with different wildcard characters
+
+echo "\n-- Wildcard = '*' --\n";
+var_dump( opendir($file_path . "/opendir_var*") );
+var_dump( opendir($file_path . "/*") );
+
+echo "\n-- Wildcard = '?' --\n";
+var_dump( opendir($dir_path . "/sub_dir?") );
+var_dump( opendir($dir_path . "/sub?dir1") );
+
+?>
+===DONE===
+--CLEAN--
+<?php
+$dir_path = dirname(__FILE__) . "/opendir_variation6";
+$sub_dir_path = $dir_path . "/sub_dir1";
+
+rmdir($sub_dir_path);
+rmdir($dir_path);
+?>
+--EXPECTF--
+*** Testing opendir() : usage variations ***
+
+-- Wildcard = '*' --
+
+Warning: opendir(%s/opendir_var*,%s/opendir_var*): %s in %s on line %d
+
+Warning: opendir(%s/opendir_var*): failed to open dir: %s in %s on line %d
+bool(false)
+
+Warning: opendir(%s/*,%s/*): %s in %s on line %d
+
+Warning: opendir(%s/*): failed to open dir: %s in %s on line %d
+bool(false)
+
+-- Wildcard = '?' --
+
+Warning: opendir(%s/opendir_variation6/sub_dir?,%s/opendir_variation6/sub_dir?): %s in %s on line %d
+
+Warning: opendir(%s/opendir_variation6/sub_dir?): failed to open dir: %s in %s on line %d
+bool(false)
+
+Warning: opendir(%s/opendir_variation6/sub?dir1,%s/opendir_variation6/sub?dir1): %s in %s on line %d
+
+Warning: opendir(%s/opendir_variation6/sub?dir1): failed to open dir: %s in %s on line %d
+bool(false)
+===DONE===
diff --git a/ext/standard/tests/directory/open_basedir_001.phpt b/ext/standard/tests/directory/open_basedir_001.phpt
deleted file mode 100644
index 092eac27f..000000000
--- a/ext/standard/tests/directory/open_basedir_001.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-openbase_dir runtime tightning
---INI--
-open_basedir=/usr/local
---FILE--
-<?php
-var_dump(ini_set("open_basedir", "/usr/local/bin"));
-var_dump(ini_get("open_basedir"));
-var_dump(ini_set("open_basedir", "/usr"));
-var_dump(ini_get("open_basedir"));
-?>
---EXPECT--
-string(10) "/usr/local"
-string(14) "/usr/local/bin"
-bool(false)
-string(14) "/usr/local/bin"
-
diff --git a/ext/standard/tests/file/bug20424.phpt b/ext/standard/tests/file/bug20424.phpt
index df10d4abd..b8f9dfd8f 100644
--- a/ext/standard/tests/file/bug20424.phpt
+++ b/ext/standard/tests/file/bug20424.phpt
@@ -2,7 +2,7 @@
Bug #20424 (stream_get_meta_data crashes on a normal file stream)
--FILE--
<?php
-$f = fopen(dirname(__FILE__) . "/../../../../run-tests.php", "r");
+$f = fopen(__FILE__, "r");
$dummy = var_export(stream_get_meta_data($f), TRUE);
echo "I'm alive!\n";
?>
diff --git a/ext/standard/tests/file/bug52624.phpt b/ext/standard/tests/file/bug52624.phpt
new file mode 100644
index 000000000..ee61eb90e
--- /dev/null
+++ b/ext/standard/tests/file/bug52624.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #52624 (tempnam() by-pass open_basedir with inexistent directory)
+--INI--
+open_basedir=.
+--FILE--
+<?php
+
+echo tempnam("directory_that_not_exists", "prefix_");
+
+?>
+--EXPECTF--
+Warning: tempnam(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d
diff --git a/ext/standard/tests/file/bug60120.phpt b/ext/standard/tests/file/bug60120.phpt
new file mode 100644
index 000000000..8915bb833
--- /dev/null
+++ b/ext/standard/tests/file/bug60120.phpt
@@ -0,0 +1,74 @@
+--TEST--
+Bug #60120 (proc_open hangs when data in stdin/out/err is getting larger or equal to 2048)
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) != 'WIN') {
+ die('skip only for Windows');
+}
+$php = getenv('TEST_PHP_EXECUTABLE');
+if (!$php) {
+ die("No php executable defined\n");
+}
+?>
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+
+$php = getenv('TEST_PHP_EXECUTABLE');
+if (!$php) {
+ die("No php executable defined\n");
+}
+$cmd = 'php -r "fwrite(STDOUT, $in = file_get_contents(\'php://stdin\')); fwrite(STDERR, $in);"';
+$descriptors = array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w'));
+$stdin = str_repeat('*', 1024 * 16) . '!';
+$stdin = str_repeat('*', 2049 );
+
+$options = array_merge(array('suppress_errors' => true, 'binary_pipes' => true, 'bypass_shell' => false));
+$process = proc_open($cmd, $descriptors, $pipes, getcwd(), array(), $options);
+
+foreach ($pipes as $pipe) {
+ stream_set_blocking($pipe, false);
+}
+$writePipes = array($pipes[0]);
+$stdinLen = strlen($stdin);
+$stdinOffset = 0;
+
+unset($pipes[0]);
+
+while ($pipes || $writePipes) {
+ $r = $pipes;
+ $w = $writePipes;
+ $e = null;
+ $n = stream_select($r, $w, $e, 60);
+
+ if (false === $n) {
+ break;
+ } elseif ($n === 0) {
+ proc_terminate($process);
+
+ }
+ if ($w) {
+ $written = fwrite($writePipes[0], (binary)substr($stdin, $stdinOffset), 8192);
+ if (false !== $written) {
+ $stdinOffset += $written;
+ }
+ if ($stdinOffset >= $stdinLen) {
+ fclose($writePipes[0]);
+ $writePipes = null;
+ }
+ }
+
+ foreach ($r as $pipe) {
+ $type = array_search($pipe, $pipes);
+ $data = fread($pipe, 8192);
+ if (false === $data || feof($pipe)) {
+ fclose($pipe);
+ unset($pipes[$type]);
+ }
+ }
+}
+echo "OK.";
+?>
+--EXPECT--
+OK.
diff --git a/ext/standard/tests/file/file_get_contents_error001.phpt b/ext/standard/tests/file/file_get_contents_error001.phpt
index ced0da032..127901ad7 100644
--- a/ext/standard/tests/file/file_get_contents_error001.phpt
+++ b/ext/standard/tests/file/file_get_contents_error001.phpt
@@ -7,6 +7,7 @@ file_get_contents() test using offset parameter out of range
display_errors=false
--SKIPIF--
<?php
+ if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (!function_exists("file_get_contents"))
die ("skip file_get_contents function is not found");
?>
diff --git a/ext/standard/tests/file/fread_socket_variation1.phpt b/ext/standard/tests/file/fread_socket_variation1.phpt
index 50ee79bbf..a615d2f41 100644
--- a/ext/standard/tests/file/fread_socket_variation1.phpt
+++ b/ext/standard/tests/file/fread_socket_variation1.phpt
@@ -1,15 +1,11 @@
--TEST--
Testing fread() on a TCP server socket
---SKIPIF--
-<?php
-if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-?>
--FILE--
<?php
$tcp_socket = stream_socket_server('tcp://127.0.0.1:31337');
-socket_set_timeout($tcp_socket, 1);
+socket_set_timeout($tcp_socket, 0, 1000);
var_dump(fread($tcp_socket, 1));
diff --git a/ext/standard/tests/file/lstat_stat_basic.phpt b/ext/standard/tests/file/lstat_stat_basic.phpt
index 362fcfe86..0d1476d68 100644
--- a/ext/standard/tests/file/lstat_stat_basic.phpt
+++ b/ext/standard/tests/file/lstat_stat_basic.phpt
@@ -2,6 +2,7 @@
Test lstat() & stat() functions: basic functionality
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. lstat() not available on Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation10.phpt b/ext/standard/tests/file/lstat_stat_variation10.phpt
index a30b3c51f..51ebc25e7 100644
--- a/ext/standard/tests/file/lstat_stat_variation10.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation10.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of is_dir()
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation11.phpt b/ext/standard/tests/file/lstat_stat_variation11.phpt
index df1b8ac12..a75504b47 100644
--- a/ext/standard/tests/file/lstat_stat_variation11.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation11.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effect of is_file()
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation12.phpt b/ext/standard/tests/file/lstat_stat_variation12.phpt
index c1e37b543..8e1edd66c 100644
--- a/ext/standard/tests/file/lstat_stat_variation12.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation12.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of is_link()
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. lstat() not available on Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation13.phpt b/ext/standard/tests/file/lstat_stat_variation13.phpt
index 474ddc516..288e0b5ec 100644
--- a/ext/standard/tests/file/lstat_stat_variation13.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation13.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - file opened using w and r mode
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation15.phpt b/ext/standard/tests/file/lstat_stat_variation15.phpt
index 45912ae58..8b67338ab 100644
--- a/ext/standard/tests/file/lstat_stat_variation15.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation15.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects changing permissions of link
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. lstat() not available on Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation16.phpt b/ext/standard/tests/file/lstat_stat_variation16.phpt
index 641ccd58d..9f1276548 100644
--- a/ext/standard/tests/file/lstat_stat_variation16.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation16.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects changing permissions of file
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation17.phpt b/ext/standard/tests/file/lstat_stat_variation17.phpt
index e50abf3f8..f2306de79 100644
--- a/ext/standard/tests/file/lstat_stat_variation17.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation17.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects changing permissions of dir
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation21.phpt b/ext/standard/tests/file/lstat_stat_variation21.phpt
index 1009c92c5..8620ab00d 100644
--- a/ext/standard/tests/file/lstat_stat_variation21.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation21.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of truncate()
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation4.phpt b/ext/standard/tests/file/lstat_stat_variation4.phpt
index 7407a63bf..259beca00 100755
--- a/ext/standard/tests/file/lstat_stat_variation4.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation4.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of touch() on file
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation5.phpt b/ext/standard/tests/file/lstat_stat_variation5.phpt
index 895e606b9..d0c096ef1 100755
--- a/ext/standard/tests/file/lstat_stat_variation5.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation5.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of touch() on dir
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/lstat_stat_variation6.phpt b/ext/standard/tests/file/lstat_stat_variation6.phpt
index b7913e0b3..7e557d034 100755
--- a/ext/standard/tests/file/lstat_stat_variation6.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation6.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - effects of touch() on link
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (!(stristr(PHP_OS, 'linux'))) {
die('skip.. test valid for linux only');
}
@@ -47,7 +48,7 @@ clearstatcache();
var_dump( touch($link_name) );
-$new_stat = lstat($link_name);
+$new_stat = stat($file_name);
// compare self stats
var_dump( compare_self_stat($old_stat) );
diff --git a/ext/standard/tests/file/lstat_stat_variation8.phpt b/ext/standard/tests/file/lstat_stat_variation8.phpt
index 412c3bf03..b0f170d1f 100644
--- a/ext/standard/tests/file/lstat_stat_variation8.phpt
+++ b/ext/standard/tests/file/lstat_stat_variation8.phpt
@@ -2,6 +2,7 @@
Test lstat() and stat() functions: usage variations - creating file/subdir
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not valid for Windows');
}
diff --git a/ext/standard/tests/file/readlink_realpath_variation3.phpt b/ext/standard/tests/file/readlink_realpath_variation3.phpt
index 70e8d0c94..3766a5b43 100644
--- a/ext/standard/tests/file/readlink_realpath_variation3.phpt
+++ b/ext/standard/tests/file/readlink_realpath_variation3.phpt
@@ -46,32 +46,32 @@ echo "Done\n";
*** Testing readlink() and realpath() with linkname as empty string, NULL and single space ***
-- Iteration1 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
%s
-- Iteration2 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
%s
-- Iteration3 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
string(%d) "%s"
-- Iteration4 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
string(%d) "%s"
-- Iteration5 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
string(%d) "%s"
-- Iteration6 --
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
string(%d) "%s"
Done
diff --git a/ext/standard/tests/file/readlink_variation1.phpt b/ext/standard/tests/file/readlink_variation1.phpt
index 49dc6a540..1dae17cbd 100644
--- a/ext/standard/tests/file/readlink_variation1.phpt
+++ b/ext/standard/tests/file/readlink_variation1.phpt
@@ -50,28 +50,28 @@ unlink($file_path."/readlink_variation2.tmp");
--EXPECTF--
*** Testing Invalid file types ***
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
Warning: readlink() expects parameter 1 to be string, resource given in %s on line %d
NULL
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
-Warning: readlink(): No such file or directory in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
*** Done ***
diff --git a/ext/standard/tests/file/rename_variation13-win32.phpt b/ext/standard/tests/file/rename_variation13-win32.phpt
index 2cd9dbdd9..8e86d27a2 100644
--- a/ext/standard/tests/file/rename_variation13-win32.phpt
+++ b/ext/standard/tests/file/rename_variation13-win32.phpt
@@ -36,6 +36,9 @@ $names_arr = array(
);
+/* disable notice so we don't get the array to string conversion notice for "$name" where $name = array() */
+error_reporting(E_ALL ^ E_NOTICE);
+
echo "*** Testing rename() with obscure files ***\n";
$file_path = dirname(__FILE__)."/renameVar13";
$aFile = $file_path.'/afile.tmp';
diff --git a/ext/standard/tests/file/rename_variation6-win32.phpt b/ext/standard/tests/file/rename_variation6-win32.phpt
index 14d59d0ad..9aab0a7a8 100644
--- a/ext/standard/tests/file/rename_variation6-win32.phpt
+++ b/ext/standard/tests/file/rename_variation6-win32.phpt
@@ -33,7 +33,7 @@ var_dump(file_exists($tmp_file));
echo "Done\n";
?>
--EXPECTF--
-Warning: readlink(): Could not open file (error 2) in %s on line %d
+Warning: readlink(): %s in %s on line %d
bool(false)
string(%d) "%srename_variation6-win32.php.tmp"
bool(true)
diff --git a/ext/standard/tests/file/touch_basic.phpt b/ext/standard/tests/file/touch_basic.phpt
index fb042df67..c41fdf1d7 100644
--- a/ext/standard/tests/file/touch_basic.phpt
+++ b/ext/standard/tests/file/touch_basic.phpt
@@ -4,6 +4,7 @@ Test touch() function : basic functionality
Dave Kelsey <d_kelsey@uk.ibm.com>
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. only for Non Windows');
}
diff --git a/ext/standard/tests/general_functions/bug39322.phpt b/ext/standard/tests/general_functions/bug39322.phpt
index 6ba740dc8..a9f83c75b 100644
--- a/ext/standard/tests/general_functions/bug39322.phpt
+++ b/ext/standard/tests/general_functions/bug39322.phpt
@@ -2,6 +2,7 @@
Bug #39322 (proc_terminate() loosing process resource)
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (!is_executable('/bin/sleep')) echo 'skip sleep not found';
?>
--FILE--
@@ -15,7 +16,7 @@ $pipes = array();
$process = proc_open('/bin/sleep 120', $descriptors, $pipes);
-proc_terminate($process);
+proc_terminate($process, 9);
sleep(1); // wait a bit to let the process finish
var_dump(proc_get_status($process));
@@ -37,7 +38,7 @@ array(8) {
["exitcode"]=>
int(-1)
["termsig"]=>
- int(15)
+ int(9)
["stopsig"]=>
int(0)
}
diff --git a/ext/standard/tests/general_functions/call_user_method_002.phpt b/ext/standard/tests/general_functions/call_user_method_002.phpt
new file mode 100644
index 000000000..054bc3ede
--- /dev/null
+++ b/ext/standard/tests/general_functions/call_user_method_002.phpt
@@ -0,0 +1,12 @@
+--TEST--
+call_user_method() Invalid free
+--FILE--
+<?php
+
+call_user_method("1", $arr1);
+
+?>
+--EXPECTF--
+Deprecated: Function call_user_method() is deprecated in %s on line %d
+
+Warning: call_user_method(): Second argument is not an object or class name in %s on line %d
diff --git a/ext/standard/tests/general_functions/parse_ini_file-win32.phpt b/ext/standard/tests/general_functions/parse_ini_file-win32.phpt
deleted file mode 100644
index 7a1d63010..000000000
--- a/ext/standard/tests/general_functions/parse_ini_file-win32.phpt
+++ /dev/null
@@ -1,196 +0,0 @@
---TEST--
-parse_ini_file() multiple calls
---SKIPIF--
-<?php if( substr(PHP_OS, 0, 3) != 'WIN' ) die("skip non Windows systems have different error message");?>
---FILE--
-<?php
-
-$filename = dirname(__FILE__)."/parse_ini_file.dat";
-@unlink($filename); /* Make sure the file really does not exist! */
-
-var_dump(parse_ini_file());
-var_dump(parse_ini_file(1,1,1,1));
-var_dump(parse_ini_file($filename));
-var_dump(parse_ini_file($filename, true));
-
-$ini = "
-test =
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename));
-$ini = "
-test==
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename));
-
-$ini = "
-test=test=
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename));
-
-$ini = "
-test= \"new
-line\"
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename));
-
-define("TEST_CONST", "test const value");
-$ini = "
-test=TEST_CONST
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename));
-
-$ini = "
-[section]
-test=hello
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-$ini = "
-[section]
-test=hello
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, false));
-
-$ini = "
-section.test=hello
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-$ini = "
-[section]
-section.test=hello
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-$ini = "
-[section]
-1=2
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-$ini = "
-1=2
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-$ini = "
-test=test2
-test=test3
-test=test4
-";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-/* From bug #44574 */
-$ini = "[section1]\nname = value";
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-/* #44842, labels starting with underscore */
-$ini = <<<'INI'
-foo=bar1
-_foo=bar2
-foo_=bar3
-INI;
-file_put_contents($filename, $ini);
-var_dump(parse_ini_file($filename, true));
-
-@unlink($filename);
-echo "Done\n";
-?>
---EXPECTF--
-Warning: parse_ini_file() expects at least 1 parameter, 0 given in %s on line 6
-bool(false)
-
-Warning: parse_ini_file() expects at most 3 parameters, 4 given in %s on line 7
-bool(false)
-
-Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s.php on line 8
-bool(false)
-
-Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s.php on line 9
-bool(false)
-array(1) {
- ["test"]=>
- string(0) ""
-}
-
-Warning: parse error in %s on line %d
- in %s on line 20
-bool(false)
-
-Warning: parse error in %s on line %d
- in %s on line 26
-bool(false)
-array(1) {
- ["test"]=>
- string(8) "new
-line"
-}
-array(1) {
- ["test"]=>
- string(16) "test const value"
-}
-array(1) {
- ["section"]=>
- array(1) {
- ["test"]=>
- string(5) "hello"
- }
-}
-array(1) {
- ["test"]=>
- string(5) "hello"
-}
-array(1) {
- ["section.test"]=>
- string(5) "hello"
-}
-array(1) {
- ["section"]=>
- array(1) {
- ["section.test"]=>
- string(5) "hello"
- }
-}
-array(1) {
- ["section"]=>
- array(1) {
- [1]=>
- string(1) "2"
- }
-}
-array(1) {
- [1]=>
- string(1) "2"
-}
-array(1) {
- ["test"]=>
- string(5) "test4"
-}
-array(1) {
- ["section1"]=>
- array(1) {
- ["name"]=>
- string(5) "value"
- }
-}
-array(3) {
- ["foo"]=>
- string(4) "bar1"
- ["_foo"]=>
- string(4) "bar2"
- ["foo_"]=>
- string(4) "bar3"
-}
-Done
diff --git a/ext/standard/tests/general_functions/parse_ini_file.phpt b/ext/standard/tests/general_functions/parse_ini_file.phpt
index 8523c83cf..240b0f3b1 100644
--- a/ext/standard/tests/general_functions/parse_ini_file.phpt
+++ b/ext/standard/tests/general_functions/parse_ini_file.phpt
@@ -137,11 +137,11 @@ array(1) {
string(0) ""
}
-Warning: syntax error, unexpected '=' in %sparse_ini_file.dat on line 2
+Warning: syntax error, unexpected '='%sparse_ini_file.dat on line 2
in %sparse_ini_file.php on line 20
bool(false)
-Warning: syntax error, unexpected '=' in %sparse_ini_file.dat on line 2
+Warning: syntax error, unexpected '='%sparse_ini_file.dat on line 2
in %sparse_ini_file.php on line 26
bool(false)
array(1) {
diff --git a/ext/standard/tests/general_functions/parse_ini_string_002.phpt b/ext/standard/tests/general_functions/parse_ini_string_002.phpt
index 0da959ab8..733409c84 100644
--- a/ext/standard/tests/general_functions/parse_ini_string_002.phpt
+++ b/ext/standard/tests/general_functions/parse_ini_string_002.phpt
@@ -97,11 +97,11 @@ array(1) {
%unicode|string%(0) ""
}
-Warning: syntax error, unexpected '=' in Unknown on line 2
+Warning: syntax error, unexpected '='%sin Unknown on line 2
in %s
bool(false)
-Warning: syntax error, unexpected '=' in Unknown on line 2
+Warning: syntax error, unexpected '='%sin Unknown on line 2
in %s
bool(false)
array(1) {
diff --git a/ext/standard/tests/general_functions/proc_open02.phpt b/ext/standard/tests/general_functions/proc_open02.phpt
index 3406f6806..d5d878ed2 100644
--- a/ext/standard/tests/general_functions/proc_open02.phpt
+++ b/ext/standard/tests/general_functions/proc_open02.phpt
@@ -3,7 +3,6 @@ proc_open
--SKIPIF--
<?php
if (!is_executable('/bin/sleep')) echo 'skip no sleep';
-if (!is_executable('/usr/bin/nohup')) echo 'skip no nohup';
if (getenv('SKIP_SLOW_TESTS')) echo 'skip slow test';
?>
--FILE--
@@ -11,19 +10,19 @@ if (getenv('SKIP_SLOW_TESTS')) echo 'skip slow test';
$ds = array(array('pipe', 'r'));
$cat = proc_open(
- '/usr/bin/nohup /bin/sleep 50',
+ '/bin/sleep 2',
$ds,
$pipes
);
-sleep(1); // let the OS run the nohup process before sending the signal
+usleep(20000); // let the OS run the sleep process before sending the signal
-var_dump(proc_terminate($cat, 1)); // send a SIGHUP
-sleep(1);
+var_dump(proc_terminate($cat, 0)); // status check
+usleep(20000);
var_dump(proc_get_status($cat));
var_dump(proc_terminate($cat)); // now really quit it
-sleep(1);
+usleep(20000);
var_dump(proc_get_status($cat));
proc_close($cat);
@@ -35,7 +34,7 @@ echo "Done!\n";
bool(true)
array(8) {
["command"]=>
- string(28) "/usr/bin/nohup /bin/sleep 50"
+ string(12) "/bin/sleep 2"
["pid"]=>
int(%d)
["running"]=>
@@ -54,7 +53,7 @@ array(8) {
bool(true)
array(8) {
["command"]=>
- string(28) "/usr/bin/nohup /bin/sleep 50"
+ string(12) "/bin/sleep 2"
["pid"]=>
int(%d)
["running"]=>
diff --git a/ext/standard/tests/general_functions/sleep_basic.phpt b/ext/standard/tests/general_functions/sleep_basic.phpt
index cfc00c6ea..5d7fe536f 100644
--- a/ext/standard/tests/general_functions/sleep_basic.phpt
+++ b/ext/standard/tests/general_functions/sleep_basic.phpt
@@ -1,5 +1,9 @@
--TEST--
Test sleep() function : basic functionality
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
--FILE--
<?php
/* Prototype : int sleep ( int $seconds )
diff --git a/ext/standard/tests/general_functions/usleep_basic.phpt b/ext/standard/tests/general_functions/usleep_basic.phpt
index 22c3e658b..d6f312e15 100644
--- a/ext/standard/tests/general_functions/usleep_basic.phpt
+++ b/ext/standard/tests/general_functions/usleep_basic.phpt
@@ -1,5 +1,9 @@
--TEST--
Test usleep() function
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
--FILE--
<?php
/* Prototype : void usleep ( int $micro_seconds )
diff --git a/ext/standard/tests/http/bug38802.phpt b/ext/standard/tests/http/bug38802.phpt
index 91fd1cce9..73b41183a 100644
--- a/ext/standard/tests/http/bug38802.phpt
+++ b/ext/standard/tests/http/bug38802.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #38802 (ignore_errors and max_redirects)
+--INI--
+allow_url_fopen=1
--SKIPIF--
<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
--FILE--
diff --git a/ext/standard/tests/http/bug43510.phpt b/ext/standard/tests/http/bug43510.phpt
index 7358ee12c..d97361237 100644
--- a/ext/standard/tests/http/bug43510.phpt
+++ b/ext/standard/tests/http/bug43510.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #43510 (stream_get_meta_data() does not return same mode as used in fopen)
+--INI--
+allow_url_fopen=1
--SKIPIF--
<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
--FILE--
diff --git a/ext/standard/tests/http/bug48929.phpt b/ext/standard/tests/http/bug48929.phpt
index 035ebb12b..2d1e45917 100644
--- a/ext/standard/tests/http/bug48929.phpt
+++ b/ext/standard/tests/http/bug48929.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #48929 (duplicate \r\n sent after last header line)
+--INI--
+allow_url_fopen=1
--SKIPIF--
<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
--FILE--
diff --git a/ext/standard/tests/http/bug53198.phpt b/ext/standard/tests/http/bug53198.phpt
index fe26bc952..3c640fa9c 100644
--- a/ext/standard/tests/http/bug53198.phpt
+++ b/ext/standard/tests/http/bug53198.phpt
@@ -1,56 +1,57 @@
---TEST--
-Bug #53198 (From: header cannot be changed with ini_set)
---SKIPIF--
-<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
---INI--
-from=teste@teste.pt
---FILE--
-<?php
-require 'server.inc';
-
-function do_test() {
-
- $responses = array(
- "data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
- );
-
- $pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
-
- foreach($responses as $r) {
-
- $fd = fopen('http://127.0.0.1:12342/', 'rb', false);
-
- fseek($output, 0, SEEK_SET);
- var_dump(stream_get_contents($output));
- fseek($output, 0, SEEK_SET);
- }
-
- http_server_kill($pid);
-
-}
-
-echo "-- Test: leave default --\n";
-
-do_test();
-
-echo "-- Test: after ini_set --\n";
-
-ini_set('from', 'junk@junk.com');
-
-do_test();
-
-?>
---EXPECT--
--- Test: leave default --
-string(63) "GET / HTTP/1.0
-From: teste@teste.pt
-Host: 127.0.0.1:12342
-
-"
--- Test: after ini_set --
-string(62) "GET / HTTP/1.0
-From: junk@junk.com
-Host: 127.0.0.1:12342
-
-"
-
+--TEST--
+Bug #53198 (From: header cannot be changed with ini_set)
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--INI--
+allow_url_fopen=1
+from=teste@teste.pt
+--FILE--
+<?php
+require 'server.inc';
+
+function do_test() {
+
+ $responses = array(
+ "data://text/plain,HTTP/1.0 200 OK\r\n\r\n",
+ );
+
+ $pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+ foreach($responses as $r) {
+
+ $fd = fopen('http://127.0.0.1:12342/', 'rb', false);
+
+ fseek($output, 0, SEEK_SET);
+ var_dump(stream_get_contents($output));
+ fseek($output, 0, SEEK_SET);
+ }
+
+ http_server_kill($pid);
+
+}
+
+echo "-- Test: leave default --\n";
+
+do_test();
+
+echo "-- Test: after ini_set --\n";
+
+ini_set('from', 'junk@junk.com');
+
+do_test();
+
+?>
+--EXPECT--
+-- Test: leave default --
+string(63) "GET / HTTP/1.0
+From: teste@teste.pt
+Host: 127.0.0.1:12342
+
+"
+-- Test: after ini_set --
+string(62) "GET / HTTP/1.0
+From: junk@junk.com
+Host: 127.0.0.1:12342
+
+"
+
diff --git a/ext/standard/tests/http/bug60570.phpt b/ext/standard/tests/http/bug60570.phpt
new file mode 100644
index 000000000..d1784b055
--- /dev/null
+++ b/ext/standard/tests/http/bug60570.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Bug #60570 (Stream context leaks when http request fails)
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
+--INI--
+allow_url_fopen=1
+allow_url_include=1
+--FILE--
+<?php
+require 'server.inc';
+
+function do_test() {
+
+ $responses = array(
+ "data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n",
+ "data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n",
+ "data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n"
+ );
+
+ $pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
+
+ $a = $b = null;
+
+ $i = 3;
+ while ($i--) {
+ $context = stream_context_create(array('http'=>array('timeout'=>1)));
+ file_get_contents('http://127.0.0.1:12342/', 0, $context);
+ unset($context);
+
+ $b = $a;
+ $a = memory_get_usage();
+ }
+
+ http_server_kill($pid);
+
+ echo "leak? penultimate iteration: $b, last one: $a\n";
+ var_dump($a == $b);
+}
+
+do_test();
+
+--EXPECTF--
+Warning: file_get_contents(http://127.0.0.1:12342/): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
+ in %s on line %d
+
+Warning: file_get_contents(http://127.0.0.1:12342/): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
+ in %s on line %d
+
+Warning: file_get_contents(http://127.0.0.1:12342/): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
+ in %s on line %d
+leak? penultimate iteration: %d, last one: %d
+bool(true)
+
diff --git a/ext/standard/tests/http/ignore_errors.phpt b/ext/standard/tests/http/ignore_errors.phpt
index c7e1acbfe..ab5421890 100644
--- a/ext/standard/tests/http/ignore_errors.phpt
+++ b/ext/standard/tests/http/ignore_errors.phpt
@@ -1,5 +1,7 @@
--TEST--
http:// and ignore_errors
+--INI--
+allow_url_fopen=1
--SKIPIF--
<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
--FILE--
diff --git a/ext/gd/tests/image_type_to_mime_type_basic.phpt b/ext/standard/tests/image/image_type_to_mime_type_basic.phpt
index b81bdbde5..b81bdbde5 100644
--- a/ext/gd/tests/image_type_to_mime_type_basic.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_basic.phpt
diff --git a/ext/gd/tests/image_type_to_mime_type_error.phpt b/ext/standard/tests/image/image_type_to_mime_type_error.phpt
index 88aacbf17..88aacbf17 100644
--- a/ext/gd/tests/image_type_to_mime_type_error.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_error.phpt
diff --git a/ext/gd/tests/image_type_to_mime_type_variation1.phpt b/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt
index 0023b7125..0023b7125 100644
--- a/ext/gd/tests/image_type_to_mime_type_variation1.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt
diff --git a/ext/gd/tests/image_type_to_mime_type_variation2.phpt b/ext/standard/tests/image/image_type_to_mime_type_variation2.phpt
index 141bc576f..141bc576f 100644
--- a/ext/gd/tests/image_type_to_mime_type_variation2.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_variation2.phpt
diff --git a/ext/gd/tests/image_type_to_mime_type_variation4.phpt b/ext/standard/tests/image/image_type_to_mime_type_variation4.phpt
index a67bb86a6..a67bb86a6 100644
--- a/ext/gd/tests/image_type_to_mime_type_variation4.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_variation4.phpt
diff --git a/ext/standard/tests/misc/time_sleep_until_basic.phpt b/ext/standard/tests/misc/time_sleep_until_basic.phpt
index 956985a62..9ae912881 100644
--- a/ext/standard/tests/misc/time_sleep_until_basic.phpt
+++ b/ext/standard/tests/misc/time_sleep_until_basic.phpt
@@ -1,16 +1,20 @@
--TEST--
time_sleep_until() function - basic test for time_sleep_until()
--SKIPIF--
-<?php if (!function_exists("time_sleep_until")) die('skip time_sleep_until() not available');?>
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+if (!function_exists("time_sleep_until")) die('skip time_sleep_until() not available');
+?>
--CREDITS--
Manuel Baldassarri mb@ideato.it
Michele Orselli mo@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
--FILE--
<?php
- $time = time() + 2;
- time_sleep_until( $time );
- var_dump( time() >= $time );
+ $time = microtime(true) + 2;
+ var_dump(time_sleep_until( (int)$time ));
+ var_dump(microtime(true) >= (int)$time);
?>
--EXPECT--
bool(true)
+bool(true)
diff --git a/ext/standard/tests/network/bug41347.phpt b/ext/standard/tests/network/bug41347.phpt
index 21fc002fa..6ece09819 100644
--- a/ext/standard/tests/network/bug41347.phpt
+++ b/ext/standard/tests/network/bug41347.phpt
@@ -1,11 +1,5 @@
--TEST--
dns_check_record() segfault with empty host
---SKIPIF--
-<?php
-if (substr(PHP_OS, 0, 3) == 'WIN') {
- die('skip No windows support');
-}
-?>
--FILE--
<?php
var_dump(dns_check_record(''));
diff --git a/ext/standard/tests/network/gethostbyaddr_basic1.phpt b/ext/standard/tests/network/gethostbyaddr_basic1.phpt
index 2232d3626..a20b4756c 100644
--- a/ext/standard/tests/network/gethostbyaddr_basic1.phpt
+++ b/ext/standard/tests/network/gethostbyaddr_basic1.phpt
@@ -14,5 +14,5 @@ echo gethostbyaddr("127.0.0.1")."\n";
===DONE===
--EXPECTF--
*** Testing gethostbyaddr() : basic functionality ***
-%rloopback|localhost(\.localdomain)?%r
-===DONE=== \ No newline at end of file
+%rloopback|localhost(\.localdomain)?|%s%r
+===DONE===
diff --git a/ext/standard/tests/network/gethostbyname_basic001.phpt b/ext/standard/tests/network/gethostbyname_basic001.phpt
index 0cfc1b4f5..e917b5992 100644
--- a/ext/standard/tests/network/gethostbyname_basic001.phpt
+++ b/ext/standard/tests/network/gethostbyname_basic001.phpt
@@ -2,6 +2,10 @@
gethostbyname() function - basic type return test
--CREDITS--
"Sylvain R." <sracine@phpquebec.org>
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
--FILE--
<?php
var_dump(is_string(gethostbyname("www.php.net")));
diff --git a/ext/standard/tests/network/gethostbyname_basic002.phpt b/ext/standard/tests/network/gethostbyname_basic002.phpt
index b4e191bfc..983faa929 100644
--- a/ext/standard/tests/network/gethostbyname_basic002.phpt
+++ b/ext/standard/tests/network/gethostbyname_basic002.phpt
@@ -2,6 +2,10 @@
gethostbyname() function - basic invalid parameter test
--CREDITS--
"Sylvain R." <sracine@phpquebec.org>
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
--FILE--
<?php
$ip = gethostbyname("www.php.net");
diff --git a/ext/standard/tests/network/gethostbyname_error004.phpt b/ext/standard/tests/network/gethostbyname_error004.phpt
index 1d0f7d7a1..7aac17292 100644
--- a/ext/standard/tests/network/gethostbyname_error004.phpt
+++ b/ext/standard/tests/network/gethostbyname_error004.phpt
@@ -2,6 +2,10 @@
gethostbyname() function - basic return valid ip address test
--CREDITS--
"Sylvain R." <sracine@phpquebec.org>
+--SKIPIF--
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
--FILE--
<?php
$ip = gethostbyname("www.php.net");
diff --git a/ext/standard/tests/network/getmxrr.phpt b/ext/standard/tests/network/getmxrr.phpt
index b6753f0d6..29cea1d71 100644
--- a/ext/standard/tests/network/getmxrr.phpt
+++ b/ext/standard/tests/network/getmxrr.phpt
@@ -2,13 +2,14 @@
getmxrr() test
--SKIPIF--
<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip: no Windows support');
}
?>
--FILE--
<?php
-$domains = array( 'php.net', 'lists.php.net' );
+$domains = array( 'mx1.tests.php.net', 'mx2.tests.php.net' );
foreach ( $domains as $domain )
{
if ( getmxrr( $domain, $hosts, $weights ) )
@@ -18,5 +19,5 @@ foreach ( $domains as $domain )
}
?>
--EXPECT--
-Hosts: 2, weights: 2
Hosts: 1, weights: 1
+Hosts: 2, weights: 2
diff --git a/ext/standard/tests/network/http-stream.phpt b/ext/standard/tests/network/http-stream.phpt
index e70caf982..6ee035a24 100644
--- a/ext/standard/tests/network/http-stream.phpt
+++ b/ext/standard/tests/network/http-stream.phpt
@@ -1,7 +1,10 @@
--TEST--
http-stream test
--SKIPIF--
-<?php if (!extension_loaded("dom")) die("skip dom extension is not present"); ?>
+<?php
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+if (!extension_loaded("dom")) die("skip dom extension is not present");
+?>
--INI--
allow_url_fopen=1
--FILE--
diff --git a/ext/standard/tests/network/ip2long_variation1.phpt b/ext/standard/tests/network/ip2long_variation1.phpt
index ac3c9c81e..ca67aa41a 100644
--- a/ext/standard/tests/network/ip2long_variation1.phpt
+++ b/ext/standard/tests/network/ip2long_variation1.phpt
@@ -1,5 +1,10 @@
--TEST--
Test ip2long() function : usage variation
+--SKIPIF--
+<?php
+if(substr(PHP_OS, 0, 3) == "WIN")
+ die("skip. Windows is more compliant (like 0 for localhost, etc.)");
+?>
--FILE--
<?php
/* Prototype : int ip2long(string ip_address)
diff --git a/ext/standard/tests/php_ini_loaded_file.phpt b/ext/standard/tests/php_ini_loaded_file.phpt
index 7958eb127..747e0196f 100644
--- a/ext/standard/tests/php_ini_loaded_file.phpt
+++ b/ext/standard/tests/php_ini_loaded_file.phpt
@@ -11,4 +11,4 @@ precision=12
var_dump(php_ini_loaded_file());
?>
--EXPECTF--
-string(%d) "%s/tmp-php.ini"
+string(%d) "%sphp.ini"
diff --git a/ext/standard/tests/serialize/bug55798.phpt b/ext/standard/tests/serialize/bug55798.phpt
new file mode 100644
index 000000000..df8443b1f
--- /dev/null
+++ b/ext/standard/tests/serialize/bug55798.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Bug #55798 (serialize followed by unserialize with numeric object prop. gives integer prop)
+--FILE--
+<?php
+
+$a = new stdClass();
+$a->{0} = 'X';
+$a->{1} = 'Y';
+var_dump(serialize($a));
+var_dump($a->{0});
+$b = unserialize(serialize($a));
+var_dump(serialize($b));
+var_dump($b->{0});
+--EXPECT--
+string(51) "O:8:"stdClass":2:{s:1:"0";s:1:"X";s:1:"1";s:1:"Y";}"
+string(1) "X"
+string(51) "O:8:"stdClass":2:{s:1:"0";s:1:"X";s:1:"1";s:1:"Y";}"
+string(1) "X"
diff --git a/ext/standard/tests/serialize/serialization_miscTypes_001.phpt b/ext/standard/tests/serialize/serialization_miscTypes_001.phpt
index 038068249..8b974d475 100644
--- a/ext/standard/tests/serialize/serialization_miscTypes_001.phpt
+++ b/ext/standard/tests/serialize/serialization_miscTypes_001.phpt
Binary files differ
diff --git a/ext/standard/tests/streams/bug46024.phpt b/ext/standard/tests/streams/bug46024.phpt
index 3f2a5f836..fdfd03ee2 100644
--- a/ext/standard/tests/streams/bug46024.phpt
+++ b/ext/standard/tests/streams/bug46024.phpt
@@ -4,7 +4,7 @@ Bug #46024 stream_select() doesn't return the correct number
<?php if (!getenv('TEST_PHP_EXECUTABLE')) die("skip TEST_PHP_EXECUTABLE not defined"); ?>
--FILE--
<?php
-$php = getenv('TEST_PHP_EXECUTABLE');
+$php = realpath(getenv('TEST_PHP_EXECUTABLE'));
$pipes = array();
$proc = proc_open(
"$php -n -i"
diff --git a/ext/standard/tests/streams/bug54946.phpt b/ext/standard/tests/streams/bug54946.phpt
index b3fa73df5..b51d593a9 100644
--- a/ext/standard/tests/streams/bug54946.phpt
+++ b/ext/standard/tests/streams/bug54946.phpt
@@ -2,33 +2,32 @@
Bug#54946 stream_get_contents infinite loop
--FILE--
<?php
-$filename = tempnam(sys_get_temp_dir(), "phpbug");
-
+$filename = tempnam(__DIR__, "phpbug");
$stream = fopen($filename, "w"); // w or a
$retval = stream_get_contents($stream, 1, 1);
-
+fclose($stream);
var_dump($retval);
unlink($filename);
-$filename = tempnam(sys_get_temp_dir(), "phpbug2");
+$filename = tempnam(__DIR__, "phpbug2");
$stream = fopen($filename, "a");
$retval = stream_get_contents($stream, 1, 1);
-
var_dump($retval);
+fclose($stream);
unlink($filename);
-$filename = tempnam(sys_get_temp_dir(), "phpbug3");
+$filename = tempnam(__DIR__, "phpbug3");
$stream = fopen($filename, "a");
fseek($stream, 1);
$retval = stream_get_contents($stream, 1);
-
var_dump($retval);
+fclose($stream);
unlink($filename);
?>
===DONE===
diff --git a/ext/standard/tests/streams/bug60455_01.phpt b/ext/standard/tests/streams/bug60455_01.phpt
new file mode 100644
index 000000000..466998201
--- /dev/null
+++ b/ext/standard/tests/streams/bug60455_01.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #60455: stream_get_line and 1-line noeol input
+--FILE--
+<?php
+
+//It's critical the read on the stream returns the input but doesn't set EOF
+//flag the first time. This is why we need to use sockets.
+
+$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? STREAM_PF_INET : STREAM_PF_UNIX);
+$sockets = stream_socket_pair($domain, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP)
+ or die("stream_socket_pair");
+fwrite($sockets[0], "a");
+stream_socket_shutdown($sockets[0], STREAM_SHUT_RDWR);
+
+$f = $sockets[1];
+while (!feof($f)) {
+ $line = stream_get_line($f, 99, "\n");
+ var_dump($line);
+}
+--EXPECT--
+string(1) "a"
diff --git a/ext/standard/tests/streams/bug60455_02.phpt b/ext/standard/tests/streams/bug60455_02.phpt
new file mode 100644
index 000000000..6e06e9fa3
--- /dev/null
+++ b/ext/standard/tests/streams/bug60455_02.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Bug #60455: stream_get_line and 1-line followed by eol input
+--FILE--
+<?php
+class TestStream {
+ private $s = 0;
+ function stream_open($path, $mode, $options, &$opened_path) {
+ return true;
+ }
+ function stream_read($count) {
+ if ($this->s++ == 0)
+ return "a\n";
+
+ return "";
+ }
+ function stream_eof() {
+ return $this->s >= 2;
+ }
+
+}
+
+stream_wrapper_register("test", "TestStream");
+
+$f = fopen("test://", "r");
+while (!feof($f)) {
+ $line = stream_get_line($f, 99, "\n");
+ var_dump($line);
+}
+--EXPECT--
+string(1) "a"
diff --git a/ext/standard/tests/streams/bug60455_03.phpt b/ext/standard/tests/streams/bug60455_03.phpt
new file mode 100644
index 000000000..5d7ba1f24
--- /dev/null
+++ b/ext/standard/tests/streams/bug60455_03.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Bug #60455: stream_get_line and 2 lines, one possibly empty
+--FILE--
+<?php
+class TestStream {
+ private $lines = array();
+ private $s = 0;
+ private $eofth = 3;
+ function stream_open($path, $mode, $options, &$opened_path) {
+ $this->lines[] = "a\n";
+ $this->lines[] = ($path == "test://nonempty2nd" ? "b\n" : "\n");
+ if ($path == "test://eofafter2nd")
+ $this->eofth = 2;
+ return true;
+ }
+ function stream_read($count) {
+ if (key_exists($this->s++, $this->lines))
+ return $this->lines[$this->s - 1];
+
+ return "";
+ }
+ function stream_eof() {
+ return $this->s >= $this->eofth;
+ }
+
+}
+
+stream_wrapper_register("test", "TestStream");
+
+$f = fopen("test://nonempty2nd", "r");
+while (!feof($f)) {
+ $line = stream_get_line($f, 99, "\n");
+ var_dump($line);
+}
+$f = fopen("test://", "r");
+while (!feof($f)) {
+ $line = stream_get_line($f, 99, "\n");
+ var_dump($line);
+}
+$f = fopen("test://eofafter2nd", "r");
+while (!feof($f)) {
+ $line = stream_get_line($f, 99, "\n");
+ var_dump($line);
+}
+
+
+--EXPECT--
+string(1) "a"
+string(1) "b"
+string(1) "a"
+string(0) ""
+string(1) "a"
+string(0) ""
diff --git a/ext/standard/tests/streams/stream_context_set_option_basic.phpt b/ext/standard/tests/streams/stream_context_set_option_basic.phpt
new file mode 100644
index 000000000..63730ee99
--- /dev/null
+++ b/ext/standard/tests/streams/stream_context_set_option_basic.phpt
@@ -0,0 +1,37 @@
+--TEST--
+stream_context_set_option() function - basic test for stream_context_set_option()
+--CREDITS--
+Jean-Marc Fontaine <jean-marc.fontaine@alterway.fr>
+# Alter Way Contribution Day 2011
+--FILE--
+<?php
+$context = stream_context_create();
+
+// Single option
+var_dump(stream_context_set_option($context, 'http', 'method', 'POST'));
+
+// Array of options
+$options = array(
+ 'http' => array(
+ 'protocol_version' => 1.1,
+ 'user_agent' => 'PHPT Agent',
+ ),
+);
+var_dump(stream_context_set_option($context, $options));
+
+var_dump(stream_context_get_options($context));
+?>
+--EXPECT--
+bool(true)
+bool(true)
+array(1) {
+ ["http"]=>
+ array(3) {
+ ["method"]=>
+ string(4) "POST"
+ ["protocol_version"]=>
+ float(1.1)
+ ["user_agent"]=>
+ string(10) "PHPT Agent"
+ }
+}
diff --git a/ext/standard/tests/streams/stream_context_set_option_error_001.phpt b/ext/standard/tests/streams/stream_context_set_option_error_001.phpt
new file mode 100644
index 000000000..04b37ca11
--- /dev/null
+++ b/ext/standard/tests/streams/stream_context_set_option_error_001.phpt
@@ -0,0 +1,21 @@
+--TEST--
+stream_context_set_option() function - error : invalid argument
+--CREDITS--
+Jean-Marc Fontaine <jean-marc.fontaine@alterway.fr>
+# Alter Way Contribution Day 2011
+--FILE--
+<?php
+$context = stream_context_create();
+
+// Single option
+var_dump(stream_context_set_option($context, 'http'));
+
+// Array of options
+var_dump(stream_context_set_option($context, array(), 'foo', 'bar'));
+?>
+--EXPECTF--
+Warning: stream_context_set_option(): called with wrong number or type of parameters; please RTM in %s on line %d
+bool(false)
+
+Warning: stream_context_set_option(): called with wrong number or type of parameters; please RTM in %s on line %d
+bool(false)
diff --git a/ext/standard/tests/streams/stream_context_set_option_error_002.phpt b/ext/standard/tests/streams/stream_context_set_option_error_002.phpt
new file mode 100644
index 000000000..e80fd39ed
--- /dev/null
+++ b/ext/standard/tests/streams/stream_context_set_option_error_002.phpt
@@ -0,0 +1,18 @@
+--TEST--
+stream_context_set_option() function - error : missing argument
+--CREDITS--
+Jean-Marc Fontaine <jean-marc.fontaine@alterway.fr>
+# Alter Way Contribution Day 2011
+--FILE--
+<?php
+var_dump(stream_context_set_option());
+
+$context = stream_context_create();
+var_dump(stream_context_set_option($context));
+?>
+--EXPECTF--
+Warning: stream_context_set_option(): called with wrong number or type of parameters; please RTM in %s on line %d
+bool(false)
+
+Warning: stream_context_set_option(): called with wrong number or type of parameters; please RTM in %s on line %d
+bool(false)
diff --git a/ext/standard/tests/strings/bug55674.phpt b/ext/standard/tests/strings/bug55674.phpt
new file mode 100644
index 000000000..72ece642a
--- /dev/null
+++ b/ext/standard/tests/strings/bug55674.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Bug #55674 (fgetcsv & str_getcsv skip empty fields in some tab-separated records)
+--FILE--
+<?php
+var_dump(str_getcsv("0\t\t\"2\"\n", "\t"));
+var_dump(str_getcsv("0\t \t'2'\n", "\t", "'"));
+var_dump(str_getcsv(",,,,"));
+var_dump(str_getcsv(" \t \t\t\t ", "\t"));
+?>
+--EXPECT--
+array(3) {
+ [0]=>
+ string(1) "0"
+ [1]=>
+ string(0) ""
+ [2]=>
+ string(1) "2"
+}
+array(3) {
+ [0]=>
+ string(1) "0"
+ [1]=>
+ string(1) " "
+ [2]=>
+ string(1) "2"
+}
+array(5) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ string(0) ""
+ [2]=>
+ string(0) ""
+ [3]=>
+ string(0) ""
+ [4]=>
+ string(0) ""
+}
+array(5) {
+ [0]=>
+ string(1) " "
+ [1]=>
+ string(2) " "
+ [2]=>
+ string(0) ""
+ [3]=>
+ string(0) ""
+ [4]=>
+ string(1) " "
+}
diff --git a/ext/standard/tests/strings/htmlentities_html4.phpt b/ext/standard/tests/strings/htmlentities_html4.phpt
index d7bff707f..22b0305ce 100644
--- a/ext/standard/tests/strings/htmlentities_html4.phpt
+++ b/ext/standard/tests/strings/htmlentities_html4.phpt
@@ -1,9 +1,5 @@
--TEST--
htmlentities() conformance check (HTML 4)
---SKIPIF--
-<?php
-if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-?>
--FILE--
<?php
function utf32_utf8($k) {
@@ -43,15 +39,23 @@ function utf32_utf8($k) {
return $retval;
}
-for ($i = 0; $i < 0x110000; $i++) {
+$table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, 'UTF-8');
+
+for ($i = 0; $i < 0x2710; $i++) {
if ($i >= 0xd800 && $i < 0xe000)
continue;
$str = utf32_utf8($i);
- $result = htmlentities($str, ENT_QUOTES, 'UTF-8');
- if ($str != $result) {
- printf("%s\tU+%05X\n", $result, $i);
- }
+ if (isset($table[$str])) {
+ printf("%s\tU+%05X\n", $table[$str], $i);
+ unset($table[$str]);
+ }
}
+
+if (!empty($table)) {
+ echo "Not matched entities: ";
+ var_dump($table);
+}
+
?>
--EXPECT--
&quot; U+00022
diff --git a/ext/standard/tests/strings/md5_file.phpt b/ext/standard/tests/strings/md5_file.phpt
index 879cd59aa..e5d015cdd 100644
--- a/ext/standard/tests/strings/md5_file.phpt
+++ b/ext/standard/tests/strings/md5_file.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/sha1_file.phpt b/ext/standard/tests/strings/sha1_file.phpt
index 3013adc34..574d384c2 100644
--- a/ext/standard/tests/strings/sha1_file.phpt
+++ b/ext/standard/tests/strings/sha1_file.phpt
@@ -1,17 +1,5 @@
--TEST--
Test sha1_file() function with ASCII output and raw binary output. Based on ext/standard/tests/strings/md5_file.phpt
---SKIPIF--
-<?php
-
-$path = dirname(__FILE__);
-$data_file = "$path/EmptyFile.txt";
-$data_file1 = "$path/DataFile.txt";
-if !(($fp = fopen($data_file, 'w')) || ($fp1 = fopen($data_file1, 'w')) {
- echo "File could not be created ,hence exiting from testcase due to pre-requisite failure\n";
-}
-fclose( $fp );
-fclose( $fp1 );
-
--FILE--
<?php
diff --git a/ext/standard/tests/strings/substr_replace_array.phpt b/ext/standard/tests/strings/substr_replace_array.phpt
new file mode 100644
index 000000000..dbb8b1714
--- /dev/null
+++ b/ext/standard/tests/strings/substr_replace_array.phpt
@@ -0,0 +1,19 @@
+--TEST--
+substr_replace() function - array
+--FILE--
+<?php
+
+$arr = array('abc' => 'llsskdkk','def' => 'llsskjkkdd', 4 => 'hello', 42 => 'world');
+$newarr = substr_replace($arr, 'zzz', 0, -2);
+
+print_r($newarr);
+
+?>
+--EXPECTF--
+Array
+(
+ [abc] => zzzkk
+ [def] => zzzdd
+ [4] => zzzlo
+ [42] => zzzld
+)
diff --git a/ext/standard/tests/url/bug55273.phpt b/ext/standard/tests/url/bug55273.phpt
new file mode 100644
index 000000000..1408506b4
--- /dev/null
+++ b/ext/standard/tests/url/bug55273.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #55273 (base64_decode() with strict rejects whitespace after pad)
+--FILE--
+<?php
+function test($s) {
+ $v = chunk_split(base64_encode($s));
+ $r = base64_decode($v, True);
+ var_dump($v, $r);
+}
+
+test('PHP');
+test('PH');
+test('P');
+
+?>
+--EXPECT--
+string(6) "UEhQ
+"
+string(3) "PHP"
+string(6) "UEg=
+"
+string(2) "PH"
+string(6) "UA==
+"
+string(1) "P"
diff --git a/ext/standard/type.c b/ext/standard/type.c
index 9f28c2874..e49711969 100644
--- a/ext/standard/type.c
+++ b/ext/standard/type.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: type.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: type.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_incomplete_class.h"
diff --git a/ext/standard/uniqid.c b/ext/standard/uniqid.c
index 5c969fb48..7aafd7d22 100644
--- a/ext/standard/uniqid.c
+++ b/ext/standard/uniqid.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: uniqid.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: uniqid.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
diff --git a/ext/standard/uniqid.h b/ext/standard/uniqid.h
index e78308392..a218efa9b 100644
--- a/ext/standard/uniqid.h
+++ b/ext/standard/uniqid.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: uniqid.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: uniqid.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef UNIQID_H
#define UNIQID_H
diff --git a/ext/standard/url.c b/ext/standard/url.c
index 22a8471be..365415e08 100644
--- a/ext/standard/url.c
+++ b/ext/standard/url.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Jim Winstead <jimw@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.c 314783 2011-08-11 13:01:52Z iliaa $ */
+/* $Id: url.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdlib.h>
#include <string.h>
diff --git a/ext/standard/url.h b/ext/standard/url.h
index 9a2bcfaaa..66b3ad893 100644
--- a/ext/standard/url.h
+++ b/ext/standard/url.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -15,7 +15,7 @@
| Author: Jim Winstead <jimw@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.h 307432 2011-01-13 07:27:46Z stas $ */
+/* $Id: url.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef URL_H
#define URL_H
diff --git a/ext/standard/url_scanner_ex.c.orig b/ext/standard/url_scanner_ex.c.orig
deleted file mode 100644
index 1ffa3698f..000000000
--- a/ext/standard/url_scanner_ex.c.orig
+++ /dev/null
@@ -1,1109 +0,0 @@
-/* Generated by re2c 0.13.5 on Fri Dec 31 23:52:51 2010 */
-#line 1 "ext/standard/url_scanner_ex.re"
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 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: Sascha Schumann <sascha@schumann.cx> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id: url_scanner_ex.c 313832 2011-07-28 10:52:45Z pajoye $ */
-
-#include "php.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "php_ini.h"
-#include "php_globals.h"
-#define STATE_TAG SOME_OTHER_STATE_TAG
-#include "basic_functions.h"
-#include "url.h"
-#undef STATE_TAG
-
-#define url_scanner url_scanner_ex
-
-#include "php_smart_str.h"
-
-static PHP_INI_MH(OnUpdateTags)
-{
- url_adapt_state_ex_t *ctx;
- char *key;
- char *lasts;
- char *tmp;
-
- ctx = &BG(url_adapt_state_ex);
-
- tmp = estrndup(new_value, new_value_length);
-
- if (ctx->tags)
- zend_hash_destroy(ctx->tags);
- else {
- ctx->tags = malloc(sizeof(HashTable));
- if (!ctx->tags) {
- return FAILURE;
- }
- }
- zend_hash_init(ctx->tags, 0, NULL, NULL, 1);
-
- for (key = php_strtok_r(tmp, ",", &lasts);
- key;
- key = php_strtok_r(NULL, ",", &lasts)) {
- char *val;
-
- val = strchr(key, '=');
- if (val) {
- char *q;
- int keylen;
-
- *val++ = '\0';
- for (q = key; *q; q++)
- *q = tolower(*q);
- keylen = q - key;
- /* key is stored withOUT NUL
- val is stored WITH NUL */
- zend_hash_add(ctx->tags, key, keylen, val, strlen(val)+1, NULL);
- }
- }
-
- efree(tmp);
-
- return SUCCESS;
-}
-
-PHP_INI_BEGIN()
- STD_PHP_INI_ENTRY("url_rewriter.tags", "a=href,area=href,frame=src,form=,fieldset=", PHP_INI_ALL, OnUpdateTags, url_adapt_state_ex, php_basic_globals, basic_globals)
-PHP_INI_END()
-
-#line 98 "ext/standard/url_scanner_ex.re"
-
-
-#define YYFILL(n) goto done
-#define YYCTYPE unsigned char
-#define YYCURSOR p
-#define YYLIMIT q
-#define YYMARKER r
-
-static inline void append_modified_url(smart_str *url, smart_str *dest, smart_str *url_app, const char *separator)
-{
- register const char *p, *q;
- const char *bash = NULL;
- const char *sep = "?";
-
- q = (p = url->c) + url->len;
-
-scan:
-
-#line 114 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 128, 128, 128, 128, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
-
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy8;
- }
- if (yych <= '9') goto yy6;
- if (yych >= ';') goto yy4;
- ++YYCURSOR;
-#line 116 "ext/standard/url_scanner_ex.re"
- { smart_str_append(dest, url); return; }
-#line 162 "ext/standard/url_scanner_ex.c"
-yy4:
- ++YYCURSOR;
-#line 117 "ext/standard/url_scanner_ex.re"
- { sep = separator; goto scan; }
-#line 167 "ext/standard/url_scanner_ex.c"
-yy6:
- ++YYCURSOR;
-#line 118 "ext/standard/url_scanner_ex.re"
- { bash = p - 1; goto done; }
-#line 172 "ext/standard/url_scanner_ex.c"
-yy8:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy8;
- }
-#line 119 "ext/standard/url_scanner_ex.re"
- { goto scan; }
-#line 182 "ext/standard/url_scanner_ex.c"
-}
-#line 120 "ext/standard/url_scanner_ex.re"
-
-done:
-
- /* Don't modify URLs of the format "#mark" */
- if (bash && bash - url->c == 0) {
- smart_str_append(dest, url);
- return;
- }
-
- if (bash)
- smart_str_appendl(dest, url->c, bash - url->c);
- else
- smart_str_append(dest, url);
-
- smart_str_appends(dest, sep);
- smart_str_append(dest, url_app);
-
- if (bash)
- smart_str_appendl(dest, bash, q - bash);
-}
-
-
-#undef YYFILL
-#undef YYCTYPE
-#undef YYCURSOR
-#undef YYLIMIT
-#undef YYMARKER
-
-static inline void tag_arg(url_adapt_state_ex_t *ctx, char quotes, char type TSRMLS_DC)
-{
- char f = 0;
-
- if (strncasecmp(ctx->arg.c, ctx->lookup_data, ctx->arg.len) == 0)
- f = 1;
-
- if (quotes)
- smart_str_appendc(&ctx->result, type);
- if (f) {
- append_modified_url(&ctx->val, &ctx->result, &ctx->url_app, PG(arg_separator).output);
- } else {
- smart_str_append(&ctx->result, &ctx->val);
- }
- if (quotes)
- smart_str_appendc(&ctx->result, type);
-}
-
-enum {
- STATE_PLAIN = 0,
- STATE_TAG,
- STATE_NEXT_ARG,
- STATE_ARG,
- STATE_BEFORE_VAL,
- STATE_VAL
-};
-
-#define YYFILL(n) goto stop
-#define YYCTYPE unsigned char
-#define YYCURSOR xp
-#define YYLIMIT end
-#define YYMARKER q
-#define STATE ctx->state
-
-#define STD_PARA url_adapt_state_ex_t *ctx, char *start, char *YYCURSOR TSRMLS_DC
-#define STD_ARGS ctx, start, xp TSRMLS_CC
-
-#if SCANNER_DEBUG
-#define scdebug(x) printf x
-#else
-#define scdebug(x)
-#endif
-
-static inline void passthru(STD_PARA)
-{
- scdebug(("appending %d chars, starting with %c\n", YYCURSOR-start, *start));
- smart_str_appendl(&ctx->result, start, YYCURSOR - start);
-}
-
-/*
- * This function appends a hidden input field after a <form> or
- * <fieldset>. The latter is important for XHTML.
- */
-
-static void handle_form(STD_PARA)
-{
- int doit = 0;
-
- if (ctx->form_app.len > 0) {
- switch (ctx->tag.len) {
- case sizeof("form") - 1:
- if (!strncasecmp(ctx->tag.c, "form", sizeof("form") - 1)) {
- doit = 1;
- }
- if (doit && ctx->val.c && ctx->lookup_data && *ctx->lookup_data) {
- char *e, *p = zend_memnstr(ctx->val.c, "://", sizeof("://") - 1, ctx->val.c + ctx->val.len);
- if (p) {
- e = memchr(p, '/', (ctx->val.c + ctx->val.len) - p);
- if (!e) {
- e = ctx->val.c + ctx->val.len;
- }
- if ((e - p) && strncasecmp(p, ctx->lookup_data, (e - p))) {
- doit = 0;
- }
- }
- }
- break;
-
- case sizeof("fieldset") - 1:
- if (!strncasecmp(ctx->tag.c, "fieldset", sizeof("fieldset") - 1)) {
- doit = 1;
- }
- break;
- }
-
- if (doit)
- smart_str_append(&ctx->result, &ctx->form_app);
- }
-}
-
-/*
- * HANDLE_TAG copies the HTML Tag and checks whether we
- * have that tag in our table. If we might modify it,
- * we continue to scan the tag, otherwise we simply copy the complete
- * HTML stuff to the result buffer.
- */
-
-static inline void handle_tag(STD_PARA)
-{
- int ok = 0;
- int i;
-
- ctx->tag.len = 0;
- smart_str_appendl(&ctx->tag, start, YYCURSOR - start);
- for (i = 0; i < ctx->tag.len; i++)
- ctx->tag.c[i] = tolower((int)(unsigned char)ctx->tag.c[i]);
- if (zend_hash_find(ctx->tags, ctx->tag.c, ctx->tag.len, (void **) &ctx->lookup_data) == SUCCESS)
- ok = 1;
- STATE = ok ? STATE_NEXT_ARG : STATE_PLAIN;
-}
-
-static inline void handle_arg(STD_PARA)
-{
- ctx->arg.len = 0;
- smart_str_appendl(&ctx->arg, start, YYCURSOR - start);
-}
-
-static inline void handle_val(STD_PARA, char quotes, char type)
-{
- smart_str_setl(&ctx->val, start + quotes, YYCURSOR - start - quotes * 2);
- tag_arg(ctx, quotes, type TSRMLS_CC);
-}
-
-static inline void xx_mainloop(url_adapt_state_ex_t *ctx, const char *newdata, size_t newlen TSRMLS_DC)
-{
- char *end, *q;
- char *xp;
- char *start;
- int rest;
-
- smart_str_appendl(&ctx->buf, newdata, newlen);
-
- YYCURSOR = ctx->buf.c;
- YYLIMIT = ctx->buf.c + ctx->buf.len;
-
- switch (STATE) {
- case STATE_PLAIN: goto state_plain;
- case STATE_TAG: goto state_tag;
- case STATE_NEXT_ARG: goto state_next_arg;
- case STATE_ARG: goto state_arg;
- case STATE_BEFORE_VAL: goto state_before_val;
- case STATE_VAL: goto state_val;
- }
-
-
-state_plain_begin:
- STATE = STATE_PLAIN;
-
-state_plain:
- start = YYCURSOR;
-
-#line 364 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 0, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy15;
- }
- ++YYCURSOR;
-#line 299 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 409 "ext/standard/url_scanner_ex.c"
-yy15:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy15;
- }
-#line 300 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); goto state_plain; }
-#line 419 "ext/standard/url_scanner_ex.c"
-}
-#line 301 "ext/standard/url_scanner_ex.re"
-
-
-state_tag:
- start = YYCURSOR;
-
-#line 427 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '@') {
- if (yych != ':') goto yy22;
- } else {
- if (yych <= 'Z') goto yy20;
- if (yych <= '`') goto yy22;
- if (yych >= '{') goto yy22;
- }
-yy20:
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy25;
-yy21:
-#line 306 "ext/standard/url_scanner_ex.re"
- { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 480 "ext/standard/url_scanner_ex.c"
-yy22:
- ++YYCURSOR;
-#line 307 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); goto state_plain_begin; }
-#line 485 "ext/standard/url_scanner_ex.c"
-yy24:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy25:
- if (yybm[0+yych] & 128) {
- goto yy24;
- }
- goto yy21;
-}
-#line 308 "ext/standard/url_scanner_ex.re"
-
-
-state_next_arg_begin:
- STATE = STATE_NEXT_ARG;
-
-state_next_arg:
- start = YYCURSOR;
-
-#line 505 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 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,
- };
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= ' ') {
- if (yych <= '\f') {
- if (yych <= 0x08) goto yy34;
- if (yych <= '\v') goto yy30;
- goto yy34;
- } else {
- if (yych <= '\r') goto yy30;
- if (yych <= 0x1F) goto yy34;
- goto yy30;
- }
- } else {
- if (yych <= '@') {
- if (yych != '>') goto yy34;
- } else {
- if (yych <= 'Z') goto yy32;
- if (yych <= '`') goto yy34;
- if (yych <= 'z') goto yy32;
- goto yy34;
- }
- }
- ++YYCURSOR;
-#line 316 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
-#line 567 "ext/standard/url_scanner_ex.c"
-yy30:
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy37;
-yy31:
-#line 317 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); goto state_next_arg; }
-#line 575 "ext/standard/url_scanner_ex.c"
-yy32:
- ++YYCURSOR;
-#line 318 "ext/standard/url_scanner_ex.re"
- { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 580 "ext/standard/url_scanner_ex.c"
-yy34:
- ++YYCURSOR;
-#line 319 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); goto state_plain_begin; }
-#line 585 "ext/standard/url_scanner_ex.c"
-yy36:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy37:
- if (yybm[0+yych] & 128) {
- goto yy36;
- }
- goto yy31;
-}
-#line 320 "ext/standard/url_scanner_ex.re"
-
-
-state_arg:
- start = YYCURSOR;
-
-#line 602 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '@') goto yy42;
- if (yych <= 'Z') goto yy40;
- if (yych <= '`') goto yy42;
- if (yych >= '{') goto yy42;
-yy40:
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy45;
-yy41:
-#line 325 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
-#line 652 "ext/standard/url_scanner_ex.c"
-yy42:
- ++YYCURSOR;
-#line 326 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
-#line 657 "ext/standard/url_scanner_ex.c"
-yy44:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy45:
- if (yybm[0+yych] & 128) {
- goto yy44;
- }
- goto yy41;
-}
-#line 327 "ext/standard/url_scanner_ex.re"
-
-
-state_before_val:
- start = YYCURSOR;
-
-#line 674 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych == ' ') goto yy48;
- if (yych == '=') goto yy50;
- goto yy52;
-yy48:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ' ') goto yy55;
- if (yych == '=') goto yy53;
-yy49:
-#line 333 "ext/standard/url_scanner_ex.re"
- { --YYCURSOR; goto state_next_arg_begin; }
-#line 723 "ext/standard/url_scanner_ex.c"
-yy50:
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy54;
-yy51:
-#line 332 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 731 "ext/standard/url_scanner_ex.c"
-yy52:
- yych = *++YYCURSOR;
- goto yy49;
-yy53:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy54:
- if (yybm[0+yych] & 128) {
- goto yy53;
- }
- goto yy51;
-yy55:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych == ' ') goto yy55;
- if (yych == '=') goto yy53;
- YYCURSOR = YYMARKER;
- goto yy49;
-}
-#line 334 "ext/standard/url_scanner_ex.re"
-
-
-
-state_val:
- start = YYCURSOR;
-
-#line 760 "ext/standard/url_scanner_ex.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 160, 160, 248, 248, 160, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 160, 248, 56, 248, 248, 248, 248, 200,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 0, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- };
- if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- if (yych <= ' ') {
- if (yych <= '\f') {
- if (yych <= 0x08) goto yy63;
- if (yych <= '\n') goto yy64;
- goto yy63;
- } else {
- if (yych <= '\r') goto yy64;
- if (yych <= 0x1F) goto yy63;
- goto yy64;
- }
- } else {
- if (yych <= '&') {
- if (yych != '"') goto yy63;
- } else {
- if (yych <= '\'') goto yy62;
- if (yych == '>') goto yy64;
- goto yy63;
- }
- }
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy77;
-yy61:
-#line 342 "ext/standard/url_scanner_ex.re"
- { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
-#line 823 "ext/standard/url_scanner_ex.c"
-yy62:
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy69;
-yy63:
- yych = *++YYCURSOR;
- goto yy67;
-yy64:
- ++YYCURSOR;
-#line 343 "ext/standard/url_scanner_ex.re"
- { passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 834 "ext/standard/url_scanner_ex.c"
-yy66:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy67:
- if (yybm[0+yych] & 8) {
- goto yy66;
- }
- goto yy61;
-yy68:
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
-yy69:
- if (yybm[0+yych] & 16) {
- goto yy68;
- }
- if (yych <= '&') goto yy72;
- if (yych >= '(') goto yy61;
- ++YYCURSOR;
- if (yybm[0+(yych = *YYCURSOR)] & 8) {
- goto yy66;
- }
-yy71:
-#line 341 "ext/standard/url_scanner_ex.re"
- { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 861 "ext/standard/url_scanner_ex.c"
-yy72:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 32) {
- goto yy72;
- }
- if (yych <= '=') goto yy75;
-yy74:
- YYCURSOR = YYMARKER;
- goto yy61;
-yy75:
- yych = *++YYCURSOR;
- goto yy71;
-yy76:
- YYMARKER = ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
-yy77:
- if (yybm[0+yych] & 64) {
- goto yy76;
- }
- if (yych <= '!') goto yy80;
- if (yych >= '#') goto yy61;
- ++YYCURSOR;
- if (yybm[0+(yych = *YYCURSOR)] & 8) {
- goto yy66;
- }
-yy79:
-#line 340 "ext/standard/url_scanner_ex.re"
- { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 893 "ext/standard/url_scanner_ex.c"
-yy80:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy80;
- }
- if (yych >= '>') goto yy74;
- ++YYCURSOR;
- yych = *YYCURSOR;
- goto yy79;
-}
-#line 344 "ext/standard/url_scanner_ex.re"
-
-
-stop:
- rest = YYLIMIT - start;
- scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest));
- /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */
- if (rest < 0) rest = 0;
-
- if (rest) memmove(ctx->buf.c, start, rest);
- ctx->buf.len = rest;
-}
-
-char *php_url_scanner_adapt_single_url(const char *url, size_t urllen, const char *name, const char *value, size_t *newlen TSRMLS_DC)
-{
- smart_str surl = {0};
- smart_str buf = {0};
- smart_str url_app = {0};
-
- smart_str_setl(&surl, url, urllen);
-
- smart_str_appends(&url_app, name);
- smart_str_appendc(&url_app, '=');
- smart_str_appends(&url_app, value);
-
- append_modified_url(&surl, &buf, &url_app, PG(arg_separator).output);
-
- smart_str_0(&buf);
- if (newlen) *newlen = buf.len;
-
- smart_str_free(&url_app);
-
- return buf.c;
-}
-
-
-static char *url_adapt_ext(const char *src, size_t srclen, size_t *newlen, zend_bool do_flush TSRMLS_DC)
-{
- url_adapt_state_ex_t *ctx;
- char *retval;
-
- ctx = &BG(url_adapt_state_ex);
-
- xx_mainloop(ctx, src, srclen TSRMLS_CC);
-
- *newlen = ctx->result.len;
- if (!ctx->result.c) {
- smart_str_appendl(&ctx->result, "", 0);
- }
- smart_str_0(&ctx->result);
- if (do_flush) {
- smart_str_appendl(&ctx->result, ctx->buf.c, ctx->buf.len);
- *newlen += ctx->buf.len;
- smart_str_free(&ctx->buf);
- }
- retval = ctx->result.c;
- ctx->result.c = NULL;
- ctx->result.len = 0;
- return retval;
-}
-
-static int php_url_scanner_ex_activate(TSRMLS_D)
-{
- url_adapt_state_ex_t *ctx;
-
- ctx = &BG(url_adapt_state_ex);
-
- memset(ctx, 0, ((size_t) &((url_adapt_state_ex_t *)0)->tags));
-
- return SUCCESS;
-}
-
-static int php_url_scanner_ex_deactivate(TSRMLS_D)
-{
- url_adapt_state_ex_t *ctx;
-
- ctx = &BG(url_adapt_state_ex);
-
- smart_str_free(&ctx->result);
- smart_str_free(&ctx->buf);
- smart_str_free(&ctx->tag);
- smart_str_free(&ctx->arg);
-
- return SUCCESS;
-}
-
-static void php_url_scanner_output_handler(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC)
-{
- size_t len;
-
- if (BG(url_adapt_state_ex).url_app.len != 0) {
- *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode & (PHP_OUTPUT_HANDLER_END | PHP_OUTPUT_HANDLER_CONT) ? 1 : 0) TSRMLS_CC);
- if (sizeof(uint) < sizeof(size_t)) {
- if (len > UINT_MAX)
- len = UINT_MAX;
- }
- *handled_output_len = len;
- } else if (BG(url_adapt_state_ex).url_app.len == 0) {
- url_adapt_state_ex_t *ctx = &BG(url_adapt_state_ex);
- if (ctx->buf.len) {
- smart_str_appendl(&ctx->result, ctx->buf.c, ctx->buf.len);
- smart_str_appendl(&ctx->result, output, output_len);
-
- *handled_output = ctx->result.c;
- *handled_output_len = ctx->buf.len + output_len;
-
- ctx->result.c = NULL;
- ctx->result.len = 0;
- smart_str_free(&ctx->buf);
- } else {
- *handled_output = NULL;
- }
- } else {
- *handled_output = NULL;
- }
-}
-
-PHPAPI int php_url_scanner_add_var(char *name, int name_len, char *value, int value_len, int urlencode TSRMLS_DC)
-{
- char *encoded;
- int encoded_len;
- smart_str val;
-
- if (! BG(url_adapt_state_ex).active) {
- php_url_scanner_ex_activate(TSRMLS_C);
- php_ob_set_internal_handler(php_url_scanner_output_handler, 0, "URL-Rewriter", 1 TSRMLS_CC);
- BG(url_adapt_state_ex).active = 1;
- }
-
-
- if (BG(url_adapt_state_ex).url_app.len != 0) {
- smart_str_appends(&BG(url_adapt_state_ex).url_app, PG(arg_separator).output);
- }
-
- if (urlencode) {
- encoded = php_url_encode(value, value_len, &encoded_len);
- smart_str_setl(&val, encoded, encoded_len);
- } else {
- smart_str_setl(&val, value, value_len);
- }
-
- smart_str_appendl(&BG(url_adapt_state_ex).url_app, name, name_len);
- smart_str_appendc(&BG(url_adapt_state_ex).url_app, '=');
- smart_str_append(&BG(url_adapt_state_ex).url_app, &val);
-
- smart_str_appends(&BG(url_adapt_state_ex).form_app, "<input type=\"hidden\" name=\"");
- smart_str_appendl(&BG(url_adapt_state_ex).form_app, name, name_len);
- smart_str_appends(&BG(url_adapt_state_ex).form_app, "\" value=\"");
- smart_str_append(&BG(url_adapt_state_ex).form_app, &val);
- smart_str_appends(&BG(url_adapt_state_ex).form_app, "\" />");
-
- if (urlencode)
- efree(encoded);
-
- return SUCCESS;
-}
-
-PHPAPI int php_url_scanner_reset_vars(TSRMLS_D)
-{
- BG(url_adapt_state_ex).form_app.len = 0;
- BG(url_adapt_state_ex).url_app.len = 0;
-
- return SUCCESS;
-}
-
-PHP_MINIT_FUNCTION(url_scanner)
-{
- BG(url_adapt_state_ex).tags = NULL;
-
- BG(url_adapt_state_ex).form_app.c = BG(url_adapt_state_ex).url_app.c = 0;
- BG(url_adapt_state_ex).form_app.len = BG(url_adapt_state_ex).url_app.len = 0;
-
- REGISTER_INI_ENTRIES();
- return SUCCESS;
-}
-
-PHP_MSHUTDOWN_FUNCTION(url_scanner)
-{
- UNREGISTER_INI_ENTRIES();
-
- return SUCCESS;
-}
-
-PHP_RINIT_FUNCTION(url_scanner)
-{
- BG(url_adapt_state_ex).active = 0;
-
- return SUCCESS;
-}
-
-PHP_RSHUTDOWN_FUNCTION(url_scanner)
-{
- if (BG(url_adapt_state_ex).active) {
- php_url_scanner_ex_deactivate(TSRMLS_C);
- BG(url_adapt_state_ex).active = 0;
- }
-
- smart_str_free(&BG(url_adapt_state_ex).form_app);
- smart_str_free(&BG(url_adapt_state_ex).url_app);
-
- return SUCCESS;
-}
diff --git a/ext/standard/url_scanner_ex.h b/ext/standard/url_scanner_ex.h
index 692f05af1..d4aea269f 100644
--- a/ext/standard/url_scanner_ex.h
+++ b/ext/standard/url_scanner_ex.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: url_scanner_ex.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: url_scanner_ex.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef URL_SCANNER_EX_H
#define URL_SCANNER_EX_H
diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c
index 449c42db1..ba145b559 100644
--- a/ext/standard/user_filters.c
+++ b/ext/standard/user_filters.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: user_filters.c 314641 2011-08-09 12:16:58Z laruence $ */
+/* $Id: user_filters.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_globals.h"
diff --git a/ext/standard/uuencode.c b/ext/standard/uuencode.c
index cdd73aaa5..60f59c12e 100644
--- a/ext/standard/uuencode.c
+++ b/ext/standard/uuencode.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: uuencode.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: uuencode.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
* Portions of this code are based on Berkeley's uuencode/uudecode
diff --git a/ext/standard/var.c b/ext/standard/var.c
index c8a89b746..ea156e859 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c 314403 2011-08-07 06:04:11Z pierrick $ */
+/* $Id: var.c 321634 2012-01-01 13:15:04Z felipe $ */
/* {{{ includes
*/
@@ -598,7 +598,7 @@ static inline zend_bool php_var_serialize_class_name(smart_str *buf, zval *struc
PHP_SET_CLASS_ATTRIBUTES(struc);
smart_str_appendl(buf, "O:", 2);
- smart_str_append_long(buf, (long)name_len);
+ smart_str_append_long(buf, (int)name_len);
smart_str_appendl(buf, ":\"", 2);
smart_str_appendl(buf, class_name, name_len);
smart_str_appendl(buf, "\":", 2);
@@ -764,12 +764,12 @@ static void php_var_serialize_intern(smart_str *buf, zval *struc, HashTable *var
if (ce->serialize(struc, &serialized_data, &serialized_length, (zend_serialize_data *)var_hash TSRMLS_CC) == SUCCESS) {
smart_str_appendl(buf, "C:", 2);
- smart_str_append_long(buf, (long)Z_OBJCE_P(struc)->name_length);
+ smart_str_append_long(buf, (int)Z_OBJCE_P(struc)->name_length);
smart_str_appendl(buf, ":\"", 2);
smart_str_appendl(buf, Z_OBJCE_P(struc)->name, Z_OBJCE_P(struc)->name_length);
smart_str_appendl(buf, "\":", 2);
- smart_str_append_long(buf, (long)serialized_length);
+ smart_str_append_long(buf, (int)serialized_length);
smart_str_appendl(buf, ":{", 2);
smart_str_appendl(buf, serialized_data, serialized_length);
smart_str_appendc(buf, '}');
diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c
index 015f92d9e..8bacdfed3 100644
--- a/ext/standard/var_unserializer.c
+++ b/ext/standard/var_unserializer.c
@@ -1,9 +1,9 @@
-/* Generated by re2c 0.13.5 on Fri Dec 31 23:52:55 2010 */
+/* Generated by re2c 0.13.5 on Wed Sep 28 15:40:15 2011 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var_unserializer.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: var_unserializer.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "ext/standard/php_var.h"
@@ -251,7 +251,7 @@ static inline size_t parse_uiv(const unsigned char *p)
#define UNSERIALIZE_PARAMETER zval **rval, const unsigned char **p, const unsigned char *max, php_unserialize_data_t *var_hash TSRMLS_DC
#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash TSRMLS_CC
-static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements)
+static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements, int objprops)
{
while (elements-- > 0) {
zval *key, *data, **old_data;
@@ -280,7 +280,8 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
return 0;
}
- switch (Z_TYPE_P(key)) {
+ if (!objprops) {
+ switch (Z_TYPE_P(key)) {
case IS_LONG:
if (zend_hash_index_find(ht, Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {
var_push_dtor(var_hash, old_data);
@@ -293,6 +294,12 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
}
zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
break;
+ }
+ } else {
+ /* object properties should include no integers */
+ convert_to_string(key);
+ zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data,
+ sizeof data, NULL);
}
zval_dtor(key);
@@ -360,7 +367,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, long elements)
zval *retval_ptr = NULL;
zval fname;
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements)) {
+ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) {
return 0;
}
@@ -710,7 +717,7 @@ yy34:
array_init_size(*rval, elements);
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements)) {
+ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements, 0)) {
return 0;
}
diff --git a/ext/standard/var_unserializer.c.orig b/ext/standard/var_unserializer.c.orig
deleted file mode 100644
index ad7823e99..000000000
--- a/ext/standard/var_unserializer.c.orig
+++ /dev/null
@@ -1,1177 +0,0 @@
-/* Generated by re2c 0.13.5 on Fri Dec 31 23:52:55 2010 */
-#line 1 "ext/standard/var_unserializer.re"
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 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: Sascha Schumann <sascha@schumann.cx> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id: var_unserializer.c 306939 2011-01-01 02:19:59Z felipe $ */
-
-#include "php.h"
-#include "ext/standard/php_var.h"
-#include "php_incomplete_class.h"
-
-/* {{{ reference-handling for unserializer: var_* */
-#define VAR_ENTRIES_MAX 1024
-
-typedef struct {
- zval *data[VAR_ENTRIES_MAX];
- long used_slots;
- void *next;
-} var_entries;
-
-static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
-{
- var_entries *var_hash = var_hashx->first, *prev = NULL;
-
- while (var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
- prev = var_hash;
- var_hash = var_hash->next;
- }
-
- if (!var_hash) {
- var_hash = emalloc(sizeof(var_entries));
- var_hash->used_slots = 0;
- var_hash->next = 0;
-
- if (!var_hashx->first)
- var_hashx->first = var_hash;
- else
- prev->next = var_hash;
- }
-
- var_hash->data[var_hash->used_slots++] = *rval;
-}
-
-PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval)
-{
- var_entries *var_hash = var_hashx->first_dtor, *prev = NULL;
-
- while (var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
- prev = var_hash;
- var_hash = var_hash->next;
- }
-
- if (!var_hash) {
- var_hash = emalloc(sizeof(var_entries));
- var_hash->used_slots = 0;
- var_hash->next = 0;
-
- if (!var_hashx->first_dtor)
- var_hashx->first_dtor = var_hash;
- else
- prev->next = var_hash;
- }
-
- Z_ADDREF_PP(rval);
- var_hash->data[var_hash->used_slots++] = *rval;
-}
-
-PHPAPI void var_replace(php_unserialize_data_t *var_hashx, zval *ozval, zval **nzval)
-{
- long i;
- var_entries *var_hash = var_hashx->first;
-
- while (var_hash) {
- for (i = 0; i < var_hash->used_slots; i++) {
- if (var_hash->data[i] == ozval) {
- var_hash->data[i] = *nzval;
- /* do not break here */
- }
- }
- var_hash = var_hash->next;
- }
-}
-
-static int var_access(php_unserialize_data_t *var_hashx, long id, zval ***store)
-{
- var_entries *var_hash = var_hashx->first;
-
- while (id >= VAR_ENTRIES_MAX && var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
- var_hash = var_hash->next;
- id -= VAR_ENTRIES_MAX;
- }
-
- if (!var_hash) return !SUCCESS;
-
- if (id < 0 || id >= var_hash->used_slots) return !SUCCESS;
-
- *store = &var_hash->data[id];
-
- return SUCCESS;
-}
-
-PHPAPI void var_destroy(php_unserialize_data_t *var_hashx)
-{
- void *next;
- long i;
- var_entries *var_hash = var_hashx->first;
-
- while (var_hash) {
- next = var_hash->next;
- efree(var_hash);
- var_hash = next;
- }
-
- var_hash = var_hashx->first_dtor;
-
- while (var_hash) {
- for (i = 0; i < var_hash->used_slots; i++) {
- zval_ptr_dtor(&var_hash->data[i]);
- }
- next = var_hash->next;
- efree(var_hash);
- var_hash = next;
- }
-}
-
-/* }}} */
-
-static char *unserialize_str(const unsigned char **p, size_t *len, size_t maxlen)
-{
- size_t i, j;
- char *str = safe_emalloc(*len, 1, 1);
- unsigned char *end = *(unsigned char **)p+maxlen;
-
- if (end < *p) {
- efree(str);
- return NULL;
- }
-
- for (i = 0; i < *len; i++) {
- if (*p >= end) {
- efree(str);
- return NULL;
- }
- if (**p != '\\') {
- str[i] = (char)**p;
- } else {
- unsigned char ch = 0;
-
- for (j = 0; j < 2; j++) {
- (*p)++;
- if (**p >= '0' && **p <= '9') {
- ch = (ch << 4) + (**p -'0');
- } else if (**p >= 'a' && **p <= 'f') {
- ch = (ch << 4) + (**p -'a'+10);
- } else if (**p >= 'A' && **p <= 'F') {
- ch = (ch << 4) + (**p -'A'+10);
- } else {
- efree(str);
- return NULL;
- }
- }
- str[i] = (char)ch;
- }
- (*p)++;
- }
- str[i] = 0;
- *len = i;
- return str;
-}
-
-#define YYFILL(n) do { } while (0)
-#define YYCTYPE unsigned char
-#define YYCURSOR cursor
-#define YYLIMIT limit
-#define YYMARKER marker
-
-
-#line 198 "ext/standard/var_unserializer.re"
-
-
-
-
-static inline long parse_iv2(const unsigned char *p, const unsigned char **q)
-{
- char cursor;
- long result = 0;
- int neg = 0;
-
- switch (*p) {
- case '-':
- neg++;
- /* fall-through */
- case '+':
- p++;
- }
-
- while (1) {
- cursor = (char)*p;
- if (cursor >= '0' && cursor <= '9') {
- result = result * 10 + (size_t)(cursor - (unsigned char)'0');
- } else {
- break;
- }
- p++;
- }
- if (q) *q = p;
- if (neg) return -result;
- return result;
-}
-
-static inline long parse_iv(const unsigned char *p)
-{
- return parse_iv2(p, NULL);
-}
-
-/* no need to check for length - re2c already did */
-static inline size_t parse_uiv(const unsigned char *p)
-{
- unsigned char cursor;
- size_t result = 0;
-
- if (*p == '+') {
- p++;
- }
-
- while (1) {
- cursor = *p;
- if (cursor >= '0' && cursor <= '9') {
- result = result * 10 + (size_t)(cursor - (unsigned char)'0');
- } else {
- break;
- }
- p++;
- }
- return result;
-}
-
-#define UNSERIALIZE_PARAMETER zval **rval, const unsigned char **p, const unsigned char *max, php_unserialize_data_t *var_hash TSRMLS_DC
-#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash TSRMLS_CC
-
-static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements)
-{
- while (elements-- > 0) {
- zval *key, *data, **old_data;
-
- ALLOC_INIT_ZVAL(key);
-
- if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) {
- zval_dtor(key);
- FREE_ZVAL(key);
- return 0;
- }
-
- if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) {
- zval_dtor(key);
- FREE_ZVAL(key);
- return 0;
- }
-
- ALLOC_INIT_ZVAL(data);
-
- if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
- zval_dtor(key);
- FREE_ZVAL(key);
- zval_dtor(data);
- FREE_ZVAL(data);
- return 0;
- }
-
- switch (Z_TYPE_P(key)) {
- case IS_LONG:
- if (zend_hash_index_find(ht, Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {
- var_push_dtor(var_hash, old_data);
- }
- zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data), NULL);
- break;
- case IS_STRING:
- if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) {
- var_push_dtor(var_hash, old_data);
- }
- zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
- break;
- }
-
- zval_dtor(key);
- FREE_ZVAL(key);
-
- if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
- (*p)--;
- return 0;
- }
- }
-
- return 1;
-}
-
-static inline int finish_nested_data(UNSERIALIZE_PARAMETER)
-{
- if (*((*p)++) == '}')
- return 1;
-
-#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE
- zval_ptr_dtor(rval);
-#endif
- return 0;
-}
-
-static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce)
-{
- long datalen;
-
- datalen = parse_iv2((*p) + 2, p);
-
- (*p) += 2;
-
- if (datalen < 0 || (*p) + datalen >= max) {
- zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p)));
- return 0;
- }
-
- if (ce->unserialize == NULL) {
- zend_error(E_WARNING, "Class %s has no unserializer", ce->name);
- object_init_ex(*rval, ce);
- } else if (ce->unserialize(rval, ce, (const unsigned char*)*p, datalen, (zend_unserialize_data *)var_hash TSRMLS_CC) != SUCCESS) {
- return 0;
- }
-
- (*p) += datalen;
-
- return finish_nested_data(UNSERIALIZE_PASSTHRU);
-}
-
-static inline long object_common1(UNSERIALIZE_PARAMETER, zend_class_entry *ce)
-{
- long elements;
-
- elements = parse_iv2((*p) + 2, p);
-
- (*p) += 2;
-
- object_init_ex(*rval, ce);
- return elements;
-}
-
-static inline int object_common2(UNSERIALIZE_PARAMETER, long elements)
-{
- zval *retval_ptr = NULL;
- zval fname;
-
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements)) {
- return 0;
- }
-
- if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY &&
- zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) {
- INIT_PZVAL(&fname);
- ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0);
- call_user_function_ex(CG(function_table), rval, &fname, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
- }
-
- if (retval_ptr)
- zval_ptr_dtor(&retval_ptr);
-
- return finish_nested_data(UNSERIALIZE_PASSTHRU);
-
-}
-
-PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
-{
- const unsigned char *cursor, *limit, *marker, *start;
- zval **rval_ref;
-
- limit = cursor = *p;
-
- if (var_hash && cursor[0] != 'R') {
- var_push(var_hash, rval);
- }
-
- start = cursor;
-
-
-
-
-#line 400 "ext/standard/var_unserializer.c"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 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,
- };
-
- if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
- yych = *YYCURSOR;
- switch (yych) {
- case 'C':
- case 'O': goto yy13;
- case 'N': goto yy5;
- case 'R': goto yy2;
- case 'S': goto yy10;
- case 'a': goto yy11;
- case 'b': goto yy6;
- case 'd': goto yy8;
- case 'i': goto yy7;
- case 'o': goto yy12;
- case 'r': goto yy4;
- case 's': goto yy9;
- case '}': goto yy14;
- default: goto yy16;
- }
-yy2:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy95;
-yy3:
-#line 722 "ext/standard/var_unserializer.re"
- { return 0; }
-#line 462 "ext/standard/var_unserializer.c"
-yy4:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy89;
- goto yy3;
-yy5:
- yych = *++YYCURSOR;
- if (yych == ';') goto yy87;
- goto yy3;
-yy6:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy83;
- goto yy3;
-yy7:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy77;
- goto yy3;
-yy8:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy53;
- goto yy3;
-yy9:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy46;
- goto yy3;
-yy10:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy39;
- goto yy3;
-yy11:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy32;
- goto yy3;
-yy12:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy25;
- goto yy3;
-yy13:
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == ':') goto yy17;
- goto yy3;
-yy14:
- ++YYCURSOR;
-#line 716 "ext/standard/var_unserializer.re"
- {
- /* this is the case where we have less data than planned */
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data");
- return 0; /* not sure if it should be 0 or 1 here? */
-}
-#line 511 "ext/standard/var_unserializer.c"
-yy16:
- yych = *++YYCURSOR;
- goto yy3;
-yy17:
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy20;
- }
- if (yych == '+') goto yy19;
-yy18:
- YYCURSOR = YYMARKER;
- goto yy3;
-yy19:
- yych = *++YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy20;
- }
- goto yy18;
-yy20:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy20;
- }
- if (yych != ':') goto yy18;
- yych = *++YYCURSOR;
- if (yych != '"') goto yy18;
- ++YYCURSOR;
-#line 599 "ext/standard/var_unserializer.re"
- {
- size_t len, len2, len3, maxlen;
- long elements;
- char *class_name;
- zend_class_entry *ce;
- zend_class_entry **pce;
- int incomplete_class = 0;
-
- int custom_object = 0;
-
- zval *user_func;
- zval *retval_ptr;
- zval **args[1];
- zval *arg_func_name;
-
- if (*start == 'C') {
- custom_object = 1;
- }
-
- INIT_PZVAL(*rval);
- len2 = len = parse_uiv(start + 2);
- maxlen = max - YYCURSOR;
- if (maxlen < len || len == 0) {
- *p = start + 2;
- return 0;
- }
-
- class_name = (char*)YYCURSOR;
-
- YYCURSOR += len;
-
- if (*(YYCURSOR) != '"') {
- *p = YYCURSOR;
- return 0;
- }
- if (*(YYCURSOR+1) != ':') {
- *p = YYCURSOR+1;
- return 0;
- }
-
- len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\");
- if (len3 != len)
- {
- *p = YYCURSOR + len3 - len;
- return 0;
- }
-
- class_name = estrndup(class_name, len);
-
- do {
- /* Try to find class directly */
- if (zend_lookup_class(class_name, len2, &pce TSRMLS_CC) == SUCCESS) {
- ce = *pce;
- break;
- }
-
- /* Check for unserialize callback */
- if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
- incomplete_class = 1;
- ce = PHP_IC_ENTRY;
- break;
- }
-
- /* Call unserialize callback */
- MAKE_STD_ZVAL(user_func);
- ZVAL_STRING(user_func, PG(unserialize_callback_func), 1);
- args[0] = &arg_func_name;
- MAKE_STD_ZVAL(arg_func_name);
- ZVAL_STRING(arg_func_name, class_name, 1);
- if (call_user_function_ex(CG(function_table), NULL, user_func, &retval_ptr, 1, args, 0, NULL TSRMLS_CC) != SUCCESS) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "defined (%s) but not found", user_func->value.str.val);
- incomplete_class = 1;
- ce = PHP_IC_ENTRY;
- zval_ptr_dtor(&user_func);
- zval_ptr_dtor(&arg_func_name);
- break;
- }
- if (retval_ptr) {
- zval_ptr_dtor(&retval_ptr);
- }
-
- /* The callback function may have defined the class */
- if (zend_lookup_class(class_name, len2, &pce TSRMLS_CC) == SUCCESS) {
- ce = *pce;
- } else {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function %s() hasn't defined the class it was called for", user_func->value.str.val);
- incomplete_class = 1;
- ce = PHP_IC_ENTRY;
- }
-
- zval_ptr_dtor(&user_func);
- zval_ptr_dtor(&arg_func_name);
- break;
- } while (1);
-
- *p = YYCURSOR;
-
- if (custom_object) {
- int ret = object_custom(UNSERIALIZE_PASSTHRU, ce);
-
- if (ret && incomplete_class) {
- php_store_class_name(*rval, class_name, len2);
- }
- efree(class_name);
- return ret;
- }
-
- elements = object_common1(UNSERIALIZE_PASSTHRU, ce);
-
- if (incomplete_class) {
- php_store_class_name(*rval, class_name, len2);
- }
- efree(class_name);
-
- return object_common2(UNSERIALIZE_PASSTHRU, elements);
-}
-#line 658 "ext/standard/var_unserializer.c"
-yy25:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych != '+') goto yy18;
- } else {
- if (yych <= '-') goto yy26;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy27;
- goto yy18;
- }
-yy26:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy27:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy27;
- if (yych >= ';') goto yy18;
- yych = *++YYCURSOR;
- if (yych != '"') goto yy18;
- ++YYCURSOR;
-#line 591 "ext/standard/var_unserializer.re"
- {
-
- INIT_PZVAL(*rval);
-
- return object_common2(UNSERIALIZE_PASSTHRU,
- object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR));
-}
-#line 691 "ext/standard/var_unserializer.c"
-yy32:
- yych = *++YYCURSOR;
- if (yych == '+') goto yy33;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy34;
- goto yy18;
-yy33:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy34:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy34;
- if (yych >= ';') goto yy18;
- yych = *++YYCURSOR;
- if (yych != '{') goto yy18;
- ++YYCURSOR;
-#line 571 "ext/standard/var_unserializer.re"
- {
- long elements = parse_iv(start + 2);
- /* use iv() not uiv() in order to check data range */
- *p = YYCURSOR;
-
- if (elements < 0) {
- return 0;
- }
-
- INIT_PZVAL(*rval);
-
- array_init_size(*rval, elements);
-
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements)) {
- return 0;
- }
-
- return finish_nested_data(UNSERIALIZE_PASSTHRU);
-}
-#line 732 "ext/standard/var_unserializer.c"
-yy39:
- yych = *++YYCURSOR;
- if (yych == '+') goto yy40;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy41;
- goto yy18;
-yy40:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy41:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy41;
- if (yych >= ';') goto yy18;
- yych = *++YYCURSOR;
- if (yych != '"') goto yy18;
- ++YYCURSOR;
-#line 542 "ext/standard/var_unserializer.re"
- {
- size_t len, maxlen;
- char *str;
-
- len = parse_uiv(start + 2);
- maxlen = max - YYCURSOR;
- if (maxlen < len) {
- *p = start + 2;
- return 0;
- }
-
- if ((str = unserialize_str(&YYCURSOR, &len, maxlen)) == NULL) {
- return 0;
- }
-
- if (*(YYCURSOR) != '"') {
- efree(str);
- *p = YYCURSOR;
- return 0;
- }
-
- YYCURSOR += 2;
- *p = YYCURSOR;
-
- INIT_PZVAL(*rval);
- ZVAL_STRINGL(*rval, str, len, 0);
- return 1;
-}
-#line 782 "ext/standard/var_unserializer.c"
-yy46:
- yych = *++YYCURSOR;
- if (yych == '+') goto yy47;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy48;
- goto yy18;
-yy47:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy48:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy48;
- if (yych >= ';') goto yy18;
- yych = *++YYCURSOR;
- if (yych != '"') goto yy18;
- ++YYCURSOR;
-#line 514 "ext/standard/var_unserializer.re"
- {
- size_t len, maxlen;
- char *str;
-
- len = parse_uiv(start + 2);
- maxlen = max - YYCURSOR;
- if (maxlen < len) {
- *p = start + 2;
- return 0;
- }
-
- str = (char*)YYCURSOR;
-
- YYCURSOR += len;
-
- if (*(YYCURSOR) != '"') {
- *p = YYCURSOR;
- return 0;
- }
-
- YYCURSOR += 2;
- *p = YYCURSOR;
-
- INIT_PZVAL(*rval);
- ZVAL_STRINGL(*rval, str, len, 1);
- return 1;
-}
-#line 831 "ext/standard/var_unserializer.c"
-yy53:
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych <= ',') {
- if (yych == '+') goto yy57;
- goto yy18;
- } else {
- if (yych <= '-') goto yy55;
- if (yych <= '.') goto yy60;
- goto yy18;
- }
- } else {
- if (yych <= 'I') {
- if (yych <= '9') goto yy58;
- if (yych <= 'H') goto yy18;
- goto yy56;
- } else {
- if (yych != 'N') goto yy18;
- }
- }
- yych = *++YYCURSOR;
- if (yych == 'A') goto yy76;
- goto yy18;
-yy55:
- yych = *++YYCURSOR;
- if (yych <= '/') {
- if (yych == '.') goto yy60;
- goto yy18;
- } else {
- if (yych <= '9') goto yy58;
- if (yych != 'I') goto yy18;
- }
-yy56:
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy72;
- goto yy18;
-yy57:
- yych = *++YYCURSOR;
- if (yych == '.') goto yy60;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy58:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- if (yych <= ':') {
- if (yych <= '.') {
- if (yych <= '-') goto yy18;
- goto yy70;
- } else {
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy58;
- goto yy18;
- }
- } else {
- if (yych <= 'E') {
- if (yych <= ';') goto yy63;
- if (yych <= 'D') goto yy18;
- goto yy65;
- } else {
- if (yych == 'e') goto yy65;
- goto yy18;
- }
- }
-yy60:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy61:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- if (yych <= ';') {
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy61;
- if (yych <= ':') goto yy18;
- } else {
- if (yych <= 'E') {
- if (yych <= 'D') goto yy18;
- goto yy65;
- } else {
- if (yych == 'e') goto yy65;
- goto yy18;
- }
- }
-yy63:
- ++YYCURSOR;
-#line 504 "ext/standard/var_unserializer.re"
- {
-#if SIZEOF_LONG == 4
-use_double:
-#endif
- *p = YYCURSOR;
- INIT_PZVAL(*rval);
- ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL));
- return 1;
-}
-#line 929 "ext/standard/var_unserializer.c"
-yy65:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych != '+') goto yy18;
- } else {
- if (yych <= '-') goto yy66;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy67;
- goto yy18;
- }
-yy66:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych == '+') goto yy69;
- goto yy18;
- } else {
- if (yych <= '-') goto yy69;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
- }
-yy67:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy67;
- if (yych == ';') goto yy63;
- goto yy18;
-yy69:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy67;
- goto yy18;
-yy70:
- ++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- if (yych <= ';') {
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy70;
- if (yych <= ':') goto yy18;
- goto yy63;
- } else {
- if (yych <= 'E') {
- if (yych <= 'D') goto yy18;
- goto yy65;
- } else {
- if (yych == 'e') goto yy65;
- goto yy18;
- }
- }
-yy72:
- yych = *++YYCURSOR;
- if (yych != 'F') goto yy18;
-yy73:
- yych = *++YYCURSOR;
- if (yych != ';') goto yy18;
- ++YYCURSOR;
-#line 489 "ext/standard/var_unserializer.re"
- {
- *p = YYCURSOR;
- INIT_PZVAL(*rval);
-
- if (!strncmp(start + 2, "NAN", 3)) {
- ZVAL_DOUBLE(*rval, php_get_nan());
- } else if (!strncmp(start + 2, "INF", 3)) {
- ZVAL_DOUBLE(*rval, php_get_inf());
- } else if (!strncmp(start + 2, "-INF", 4)) {
- ZVAL_DOUBLE(*rval, -php_get_inf());
- }
-
- return 1;
-}
-#line 1003 "ext/standard/var_unserializer.c"
-yy76:
- yych = *++YYCURSOR;
- if (yych == 'N') goto yy73;
- goto yy18;
-yy77:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych != '+') goto yy18;
- } else {
- if (yych <= '-') goto yy78;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy79;
- goto yy18;
- }
-yy78:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy79:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy79;
- if (yych != ';') goto yy18;
- ++YYCURSOR;
-#line 462 "ext/standard/var_unserializer.re"
- {
-#if SIZEOF_LONG == 4
- int digits = YYCURSOR - start - 3;
-
- if (start[2] == '-' || start[2] == '+') {
- digits--;
- }
-
- /* Use double for large long values that were serialized on a 64-bit system */
- if (digits >= MAX_LENGTH_OF_LONG - 1) {
- if (digits == MAX_LENGTH_OF_LONG - 1) {
- int cmp = strncmp(YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1);
-
- if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) {
- goto use_double;
- }
- } else {
- goto use_double;
- }
- }
-#endif
- *p = YYCURSOR;
- INIT_PZVAL(*rval);
- ZVAL_LONG(*rval, parse_iv(start + 2));
- return 1;
-}
-#line 1057 "ext/standard/var_unserializer.c"
-yy83:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= '2') goto yy18;
- yych = *++YYCURSOR;
- if (yych != ';') goto yy18;
- ++YYCURSOR;
-#line 455 "ext/standard/var_unserializer.re"
- {
- *p = YYCURSOR;
- INIT_PZVAL(*rval);
- ZVAL_BOOL(*rval, parse_iv(start + 2));
- return 1;
-}
-#line 1072 "ext/standard/var_unserializer.c"
-yy87:
- ++YYCURSOR;
-#line 448 "ext/standard/var_unserializer.re"
- {
- *p = YYCURSOR;
- INIT_PZVAL(*rval);
- ZVAL_NULL(*rval);
- return 1;
-}
-#line 1082 "ext/standard/var_unserializer.c"
-yy89:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych != '+') goto yy18;
- } else {
- if (yych <= '-') goto yy90;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy91;
- goto yy18;
- }
-yy90:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy91:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy91;
- if (yych != ';') goto yy18;
- ++YYCURSOR;
-#line 425 "ext/standard/var_unserializer.re"
- {
- long id;
-
- *p = YYCURSOR;
- if (!var_hash) return 0;
-
- id = parse_iv(start + 2) - 1;
- if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) {
- return 0;
- }
-
- if (*rval == *rval_ref) return 0;
-
- if (*rval != NULL) {
- zval_ptr_dtor(rval);
- }
- *rval = *rval_ref;
- Z_ADDREF_PP(rval);
- Z_UNSET_ISREF_PP(rval);
-
- return 1;
-}
-#line 1128 "ext/standard/var_unserializer.c"
-yy95:
- yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych != '+') goto yy18;
- } else {
- if (yych <= '-') goto yy96;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy97;
- goto yy18;
- }
-yy96:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
-yy97:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy97;
- if (yych != ';') goto yy18;
- ++YYCURSOR;
-#line 404 "ext/standard/var_unserializer.re"
- {
- long id;
-
- *p = YYCURSOR;
- if (!var_hash) return 0;
-
- id = parse_iv(start + 2) - 1;
- if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) {
- return 0;
- }
-
- if (*rval != NULL) {
- zval_ptr_dtor(rval);
- }
- *rval = *rval_ref;
- Z_ADDREF_PP(rval);
- Z_SET_ISREF_PP(rval);
-
- return 1;
-}
-#line 1172 "ext/standard/var_unserializer.c"
-}
-#line 724 "ext/standard/var_unserializer.re"
-
-
- return 0;
-}
diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re
index 500025d4d..c6ae65d29 100644
--- a/ext/standard/var_unserializer.re
+++ b/ext/standard/var_unserializer.re
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var_unserializer.re 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: var_unserializer.re 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "ext/standard/php_var.h"
@@ -257,7 +257,7 @@ static inline size_t parse_uiv(const unsigned char *p)
#define UNSERIALIZE_PARAMETER zval **rval, const unsigned char **p, const unsigned char *max, php_unserialize_data_t *var_hash TSRMLS_DC
#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash TSRMLS_CC
-static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements)
+static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements, int objprops)
{
while (elements-- > 0) {
zval *key, *data, **old_data;
@@ -286,7 +286,8 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
return 0;
}
- switch (Z_TYPE_P(key)) {
+ if (!objprops) {
+ switch (Z_TYPE_P(key)) {
case IS_LONG:
if (zend_hash_index_find(ht, Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {
var_push_dtor(var_hash, old_data);
@@ -299,6 +300,12 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
}
zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
break;
+ }
+ } else {
+ /* object properties should include no integers */
+ convert_to_string(key);
+ zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data,
+ sizeof data, NULL);
}
zval_dtor(key);
@@ -366,7 +373,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, long elements)
zval *retval_ptr = NULL;
zval fname;
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements)) {
+ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) {
return 0;
}
@@ -581,7 +588,7 @@ use_double:
array_init_size(*rval, elements);
- if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements)) {
+ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements, 0)) {
return 0;
}
diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c
index 759cbb8f1..1cb9d4507 100644
--- a/ext/standard/versioning.c
+++ b/ext/standard/versioning.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: versioning.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: versioning.c 321634 2012-01-01 13:15:04Z felipe $ */
#include <stdio.h>
#include <sys/types.h>
diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c
index 256ef31d3..24cb0ca9b 100644
--- a/ext/sybase_ct/php_sybase_ct.c
+++ b/ext/sybase_ct/php_sybase_ct.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sybase_ct.c 313903 2011-07-28 21:16:51Z pajoye $ */
+/* $Id: php_sybase_ct.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
diff --git a/ext/sybase_ct/php_sybase_ct.h b/ext/sybase_ct/php_sybase_ct.h
index 0e01bc475..f848b5528 100644
--- a/ext/sybase_ct/php_sybase_ct.h
+++ b/ext/sybase_ct/php_sybase_ct.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sybase_ct.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sybase_ct.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SYBASE_CT_H
#define PHP_SYBASE_CT_H
diff --git a/ext/sysvmsg/php_sysvmsg.h b/ext/sysvmsg/php_sysvmsg.h
index 226bbc79b..56b187dcc 100644
--- a/ext/sysvmsg/php_sysvmsg.h
+++ b/ext/sysvmsg/php_sysvmsg.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sysvmsg.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sysvmsg.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SYSVMSG_H
#define PHP_SYSVMSG_H
diff --git a/ext/sysvmsg/sysvmsg.c b/ext/sysvmsg/sysvmsg.c
index 21ab6f713..a48c69b2e 100644
--- a/ext/sysvmsg/sysvmsg.c
+++ b/ext/sysvmsg/sysvmsg.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sysvmsg.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: sysvmsg.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -145,7 +145,7 @@ PHP_MINFO_FUNCTION(sysvmsg)
{
php_info_print_table_start();
php_info_print_table_row(2, "sysvmsg support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 313665 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 321634 $");
php_info_print_table_end();
}
/* }}} */
diff --git a/ext/sysvsem/php_sysvsem.h b/ext/sysvsem/php_sysvsem.h
index ea40fd8bb..d7de8e698 100644
--- a/ext/sysvsem/php_sysvsem.h
+++ b/ext/sysvsem/php_sysvsem.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sysvsem.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sysvsem.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SYSVSEM_H
#define PHP_SYSVSEM_H
diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c
index 72e6aa2ac..c5a1d541e 100644
--- a/ext/sysvsem/sysvsem.c
+++ b/ext/sysvsem/sysvsem.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sysvsem.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: sysvsem.c 321634 2012-01-01 13:15:04Z felipe $ */
/* Latest update build anc tested on Linux 2.2.14
*
diff --git a/ext/sysvshm/php_sysvshm.h b/ext/sysvshm/php_sysvshm.h
index 3c84aa198..b7ca5e181 100644
--- a/ext/sysvshm/php_sysvshm.h
+++ b/ext/sysvshm/php_sysvshm.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sysvshm.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_sysvshm.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_SYSVSHM_H
#define PHP_SYSVSHM_H
diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c
index 2d1156536..213b5dcf3 100644
--- a/ext/sysvshm/sysvshm.c
+++ b/ext/sysvshm/sysvshm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sysvshm.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: sysvshm.c 321634 2012-01-01 13:15:04Z felipe $ */
/* This has been built and tested on Linux 2.2.14
*
@@ -424,7 +424,7 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, long shm_varpos)
ptr->free += chunk_ptr->next;
ptr->end -= chunk_ptr->next;
if (memcpy_len > 0) {
- memcpy(chunk_ptr, next_chunk_ptr, memcpy_len);
+ memmove(chunk_ptr, next_chunk_ptr, memcpy_len);
}
return 0;
}
diff --git a/ext/sysvshm/tests/001.phpt b/ext/sysvshm/tests/001.phpt
index ba45286af..4b1525b69 100644
--- a/ext/sysvshm/tests/001.phpt
+++ b/ext/sysvshm/tests/001.phpt
@@ -1,5 +1,7 @@
--TEST--
ftok() tests
+--SKIPIF--
+<?php if (!extension_loaded("sysvshm")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h
index 9c1a73e21..e48ffd259 100644
--- a/ext/tidy/php_tidy.h
+++ b/ext/tidy/php_tidy.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_tidy.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_tidy.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_TIDY_H
#define PHP_TIDY_H
diff --git a/ext/tidy/tests/010.phpt b/ext/tidy/tests/010.phpt
index eabbc0391..9d5ab825a 100644
--- a/ext/tidy/tests/010.phpt
+++ b/ext/tidy/tests/010.phpt
@@ -4,12 +4,12 @@ Accessing root, body, html, and head nodes..
<?php if (!extension_loaded("tidy")) print "skip"; ?>
--FILE--
<?php
- $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000></BODY></HTML>");
- var_dump($a->root());
- var_dump($a->body());
- var_dump($a->html());
- var_dump($a->head());
-
+$a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000></BODY></HTML>", array('newline' => 'LF'));
+var_dump($a->root());
+var_dump($a->body());
+var_dump($a->html());
+var_dump($a->head());
+
?>
--EXPECT--
object(tidyNode)#2 (8) {
diff --git a/ext/tidy/tests/012.phpt b/ext/tidy/tests/012.phpt
index 43fff38df..120581233 100644
--- a/ext/tidy/tests/012.phpt
+++ b/ext/tidy/tests/012.phpt
@@ -25,7 +25,7 @@ Accessing children nodes
}
- $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000><B>Hi</B><I>Bye<U>Test</U></I></BODY></HTML>");
+ $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000><B>Hi</B><I>Bye<U>Test</U></I></BODY></HTML>", array('newline' => 'LF'));
$html = $a->html();
dump_nodes($html);
diff --git a/ext/tidy/tests/024.phpt b/ext/tidy/tests/024.phpt
index f69b962ae..b09f5b464 100644
--- a/ext/tidy/tests/024.phpt
+++ b/ext/tidy/tests/024.phpt
@@ -18,7 +18,8 @@ $contents = '
</wps:block>';
$config = array(
-'new-blocklevel-tags' => 'wps:block,wps:var,wps:value'
+'new-blocklevel-tags' => 'wps:block,wps:var,wps:value',
+'newline' => 'LF'
);
$tidy = tidy_parse_string($contents, $config, 'utf8');
diff --git a/ext/tidy/tests/025.phpt b/ext/tidy/tests/025.phpt
index 631ec2e5e..df9392eb2 100644
--- a/ext/tidy/tests/025.phpt
+++ b/ext/tidy/tests/025.phpt
@@ -5,16 +5,16 @@ tidyNode tests
--FILE--
<?php
-$tidy=tidy_parse_string('<% %>');
+$tidy=tidy_parse_string('<% %>', array('newline' => 'LF'));
var_dump($tidy->Root()->child[0]->isAsp());
-$tidy=tidy_parse_string('<# #>');
+$tidy=tidy_parse_string('<# #>', array('newline' => 'LF'));
var_dump($tidy->Root()->child[0]->isJste());
$tidy=tidy_parse_string('<html><body>text</body></html>');
var_dump($tidy->Root()->child[0]->child[1]->child[0]->isText());
-$tidy=tidy_parse_string('<html><body><!-- comment --></body></html>');
+$tidy=tidy_parse_string('<html><body><!-- comment --></body></html>', array('newline' => 'LF'));
$n = $tidy->Root()->child[0]->child[1]->child[0];
var_dump($n->isComment());
var_dump((string)$n);
diff --git a/ext/tidy/tests/bug54682.phpt b/ext/tidy/tests/bug54682.phpt
new file mode 100644
index 000000000..99f40cf9d
--- /dev/null
+++ b/ext/tidy/tests/bug54682.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Tidy::diagnose() NULL pointer dereference
+--SKIPIF--
+<?php if (!extension_loaded("tidy")) print "skip"; ?>
+--FILE--
+<?php
+
+$nx = new Tidy("*");
+$nx->diagnose();
+
+?>
+--EXPECTF--
+Warning: tidy::__construct(): Cannot Load '*' into memory in %s on line %d
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index de3f0bd62..745762cba 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tidy.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: tidy.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1092,7 +1092,7 @@ static PHP_MINFO_FUNCTION(tidy)
php_info_print_table_start();
php_info_print_table_header(2, "Tidy support", "enabled");
php_info_print_table_row(2, "libTidy Release", (char *)tidyReleaseDate());
- php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c 313665 2011-07-25 11:42:53Z felipe $)");
+ php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c 321634 2012-01-01 13:15:04Z felipe $)");
php_info_print_table_end();
DISPLAY_INI_ENTRIES();
@@ -1288,7 +1288,7 @@ static PHP_FUNCTION(tidy_diagnose)
{
TIDY_FETCH_OBJECT;
- if (tidyRunDiagnostics(obj->ptdoc->doc) >= 0) {
+ if (tidyStatus(obj->ptdoc->doc) != 0 && tidyRunDiagnostics(obj->ptdoc->doc) >= 0) {
tidy_doc_update_properties(obj TSRMLS_CC);
RETURN_TRUE;
}
diff --git a/ext/tokenizer/php_tokenizer.h b/ext/tokenizer/php_tokenizer.h
index 2cba9a733..593137411 100644
--- a/ext/tokenizer/php_tokenizer.h
+++ b/ext/tokenizer/php_tokenizer.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_tokenizer.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_tokenizer.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_TOKENIZER_H
#define PHP_TOKENIZER_H
diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c
index 596b91ee7..0ae51c6c7 100644
--- a/ext/tokenizer/tokenizer.c
+++ b/ext/tokenizer/tokenizer.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tokenizer.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: tokenizer.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c
index f1738fda0..10236afae 100644
--- a/ext/tokenizer/tokenizer_data.c
+++ b/ext/tokenizer/tokenizer_data.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tokenizer_data.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: tokenizer_data.c 321634 2012-01-01 13:15:04Z felipe $ */
/*
DO NOT EDIT THIS FILE!
diff --git a/ext/tokenizer/tokenizer_data_gen.sh b/ext/tokenizer/tokenizer_data_gen.sh
index 5cd148b71..22d8110ae 100755
--- a/ext/tokenizer/tokenizer_data_gen.sh
+++ b/ext/tokenizer/tokenizer_data_gen.sh
@@ -16,7 +16,7 @@ echo '/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/wddx/php_wddx.h b/ext/wddx/php_wddx.h
index 4627a154d..2932b28be 100644
--- a/ext/wddx/php_wddx.h
+++ b/ext/wddx/php_wddx.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_wddx.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_wddx.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_WDDX_H
#define PHP_WDDX_H
diff --git a/ext/wddx/php_wddx_api.h b/ext/wddx/php_wddx_api.h
index bcf4ec9bd..b5febd46c 100644
--- a/ext/wddx/php_wddx_api.h
+++ b/ext/wddx/php_wddx_api.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_wddx_api.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_wddx_api.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_WDDX_API_H
#define PHP_WDDX_API_H
diff --git a/ext/wddx/tests/bug48562.phpt b/ext/wddx/tests/bug48562.phpt
index d9ae376c5..ebd2004e0 100644
--- a/ext/wddx/tests/bug48562.phpt
+++ b/ext/wddx/tests/bug48562.phpt
@@ -1,5 +1,11 @@
--TEST--
Bug #48562 (Reference recursion causes segfault when used in wddx_serialize_vars())
+--SKIPIF--
+<?php
+if (!extension_loaded('wddx')) {
+ die('skip. wddx not available');
+}
+?>
--FILE--
<?php
diff --git a/ext/wddx/tests/bug52468.phpt b/ext/wddx/tests/bug52468.phpt
index 151c23639..b0d8eb329 100644
--- a/ext/wddx/tests/bug52468.phpt
+++ b/ext/wddx/tests/bug52468.phpt
@@ -1,5 +1,11 @@
--TEST--
Bug #52468 (wddx_deserialize corrupts integer field value when left empty)
+--SKIPIF--
+<?php
+if (!extension_loaded('wddx')) {
+ die('skip. wddx not available');
+}
+?>
--FILE--
<?php
diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c
index 619ebc255..b429b0bec 100644
--- a/ext/wddx/wddx.c
+++ b/ext/wddx/wddx.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: wddx.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/xml/compat.c b/ext/xml/compat.c
index 72b29d05c..40da824ad 100644
--- a/ext/xml/compat.c
+++ b/ext/xml/compat.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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/xml/expat_compat.h b/ext/xml/expat_compat.h
index 56a77e653..e109a1faf 100644
--- a/ext/xml/expat_compat.h
+++ b/ext/xml/expat_compat.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: expat_compat.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: expat_compat.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_EXPAT_COMPAT_H
#define PHP_EXPAT_COMPAT_H
diff --git a/ext/xml/php_xml.h b/ext/xml/php_xml.h
index eabfb6018..1db074725 100644
--- a/ext/xml/php_xml.h
+++ b/ext/xml/php_xml.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xml.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xml.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_XML_H
#define PHP_XML_H
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index a360c3ce8..3427face1 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xml.c 314641 2011-08-09 12:16:58Z laruence $ */
+/* $Id: xml.c 321634 2012-01-01 13:15:04Z felipe $ */
#define IS_EXT_MODULE
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c
index 2fd5c9978..a39f98df4 100644
--- a/ext/xmlreader/php_xmlreader.c
+++ b/ext/xmlreader/php_xmlreader.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlreader.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: php_xmlreader.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/xmlreader/php_xmlreader.h b/ext/xmlreader/php_xmlreader.h
index ab90ea1e0..0e46a4510 100644
--- a/ext/xmlreader/php_xmlreader.h
+++ b/ext/xmlreader/php_xmlreader.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlreader.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xmlreader.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_XMLREADER_H
#define PHP_XMLREADER_H
diff --git a/ext/xmlreader/tests/012.phpt b/ext/xmlreader/tests/012.phpt
index efc42350d..3aae4c0e6 100755
--- a/ext/xmlreader/tests/012.phpt
+++ b/ext/xmlreader/tests/012.phpt
@@ -4,7 +4,7 @@ XMLReader: accessing empty and non existing attributes
<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
--FILE--
<?php
-/* $Id: 012.phpt 210441 2006-03-30 21:47:21Z helly $ */
+/* $Id: 012.phpt 316311 2011-09-07 09:19:28Z pajoye $ */
$xmlstring =<<<EOF
<?xml version="1.0" encoding="UTF-8"?>
@@ -25,7 +25,9 @@ $xmlstring =<<<EOF
EOF;
$xmlstring = str_replace('012.dtd', dirname(__FILE__).'/012.dtd', $xmlstring);
-
+if (DIRECTORY_SEPARATOR == '\\') {
+ $xmlstring = str_replace('\\',"/", $xmlstring);
+}
$reader = new XMLReader();
$reader->XML($xmlstring);
$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
@@ -34,12 +36,15 @@ var_dump($reader->getAttribute('bar'));
var_dump($reader->getAttribute('baz'));
$reader->close();
-?>
-===FILE===
-<?php
-
+echo "\nUsing URI:\n";
$reader = new XMLReader();
-$reader->open(dirname(__FILE__) . '/012.xml');
+$file = dirname(__FILE__) . '/012.xml';
+if (DIRECTORY_SEPARATOR == '\\') {
+ $file = str_replace('\\',"/", $file);
+}
+
+$reader->open($file);
+
//$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
var_dump($reader->getAttribute('bar'));
@@ -61,7 +66,8 @@ string(0) ""
NULL
string(0) ""
string(0) ""
-===FILE===
+
+Using URI:
string(0) ""
NULL
string(0) ""
diff --git a/ext/xmlrpc/php_xmlrpc.h b/ext/xmlrpc/php_xmlrpc.h
index 754fabfa2..663d51661 100644
--- a/ext/xmlrpc/php_xmlrpc.h
+++ b/ext/xmlrpc/php_xmlrpc.h
@@ -37,7 +37,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -51,7 +51,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlrpc.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xmlrpc.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef _PHP_XMLRPC_H
#define _PHP_XMLRPC_H
diff --git a/ext/xmlrpc/tests/bug51288.phpt b/ext/xmlrpc/tests/bug51288.phpt
index d9bdef822..ba341369b 100644
--- a/ext/xmlrpc/tests/bug51288.phpt
+++ b/ext/xmlrpc/tests/bug51288.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #51288 (CVE-2010-0397, NULL pointer deref when no <methodName> in request)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$method = NULL;
diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c
index b14b5584b..4952b61f7 100644
--- a/ext/xmlrpc/xmlrpc-epi-php.c
+++ b/ext/xmlrpc/xmlrpc-epi-php.c
@@ -37,7 +37,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -51,7 +51,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xmlrpc-epi-php.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: xmlrpc-epi-php.c 321634 2012-01-01 13:15:04Z felipe $ */
/**********************************************************************
* BUGS: *
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c
index e57009e1a..ee14ab850 100644
--- a/ext/xmlwriter/php_xmlwriter.c
+++ b/ext/xmlwriter/php_xmlwriter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlwriter.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_xmlwriter.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/xmlwriter/php_xmlwriter.h b/ext/xmlwriter/php_xmlwriter.h
index 5552a17d7..db60c1c96 100644
--- a/ext/xmlwriter/php_xmlwriter.h
+++ b/ext/xmlwriter/php_xmlwriter.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlwriter.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xmlwriter.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_XMLWRITER_H
#define PHP_XMLWRITER_H
diff --git a/ext/xmlwriter/tests/004.phpt b/ext/xmlwriter/tests/004.phpt
index 0a85e8d7f..7c51ea229 100644
--- a/ext/xmlwriter/tests/004.phpt
+++ b/ext/xmlwriter/tests/004.phpt
@@ -4,7 +4,7 @@ XMLWriter: libxml2 XML Writer, file buffer, flush
<?php if (!extension_loaded("xmlwriter")) print "skip"; ?>
--FILE--
<?php
-/* $Id: 004.phpt 201860 2005-12-02 02:05:26Z iliaa $ */
+/* $Id: 004.phpt 316312 2011-09-07 09:37:56Z pajoye $ */
$doc_dest = '001.xml';
$xw = xmlwriter_open_uri($doc_dest);
diff --git a/ext/xmlwriter/tests/OO_004.phpt b/ext/xmlwriter/tests/OO_004.phpt
index ab69e5a79..afc4343c5 100644
--- a/ext/xmlwriter/tests/OO_004.phpt
+++ b/ext/xmlwriter/tests/OO_004.phpt
@@ -4,7 +4,7 @@ XMLWriter: libxml2 XML Writer, file buffer, flush
<?php if (!extension_loaded("xmlwriter")) print "skip"; ?>
--FILE--
<?php
-/* $Id: OO_004.phpt 201860 2005-12-02 02:05:26Z iliaa $ */
+/* $Id: OO_004.phpt 316312 2011-09-07 09:37:56Z pajoye $ */
$doc_dest = '001.xml';
$xw = new XMLWriter();
diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c
index b484303d5..e14da5cbe 100644
--- a/ext/xsl/php_xsl.c
+++ b/ext/xsl/php_xsl.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xsl.c 314376 2011-08-06 14:47:44Z felipe $ */
+/* $Id: php_xsl.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -141,6 +141,13 @@ zend_object_value xsl_objects_new(zend_class_entry *class_type TSRMLS_DC)
}
/* }}} */
+PHP_INI_BEGIN()
+/* Default is not allowing any write operations.
+ XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_NETWORK | XSL_SECPREF_WRITE_FILE == 44
+*/
+PHP_INI_ENTRY("xsl.security_prefs", "44", PHP_INI_ALL, NULL)
+PHP_INI_END()
+
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(xsl)
@@ -167,6 +174,14 @@ PHP_MINIT_FUNCTION(xsl)
REGISTER_LONG_CONSTANT("XSL_CLONE_NEVER", -1, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSL_CLONE_ALWAYS", 1, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_NONE", XSL_SECPREF_NONE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_FILE", XSL_SECPREF_READ_FILE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_FILE", XSL_SECPREF_WRITE_FILE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_CREATE_DIRECTORY", XSL_SECPREF_CREATE_DIRECTORY, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_NETWORK", XSL_SECPREF_READ_NETWORK, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_NETWORK", XSL_SECPREF_WRITE_NETWORK, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("XSL_SECPREF_DEFAULT", XSL_SECPREF_DEFAULT, CONST_CS | CONST_PERSISTENT);
+
REGISTER_LONG_CONSTANT("LIBXSLT_VERSION", LIBXSLT_VERSION, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("LIBXSLT_DOTTED_VERSION", LIBXSLT_DOTTED_VERSION, CONST_CS | CONST_PERSISTENT);
@@ -175,6 +190,8 @@ PHP_MINIT_FUNCTION(xsl)
REGISTER_STRING_CONSTANT("LIBEXSLT_DOTTED_VERSION", LIBEXSLT_DOTTED_VERSION, CONST_CS | CONST_PERSISTENT);
#endif
+ REGISTER_INI_ENTRIES();
+
return SUCCESS;
}
/* }}} */
@@ -258,6 +275,8 @@ PHP_MSHUTDOWN_FUNCTION(xsl)
xsltCleanupGlobals();
+ UNREGISTER_INI_ENTRIES();
+
return SUCCESS;
}
/* }}} */
diff --git a/ext/xsl/php_xsl.h b/ext/xsl/php_xsl.h
index 09238b2ff..d8597c18d 100644
--- a/ext/xsl/php_xsl.h
+++ b/ext/xsl/php_xsl.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xsl.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_xsl.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_XSL_H
#define PHP_XSL_H
@@ -32,6 +32,7 @@ extern zend_module_entry xsl_module_entry;
#include <libxslt/xsltInternals.h>
#include <libxslt/xsltutils.h>
#include <libxslt/transform.h>
+#include <libxslt/security.h>
#if HAVE_XSL_EXSLT
#include <libexslt/exslt.h>
#include <libexslt/exsltconfig.h>
@@ -43,6 +44,15 @@ extern zend_module_entry xsl_module_entry;
#include <libxslt/extensions.h>
#include <libxml/xpathInternals.h>
+#define XSL_SECPREF_NONE 0
+#define XSL_SECPREF_READ_FILE 2
+#define XSL_SECPREF_WRITE_FILE 4
+#define XSL_SECPREF_CREATE_DIRECTORY 8
+#define XSL_SECPREF_READ_NETWORK 16
+#define XSL_SECPREF_WRITE_NETWORK 32
+/* Default == disable all write access == XSL_SECPREF_WRITE_NETWORK | XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE */
+#define XSL_SECPREF_DEFAULT 44
+
typedef struct _xsl_object {
zend_object std;
void *ptr;
diff --git a/ext/xsl/tests/bug54446_with_ini.phpt b/ext/xsl/tests/bug54446_with_ini.phpt
new file mode 100644
index 000000000..31cd1d43b
--- /dev/null
+++ b/ext/xsl/tests/bug54446_with_ini.phpt
@@ -0,0 +1,95 @@
+--TEST--
+Bug #54446 (Arbitrary file creation via libxslt 'output' extension with php.ini setting)
+--SKIPIF--
+<?php
+if (!extension_loaded('xsl')) die("skip Extension XSL is required\n");
+?>
+--FILE--
+<?php
+include("prepare.inc");
+
+$outputfile = dirname(__FILE__)."/bug54446test.txt";
+if (file_exists($outputfile)) {
+ unlink($outputfile);
+}
+
+$sXsl = <<<EOT
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:sax="http://icl.com/saxon"
+ extension-element-prefixes="sax">
+
+ <xsl:template match="/">
+ <sax:output href="$outputfile" method="text">
+ <xsl:value-of select="'0wn3d via PHP and libxslt ...'"/>
+ </sax:output>
+ </xsl:template>
+
+</xsl:stylesheet>
+EOT;
+
+$xsl->loadXML( $sXsl );
+
+# START XSLT
+$proc->importStylesheet( $xsl );
+
+# TRASNFORM & PRINT
+print $proc->transformToXML( $dom );
+
+
+if (file_exists($outputfile)) {
+ print "$outputfile exists, but shouldn't!\n";
+} else {
+ print "OK, no file created\n";
+}
+
+#SET NO SECURITY PREFS
+ini_set("xsl.security_prefs", XSL_SECPREF_NONE);
+
+# TRASNFORM & PRINT
+print $proc->transformToXML( $dom );
+
+
+if (file_exists($outputfile)) {
+ print "OK, file exists\n";
+} else {
+ print "$outputfile doesn't exist, but should!\n";
+}
+
+unlink($outputfile);
+
+#SET SECURITY PREFS AGAIN
+ini_set("xsl.security_prefs", XSL_SECPREF_WRITE_FILE | XSL_SECPREF_WRITE_NETWORK | XSL_SECPREF_CREATE_DIRECTORY);
+
+# TRASNFORM & PRINT
+print $proc->transformToXML( $dom );
+
+if (file_exists($outputfile)) {
+ print "$outputfile exists, but shouldn't!\n";
+} else {
+ print "OK, no file created\n";
+}
+
+
+--EXPECTF--
+Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %s element output in %s on line %d
+
+Warning: XSLTProcessor::transformToXml(): File write for %s/bug54446test.txt refused in %s on line %s
+
+Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element output in %s on line %d
+
+Warning: XSLTProcessor::transformToXml(): xsltDocumentElem: write rights for %s/bug54446test.txt denied in %s on line %d
+OK, no file created
+OK, file exists
+
+Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %s element output in %s on line %d
+
+Warning: XSLTProcessor::transformToXml(): File write for %s/bug54446test.txt refused in %s on line %s
+
+Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element output in %s on line %d
+
+Warning: XSLTProcessor::transformToXml(): xsltDocumentElem: write rights for %s/bug54446test.txt denied in %s on line %d
+OK, no file created
+--CREDITS--
+Christian Stocker, chregu@php.net
+
diff --git a/ext/xsl/tests/exslt.xml b/ext/xsl/tests/exslt.xml
index 54913c6f5..562e08e82 100644
--- a/ext/xsl/tests/exslt.xml
+++ b/ext/xsl/tests/exslt.xml
@@ -6,4 +6,10 @@
<date date="2000-02-29"/>
<date date="9990001-12-31Z"/>
<date date="-0004-02-29"/>
+ <date date="1999-01-02"/>
+ <date date="1999-01-03"/>
+ <date date="2004-01-01"/>
+ <date date="2006-01-01"/>
+ <date date="2007-12-31"/>
</page>
+
diff --git a/ext/xsl/tests/xslt010.phpt b/ext/xsl/tests/xslt010.phpt
index 75729c270..96ef8c627 100644
--- a/ext/xsl/tests/xslt010.phpt
+++ b/ext/xsl/tests/xslt010.phpt
@@ -30,7 +30,7 @@ Test 10: EXSLT Support
month-in-year : 12
month-name : December
month-abbreviation : Dec
- week-in-year : 53
+ week-in-year : 1
day-in-year : 365
day-in-month : 31
day-of-week-in-month : 5
@@ -84,7 +84,7 @@ Test 10: EXSLT Support
month-in-year : 12
month-name : December
month-abbreviation : Dec
- week-in-year : 53
+ week-in-year : 1
day-in-year : 365
day-in-month : 31
day-of-week-in-month : 5
@@ -102,7 +102,7 @@ Test 10: EXSLT Support
month-in-year : 2
month-name : February
month-abbreviation : Feb
- week-in-year : 10
+ week-in-year : 9
day-in-year : 60
day-in-month : 29
day-of-week-in-month : 5
@@ -113,4 +113,94 @@ Test 10: EXSLT Support
hour-in-day : NaN
minute-in-hour : NaN
second-in-minute : NaN
+
+ Test Date : 1999-01-02
+ year : 1999
+ leap-year : false
+ month-in-year : 1
+ month-name : January
+ month-abbreviation : Jan
+ week-in-year : 53
+ day-in-year : 2
+ day-in-month : 2
+ day-of-week-in-month : 1
+ day-in-week : 7
+ day-name : Saturday
+ day-abbreviation : Sat
+ time :
+ hour-in-day : NaN
+ minute-in-hour : NaN
+ second-in-minute : NaN
+
+ Test Date : 1999-01-03
+ year : 1999
+ leap-year : false
+ month-in-year : 1
+ month-name : January
+ month-abbreviation : Jan
+ week-in-year : 53
+ day-in-year : 3
+ day-in-month : 3
+ day-of-week-in-month : 1
+ day-in-week : 1
+ day-name : Sunday
+ day-abbreviation : Sun
+ time :
+ hour-in-day : NaN
+ minute-in-hour : NaN
+ second-in-minute : NaN
+
+ Test Date : 2004-01-01
+ year : 2004
+ leap-year : true
+ month-in-year : 1
+ month-name : January
+ month-abbreviation : Jan
+ week-in-year : 1
+ day-in-year : 1
+ day-in-month : 1
+ day-of-week-in-month : 1
+ day-in-week : 5
+ day-name : Thursday
+ day-abbreviation : Thu
+ time :
+ hour-in-day : NaN
+ minute-in-hour : NaN
+ second-in-minute : NaN
+
+ Test Date : 2006-01-01
+ year : 2006
+ leap-year : false
+ month-in-year : 1
+ month-name : January
+ month-abbreviation : Jan
+ week-in-year : 52
+ day-in-year : 1
+ day-in-month : 1
+ day-of-week-in-month : 1
+ day-in-week : 1
+ day-name : Sunday
+ day-abbreviation : Sun
+ time :
+ hour-in-day : NaN
+ minute-in-hour : NaN
+ second-in-minute : NaN
+
+ Test Date : 2007-12-31
+ year : 2007
+ leap-year : false
+ month-in-year : 12
+ month-name : December
+ month-abbreviation : Dec
+ week-in-year : 1
+ day-in-year : 365
+ day-in-month : 31
+ day-of-week-in-month : 5
+ day-in-week : 2
+ day-name : Monday
+ day-abbreviation : Mon
+ time :
+ hour-in-day : NaN
+ minute-in-hour : NaN
+ second-in-minute : NaN
diff --git a/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt b/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt
index d9a70517e..a0d6bf6b7 100644
--- a/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt
+++ b/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcnostring.phpt
@@ -30,8 +30,8 @@ Warning: XSLTProcessor::transformToXml(): xmlXPathCompiledEval: evaluation faile
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element value-of in %s on line %d
-Warning: XSLTProcessor::transformToXml(): xsltValueOf: text copy failed in %s on line %d
-bool(false)
+Warning: XSLTProcessor::transformToXml(): XPath evaluation returned no result. in %s on line %d
+NULL
--CREDITS--
Christian Weiske, cweiske@php.net
PHP Testfest Berlin 2009-05-09
diff --git a/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt b/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt
index a0ddf96a6..1aa7bb051 100644
--- a/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt
+++ b/ext/xsl/tests/xsltprocessor_registerPHPFunctions-funcundef.phpt
@@ -29,8 +29,8 @@ Warning: XSLTProcessor::transformToXml(): xmlXPathCompiledEval: evaluation faile
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element value-of in %s on line %d
-Warning: XSLTProcessor::transformToXml(): xsltValueOf: text copy failed in %s on line %d
-bool(false)
+Warning: XSLTProcessor::transformToXml(): XPath evaluation returned no result. in %s on line %d
+NULL
--CREDITS--
Christian Weiske, cweiske@php.net
PHP Testfest Berlin 2009-05-09
diff --git a/ext/xsl/xsl_fe.h b/ext/xsl/xsl_fe.h
index a02292e55..f49bc43cb 100644
--- a/ext/xsl/xsl_fe.h
+++ b/ext/xsl/xsl_fe.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xsl_fe.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: xsl_fe.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef XSL_FE_H
#define XSL_FE_H
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index ef3cc383f..af5cd8fe0 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xsltprocessor.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: xsltprocessor.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -475,6 +475,9 @@ static xmlDocPtr php_xsl_apply_stylesheet(zval *id, xsl_object *intern, xsltStyl
zval *doXInclude, *member;
zend_object_handlers *std_hnd;
FILE *f;
+ int secPrefsError = 0;
+ int secPrefsValue;
+ xsltSecurityPrefsPtr secPrefs = NULL;
node = php_libxml_import_node(docp TSRMLS_CC);
@@ -531,11 +534,56 @@ static xmlDocPtr php_xsl_apply_stylesheet(zval *id, xsl_object *intern, xsltStyl
}
efree(member);
- newdocp = xsltApplyStylesheetUser(style, doc, (const char**) params, NULL, f, ctxt);
+
+ secPrefsValue = INI_INT("xsl.security_prefs");
+
+ /* if securityPrefs is set to NONE, we don't have to do any checks, but otherwise... */
+ if (secPrefsValue != XSL_SECPREF_NONE) {
+ secPrefs = xsltNewSecurityPrefs();
+ if (secPrefsValue & XSL_SECPREF_READ_FILE ) {
+ if (0 != xsltSetSecurityPrefs(secPrefs, XSLT_SECPREF_READ_FILE, xsltSecurityForbid)) {
+ secPrefsError = 1;
+ }
+ }
+ if (secPrefsValue & XSL_SECPREF_WRITE_FILE ) {
+ if (0 != xsltSetSecurityPrefs(secPrefs, XSLT_SECPREF_WRITE_FILE, xsltSecurityForbid)) {
+ secPrefsError = 1;
+ }
+ }
+ if (secPrefsValue & XSL_SECPREF_CREATE_DIRECTORY ) {
+ if (0 != xsltSetSecurityPrefs(secPrefs, XSLT_SECPREF_CREATE_DIRECTORY, xsltSecurityForbid)) {
+ secPrefsError = 1;
+ }
+ }
+ if (secPrefsValue & XSL_SECPREF_READ_NETWORK) {
+ if (0 != xsltSetSecurityPrefs(secPrefs, XSLT_SECPREF_READ_NETWORK, xsltSecurityForbid)) {
+ secPrefsError = 1;
+ }
+ }
+ if (secPrefsValue & XSL_SECPREF_WRITE_NETWORK) {
+ if (0 != xsltSetSecurityPrefs(secPrefs, XSLT_SECPREF_WRITE_NETWORK, xsltSecurityForbid)) {
+ secPrefsError = 1;
+ }
+ }
+
+ if (0 != xsltSetCtxtSecurityPrefs(secPrefs, ctxt)) {
+ secPrefsError = 1;
+ }
+ }
+
+ if (secPrefsError == 1) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't set libxslt security properties, not doing transformation for security reasons");
+ } else {
+ newdocp = xsltApplyStylesheetUser(style, doc, (const char**) params, NULL, f, ctxt);
+ }
if (f) {
fclose(f);
}
+
xsltFreeTransformContext(ctxt);
+ if (secPrefs) {
+ xsltFreeSecurityPrefs(secPrefs);
+ }
if (intern->node_list != NULL) {
zend_hash_destroy(intern->node_list);
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c
index f86fa6310..4765e8b66 100644
--- a/ext/zip/php_zip.c
+++ b/ext/zip/php_zip.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: php_zip.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -2872,7 +2872,7 @@ static PHP_MINFO_FUNCTION(zip)
php_info_print_table_start();
php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "Extension Version","$Id: php_zip.c 313665 2011-07-25 11:42:53Z felipe $");
+ php_info_print_table_row(2, "Extension Version","$Id: php_zip.c 321634 2012-01-01 13:15:04Z felipe $");
php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION_STRING);
php_info_print_table_row(2, "Libzip version", "0.9.0");
diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h
index beaae7f9d..f3634e77b 100644
--- a/ext/zip/php_zip.h
+++ b/ext/zip/php_zip.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_zip.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ZIP_H
#define PHP_ZIP_H
diff --git a/ext/zip/tests/bug38943.inc b/ext/zip/tests/bug38943.inc
deleted file mode 100644
index a6f45e829..000000000
--- a/ext/zip/tests/bug38943.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-class myZip extends ZipArchive {
- private $test = 0;
- public $testp = 1;
- private $testarray = array();
-
- public function __construct() {
- $this->testarray[] = 1;
- var_dump($this->testarray);
- }
-}
-
-$z = new myZip;
-$z->testp = "foobar";
-var_dump($z);
-
diff --git a/ext/zip/tests/bug38943.phpt b/ext/zip/tests/bug38943.phpt
index 856818275..c5e228471 100644
--- a/ext/zip/tests/bug38943.phpt
+++ b/ext/zip/tests/bug38943.phpt
@@ -1,14 +1,26 @@
--TEST--
-#38943, properties in extended class cannot be set (< 5.3)
+#38943, properties in extended class cannot be set (5.3+)
--SKIPIF--
<?php
-/* $Id: bug38943.phpt 260091 2008-05-21 09:27:41Z pajoye $ */
if(!extension_loaded('zip')) die('skip');
-if (!defined('PHP_VERSION_MAJOR')) die('skip');
?>
--FILE--
<?php
-include dirname(__FILE__) . '/bug38943.inc';
+class myZip extends ZipArchive {
+ private $test = 0;
+ public $testp = 1;
+ private $testarray = array();
+
+ public function __construct() {
+ $this->testarray[] = 1;
+ var_dump($this->testarray);
+ }
+}
+
+$z = new myZip;
+$z->testp = "foobar";
+var_dump($z);
+
?>
--EXPECTF--
array(1) {
@@ -16,11 +28,11 @@ array(1) {
int(1)
}
object(myZip)#1 (%d) {
- ["test:private"]=>
+ ["test":"myZip":private]=>
int(0)
["testp"]=>
string(6) "foobar"
- ["testarray:private"]=>
+ ["testarray":"myZip":private]=>
array(1) {
[0]=>
int(1)
diff --git a/ext/zip/tests/bug38943_2.phpt b/ext/zip/tests/bug38943_2.phpt
deleted file mode 100644
index 0045f0d1c..000000000
--- a/ext/zip/tests/bug38943_2.phpt
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-#38943, properties in extended class cannot be set (5.3)
---SKIPIF--
-<?php
-/* $Id: bug38943_2.phpt 268872 2008-11-12 17:16:51Z felipe $ */
-if(!extension_loaded('zip')) die('skip');
-if (version_compare(PHP_VERSION, "5.3", "<")) die('skip test for5.3+ only');
-?>
---FILE--
-<?php
-include 'bug38943.inc';
-?>
---EXPECTF--
-array(1) {
- [0]=>
- int(1)
-}
-object(myZip)#1 (%d) {
- ["test":"myZip":private]=>
- int(0)
- ["testp"]=>
- string(6) "foobar"
- ["testarray":"myZip":private]=>
- array(1) {
- [0]=>
- int(1)
- }
- ["status"]=>
- int(0)
- ["statusSys"]=>
- int(0)
- ["numFiles"]=>
- int(0)
- ["filename"]=>
- string(0) ""
- ["comment"]=>
- string(0) ""
-}
diff --git a/ext/zip/tests/bug53885.phpt b/ext/zip/tests/bug53885.phpt
index d59bf8f03..1b3fcb9e4 100644
--- a/ext/zip/tests/bug53885.phpt
+++ b/ext/zip/tests/bug53885.phpt
@@ -15,5 +15,10 @@ $nx->locateName("a",ZIPARCHIVE::FL_UNCHANGED);
$nx->statName("a",ZIPARCHIVE::FL_UNCHANGED);
?>
==DONE==
+--CLEAN--
+<?php
+$fname = dirname(__FILE__)."/test53885.zip";
+unlink($fname);
+?>
--EXPECTF--
==DONE==
diff --git a/ext/zlib/php_zlib.h b/ext/zlib/php_zlib.h
index 6f2a1edf6..fc8d4d192 100644
--- a/ext/zlib/php_zlib.h
+++ b/ext/zlib/php_zlib.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zlib.h 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: php_zlib.h 321634 2012-01-01 13:15:04Z felipe $ */
#ifndef PHP_ZLIB_H
#define PHP_ZLIB_H
diff --git a/ext/zlib/tests/003.phpt b/ext/zlib/tests/003.phpt
index 2732d4cea..9fe943659 100644
--- a/ext/zlib/tests/003.phpt
+++ b/ext/zlib/tests/003.phpt
@@ -1,13 +1,13 @@
--TEST--
-gzencode()/base64_encode()
+gzencode()
--SKIPIF--
-<?php if (!extension_loaded("zlib")) print "skip"; ?>
+<?php if (!extension_loaded("zlib") || !function_exists("gzdecode")) print "skip"; ?>
--FILE--
<?php
$original = str_repeat("hallo php",4096);
-$packed=gzencode($original);
-echo strlen($packed)." ".strlen($original)."\n";
-if (strcmp(base64_encode($packed),"H4sIAAAAAAAAA+3GoQ0AQAgEsFV+NdwJEthf/R6kVU11z9tsRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETu5gPlQAe9AJAAAA==")==0) echo "Strings are equal";
+$packed = gzencode($original);
+echo strlen($packed)." ".strlen($original). "\n";
+if (strcmp($original, gzdecode($packed)) == 0) echo "Strings are equal";
?>
--EXPECT--
118 36864
diff --git a/ext/zlib/tests/gzfilegzreadfile.phpt b/ext/zlib/tests/gzfilegzreadfile.phpt
index 433fcab14..f8550c2d1 100644
--- a/ext/zlib/tests/gzfilegzreadfile.phpt
+++ b/ext/zlib/tests/gzfilegzreadfile.phpt
@@ -1,7 +1,7 @@
--TEST--
gzfile(), gzreadfile()
--SKIPIF--
-<?php /* $Id: gzfilegzreadfile.phpt 296107 2010-03-12 10:28:59Z jani $ */
+<?php /* $Id: gzfilegzreadfile.phpt 316410 2011-09-08 10:20:38Z pajoye $ */
if (!extension_loaded("zlib")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 584c54c3a..2e41ea6f2 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zlib.c 313665 2011-07-25 11:42:53Z felipe $ */
+/* $Id: zlib.c 321634 2012-01-01 13:15:04Z felipe $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/zlib/zlib_filter.c b/ext/zlib/zlib_filter.c
index b39aa6bbf..bc382cae2 100644
--- a/ext/zlib/zlib_filter.c
+++ b/ext/zlib/zlib_filter.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zlib_filter.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: zlib_filter.c 321634 2012-01-01 13:15:04Z felipe $ */
#include "php.h"
#include "php_zlib.h"
diff --git a/ext/zlib/zlib_fopen_wrapper.c b/ext/zlib/zlib_fopen_wrapper.c
index 01315d3ec..43e993db6 100644
--- a/ext/zlib/zlib_fopen_wrapper.c
+++ b/ext/zlib/zlib_fopen_wrapper.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2011 The PHP Group |
+ | Copyright (c) 1997-2012 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 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zlib_fopen_wrapper.c 306939 2011-01-01 02:19:59Z felipe $ */
+/* $Id: zlib_fopen_wrapper.c 321634 2012-01-01 13:15:04Z felipe $ */
#define _GNU_SOURCE